for Arduino TFT LCD Screen 160x128
Dependents: TFTLCDSCREEN Pong_ILI9163C
Fork of TFT_ILI9163C by
TFT_ILI9163C_F302R8_SOFT.h@12:f0799be044ff, 2016-03-04 (annotated)
- 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?
User | Revision | Line number | New 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 | |
peu605 | 7:3dcb98ecf29f | 18 | class TFT_ILI9163C : public TFT_ILI9163C_BASE { |
peu605 | 7:3dcb98ecf29f | 19 | |
peu605 | 7:3dcb98ecf29f | 20 | public: |
peu605 | 7:3dcb98ecf29f | 21 | |
peu605 | 7:3dcb98ecf29f | 22 | TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc, PinName reset); |
peu605 | 7:3dcb98ecf29f | 23 | TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc); |
peu605 | 7:3dcb98ecf29f | 24 | |
peu605 | 7:3dcb98ecf29f | 25 | private: |
peu605 | 7:3dcb98ecf29f | 26 | |
peu605 | 7:3dcb98ecf29f | 27 | virtual void init(PinName cs, PinName dc); |
peu605 | 7:3dcb98ecf29f | 28 | virtual void selectSlave(); |
peu605 | 7:3dcb98ecf29f | 29 | virtual void deselectSlave(); |
peu605 | 7:3dcb98ecf29f | 30 | virtual void setCommandMode(); |
peu605 | 7:3dcb98ecf29f | 31 | virtual void setDataMode(); |
peu605 | 7:3dcb98ecf29f | 32 | virtual void writecommand(uint8_t c); |
peu605 | 7:3dcb98ecf29f | 33 | virtual void writedata(uint8_t d); |
peu605 | 7:3dcb98ecf29f | 34 | virtual void writedata16(uint16_t d); |
peu605 | 7:3dcb98ecf29f | 35 | virtual void writedata32(uint16_t d1, uint16_t d2); |
peu605 | 7:3dcb98ecf29f | 36 | virtual void writedata16burst(uint16_t d, int32_t len); |
peu605 | 7:3dcb98ecf29f | 37 | |
peu605 | 7:3dcb98ecf29f | 38 | GPIO_TypeDef *cs_port_reg; |
peu605 | 7:3dcb98ecf29f | 39 | volatile uint32_t cs_reg_mask; |
peu605 | 7:3dcb98ecf29f | 40 | GPIO_TypeDef *dc_port_reg; |
peu605 | 7:3dcb98ecf29f | 41 | volatile uint32_t dc_reg_mask; |
peu605 | 7:3dcb98ecf29f | 42 | |
peu605 | 7:3dcb98ecf29f | 43 | // peripheral bit-band addresses |
peu605 | 7:3dcb98ecf29f | 44 | // volatile uint32_t *bb_cs_port; |
peu605 | 7:3dcb98ecf29f | 45 | // volatile uint32_t *bb_dc_port; |
peu605 | 7:3dcb98ecf29f | 46 | volatile uint32_t *bb_spi_txe; |
peu605 | 7:3dcb98ecf29f | 47 | volatile uint32_t *bb_spi_bsy; |
peu605 | 7:3dcb98ecf29f | 48 | volatile uint32_t *bb_spi_spe; |
peu605 | 7:3dcb98ecf29f | 49 | |
peu605 | 7:3dcb98ecf29f | 50 | void waitSpiFree(); |
peu605 | 7:3dcb98ecf29f | 51 | void waitBufferFree(); |
peu605 | 7:3dcb98ecf29f | 52 | void set8bitMode(); |
peu605 | 7:3dcb98ecf29f | 53 | void set16bitMode(); |
peu605 | 7:3dcb98ecf29f | 54 | }; |