for Arduino TFT LCD Screen 160x128

Dependents:   TFTLCDSCREEN Pong_ILI9163C

Fork of TFT_ILI9163C by _ peu605

Committer:
billycorgan123
Date:
Fri Mar 04 08:55:32 2016 +0000
Revision:
12:f0799be044ff
Parent:
7:3dcb98ecf29f
first trial with Arduino TFT LCD Screen, ILI9163

Who changed what in which revision?

UserRevisionLine numberNew contents of line
peu605 7:3dcb98ecf29f 1 #include "mbed.h"
peu605 7:3dcb98ecf29f 2 #include "TFT_ILI9163C_BASE.h"
peu605 7:3dcb98ecf29f 3
peu605 7:3dcb98ecf29f 4 // from http://www.keil.com/forum/21105/bitband-macro-to-get-bit-number-from-bit-mask/
peu605 7:3dcb98ecf29f 5 #define MASK_TO_BITNUM(x) (x&0x1?0:x&0x2?1:x&0x4?2:x&0x8?3:\
peu605 7:3dcb98ecf29f 6 x&0x10?4:x&0x20?5:x&0x40?6:x&0x80?7:\
peu605 7:3dcb98ecf29f 7 x&0x100?8:x&0x200?9:x&0x400?10:x&0x800?11:\
peu605 7:3dcb98ecf29f 8 x&0x1000?12:x&0x2000?13:x&0x4000?14:x&0x8000?15:\
peu605 7:3dcb98ecf29f 9 x&0x10000?16:x&0x20000?17:x&0x40000?18:x&0x80000?19:\
peu605 7:3dcb98ecf29f 10 x&0x100000?20:x&0x200000?21:x&0x400000?22:x&0x800000?23:\
peu605 7:3dcb98ecf29f 11 x&0x1000000?24:x&0x2000000?25:x&0x4000000?26:x&0x8000000?27:\
peu605 7:3dcb98ecf29f 12 x&0x10000000?28:x&0x20000000?29:x&0x40000000?30:x&0x80000000?31:32)
peu605 7:3dcb98ecf29f 13
peu605 7:3dcb98ecf29f 14 #define BITBAND_PERIPH(addr, bit) \
peu605 7:3dcb98ecf29f 15 (volatile uint32_t*)(PERIPH_BB_BASE+((uint32_t)addr-PERIPH_BASE)*32+(bit*4))
peu605 7:3dcb98ecf29f 16
peu605 7:3dcb98ecf29f 17 class TFT_ILI9163C : public TFT_ILI9163C_BASE {
peu605 7:3dcb98ecf29f 18
peu605 7:3dcb98ecf29f 19 public:
peu605 7:3dcb98ecf29f 20
peu605 7:3dcb98ecf29f 21 TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc, PinName reset);
peu605 7:3dcb98ecf29f 22 TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc);
peu605 7:3dcb98ecf29f 23
peu605 7:3dcb98ecf29f 24 void dmaIrqHandler();
peu605 7:3dcb98ecf29f 25
peu605 7:3dcb98ecf29f 26
peu605 7:3dcb98ecf29f 27 private:
peu605 7:3dcb98ecf29f 28
peu605 7:3dcb98ecf29f 29 virtual void init(PinName cs, PinName dc);
peu605 7:3dcb98ecf29f 30 virtual void selectSlave();
peu605 7:3dcb98ecf29f 31 virtual void deselectSlave();
peu605 7:3dcb98ecf29f 32 virtual void setCommandMode();
peu605 7:3dcb98ecf29f 33 virtual void setDataMode();
peu605 7:3dcb98ecf29f 34 virtual void writecommand(uint8_t c);
peu605 7:3dcb98ecf29f 35 virtual void writedata(uint8_t d);
peu605 7:3dcb98ecf29f 36 virtual void writedata16(uint16_t d);
peu605 7:3dcb98ecf29f 37 virtual void writedata32(uint16_t d1, uint16_t d2);
peu605 7:3dcb98ecf29f 38 virtual void writedata16burst(uint16_t d, int32_t len);
peu605 7:3dcb98ecf29f 39
peu605 7:3dcb98ecf29f 40 GPIO_TypeDef *cs_port_reg;
peu605 7:3dcb98ecf29f 41 volatile uint32_t cs_reg_mask;
peu605 7:3dcb98ecf29f 42 GPIO_TypeDef *dc_port_reg;
peu605 7:3dcb98ecf29f 43 volatile uint32_t dc_reg_mask;
peu605 7:3dcb98ecf29f 44
peu605 7:3dcb98ecf29f 45 // peripheral bit-band addresses
peu605 7:3dcb98ecf29f 46 // volatile uint32_t *bb_cs_port;
peu605 7:3dcb98ecf29f 47 // volatile uint32_t *bb_dc_port;
peu605 7:3dcb98ecf29f 48 volatile uint32_t *bb_spi_txe;
peu605 7:3dcb98ecf29f 49 volatile uint32_t *bb_spi_bsy;
peu605 7:3dcb98ecf29f 50 volatile uint32_t *bb_spi_spe;
peu605 7:3dcb98ecf29f 51 volatile uint32_t *bb_spi_dff;
peu605 7:3dcb98ecf29f 52
peu605 7:3dcb98ecf29f 53 volatile uint32_t dma_tc_flag_mask;
peu605 7:3dcb98ecf29f 54 volatile uint32_t *dma_state_reg;
peu605 7:3dcb98ecf29f 55 volatile uint32_t dma_tc_clear_mask;
peu605 7:3dcb98ecf29f 56 volatile uint32_t *dma_state_clear_reg;
peu605 7:3dcb98ecf29f 57 volatile uint32_t *bb_dma_tcie;
peu605 7:3dcb98ecf29f 58
peu605 7:3dcb98ecf29f 59 DMA_HandleTypeDef hdma;
peu605 7:3dcb98ecf29f 60 volatile uint32_t *bb_spi_txdmaen;
peu605 7:3dcb98ecf29f 61 volatile uint32_t *bb_dma_sxcr_en;
peu605 7:3dcb98ecf29f 62 volatile uint16_t dmaBuff;
peu605 7:3dcb98ecf29f 63
peu605 7:3dcb98ecf29f 64 void waitSpiFree();
peu605 7:3dcb98ecf29f 65 void waitBufferFree();
peu605 7:3dcb98ecf29f 66 void set8bitMode();
peu605 7:3dcb98ecf29f 67 void set16bitMode();
peu605 7:3dcb98ecf29f 68 void waitCsFree();
peu605 7:3dcb98ecf29f 69 };
peu605 7:3dcb98ecf29f 70
peu605 7:3dcb98ecf29f 71 static TFT_ILI9163C *tftPtr[5];
peu605 7:3dcb98ecf29f 72
peu605 7:3dcb98ecf29f 73 void DmaIrqHandler1();
peu605 7:3dcb98ecf29f 74 void DmaIrqHandler2();
peu605 7:3dcb98ecf29f 75 void DmaIrqHandler3();
peu605 7:3dcb98ecf29f 76 void DmaIrqHandler4();
peu605 7:3dcb98ecf29f 77 void DmaIrqHandler5();