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.h Source File

TFT_ILI9163C_F411RE_DMA.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 
00018 class TFT_ILI9163C : public TFT_ILI9163C_BASE {
00019 
00020  public:
00021 
00022     TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc, PinName reset);
00023     TFT_ILI9163C(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName dc);
00024     
00025  private:
00026  
00027     virtual void    init(PinName cs, PinName dc);
00028     virtual void    selectSlave();
00029     virtual void    deselectSlave();
00030     virtual void    setCommandMode();
00031     virtual void    setDataMode();
00032     virtual void    writecommand(uint8_t c);
00033     virtual void    writedata(uint8_t d);
00034     virtual void    writedata16(uint16_t d);
00035     virtual void    writedata32(uint16_t d1, uint16_t d2);
00036     virtual void    writedata16burst(uint16_t d, int32_t len);
00037     
00038     GPIO_TypeDef *cs_port_reg;
00039     volatile uint32_t cs_reg_mask;
00040     GPIO_TypeDef *dc_port_reg;
00041     volatile uint32_t dc_reg_mask;
00042     
00043     // peripheral bit-band addresses
00044 //  volatile uint32_t *bb_cs_port;
00045 //  volatile uint32_t *bb_dc_port;
00046     volatile uint32_t *bb_spi_txe;
00047     volatile uint32_t *bb_spi_bsy;
00048     volatile uint32_t *bb_spi_spe;
00049     volatile uint32_t *bb_spi_dff;
00050     
00051     DMA_HandleTypeDef hdma;
00052     volatile uint32_t *bb_spi_txdmaen;
00053     volatile uint32_t *bb_dma_sxcr_en;
00054     volatile uint16_t dmaBuff;
00055     
00056     void    waitSpiFree();
00057     void    waitBufferFree();
00058     void    set8bitMode();
00059     void    set16bitMode();
00060 };