for Arduino TFT LCD Screen 160x128

Dependents:   TFTLCDSCREEN Pong_ILI9163C

Fork of TFT_ILI9163C by _ peu605

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TFT_ILI9163C_F411RE_DMA_IT.h Source File

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();