for Arduino TFT LCD Screen 160x128
Dependents: TFTLCDSCREEN Pong_ILI9163C
Fork of TFT_ILI9163C by
TFT_ILI9163C_F411RE_DMA_IT.h
00001 #include "mbed.h" 00002 #include "TFT_ILI9163C_BASE.h" 00003 00004 // from http://www.keil.com/forum/21105/bitband-macro-to-get-bit-number-from-bit-mask/ 00005 #define MASK_TO_BITNUM(x) (x&0x1?0:x&0x2?1:x&0x4?2:x&0x8?3:\ 00006 x&0x10?4:x&0x20?5:x&0x40?6:x&0x80?7:\ 00007 x&0x100?8:x&0x200?9:x&0x400?10:x&0x800?11:\ 00008 x&0x1000?12:x&0x2000?13:x&0x4000?14:x&0x8000?15:\ 00009 x&0x10000?16:x&0x20000?17:x&0x40000?18:x&0x80000?19:\ 00010 x&0x100000?20:x&0x200000?21:x&0x400000?22:x&0x800000?23:\ 00011 x&0x1000000?24:x&0x2000000?25:x&0x4000000?26:x&0x8000000?27:\ 00012 x&0x10000000?28:x&0x20000000?29:x&0x40000000?30:x&0x80000000?31:32) 00013 00014 #define BITBAND_PERIPH(addr, bit) \ 00015 (volatile uint32_t*)(PERIPH_BB_BASE+((uint32_t)addr-PERIPH_BASE)*32+(bit*4)) 00016 00017 class TFT_ILI9163C : public TFT_ILI9163C_BASE { 00018 00019 public: 00020 00021 TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc, PinName reset); 00022 TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc); 00023 00024 void dmaIrqHandler(); 00025 00026 00027 private: 00028 00029 virtual void init(PinName cs, PinName dc); 00030 virtual void selectSlave(); 00031 virtual void deselectSlave(); 00032 virtual void setCommandMode(); 00033 virtual void setDataMode(); 00034 virtual void writecommand(uint8_t c); 00035 virtual void writedata(uint8_t d); 00036 virtual void writedata16(uint16_t d); 00037 virtual void writedata32(uint16_t d1, uint16_t d2); 00038 virtual void writedata16burst(uint16_t d, int32_t len); 00039 00040 GPIO_TypeDef *cs_port_reg; 00041 volatile uint32_t cs_reg_mask; 00042 GPIO_TypeDef *dc_port_reg; 00043 volatile uint32_t dc_reg_mask; 00044 00045 // peripheral bit-band addresses 00046 // volatile uint32_t *bb_cs_port; 00047 // volatile uint32_t *bb_dc_port; 00048 volatile uint32_t *bb_spi_txe; 00049 volatile uint32_t *bb_spi_bsy; 00050 volatile uint32_t *bb_spi_spe; 00051 volatile uint32_t *bb_spi_dff; 00052 00053 volatile uint32_t dma_tc_flag_mask; 00054 volatile uint32_t *dma_state_reg; 00055 volatile uint32_t dma_tc_clear_mask; 00056 volatile uint32_t *dma_state_clear_reg; 00057 volatile uint32_t *bb_dma_tcie; 00058 00059 DMA_HandleTypeDef hdma; 00060 volatile uint32_t *bb_spi_txdmaen; 00061 volatile uint32_t *bb_dma_sxcr_en; 00062 volatile uint16_t dmaBuff; 00063 00064 void waitSpiFree(); 00065 void waitBufferFree(); 00066 void set8bitMode(); 00067 void set16bitMode(); 00068 void waitCsFree(); 00069 }; 00070 00071 static TFT_ILI9163C *tftPtr[5]; 00072 00073 void DmaIrqHandler1(); 00074 void DmaIrqHandler2(); 00075 void DmaIrqHandler3(); 00076 void DmaIrqHandler4(); 00077 void DmaIrqHandler5();
Generated on Wed Jul 13 2022 11:29:01 by 1.7.2