Buğra Tufan / Mbed 2 deprecated Adafruit_Version_6_K64F_bugra

Dependencies:   mbed BNO055

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RA8875.h Source File

RA8875.h

00001 #ifndef RA8875_H
00002 #define RA8875_H
00003 #include "mbed.h"
00004 
00005 // Sizes!
00006 enum RA8875sizes { RA8875_480x272, RA8875_800x480 };
00007 
00008 // Touch screen cal structs
00009 typedef struct Point 
00010 {
00011   int32_t x;
00012   int32_t y;
00013 } tsPoint_t;
00014 
00015 typedef struct //Matrix
00016 {
00017   int32_t An,
00018           Bn,
00019           Cn,
00020           Dn,
00021           En,
00022           Fn,
00023           Divider ;
00024 } tsMatrix_t;
00025 
00026 class Adafruit_RA8875 { // : public Adafruit_GFX {
00027  public:
00028   Adafruit_RA8875(PinName MOSI, PinName MISO, PinName SCLK,
00029         PinName CS, PinName RST);
00030   
00031   bool begin(enum RA8875sizes s);
00032   void    softReset(void);
00033   void    displayOn(bool on);
00034   void    sleep(bool sleep);
00035 
00036   /* Text functions */
00037   void    textMode(void);
00038   void    textSetCursor(uint16_t x, uint16_t y);
00039   void    textColor(uint16_t foreColor, uint16_t bgColor);
00040   void    textTransparent(uint16_t foreColor);
00041   void    textEnlarge(uint8_t scale);
00042   void    textWrite(const char* buffer, uint16_t len=0);
00043   void    textWritePro(uint16_t x, uint16_t y, uint16_t foreColor, uint16_t bgColor, const char* buffer, uint16_t len=0);
00044 
00045   /* Graphics functions */
00046   void    graphicsMode(void);
00047   void    setXY(uint16_t x, uint16_t y);
00048   void    pushPixels(uint32_t num, uint16_t p);
00049   void    fillRect(void);
00050 
00051   /* Adafruit_GFX functions */
00052   void    drawPixel(int16_t x, int16_t y, uint16_t color);
00053   void    drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
00054   void    drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
00055   
00056   /* HW accelerated wrapper functions (override Adafruit_GFX prototypes) */
00057   void    fillScreen(uint16_t color);
00058   void    drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
00059   void    drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
00060   void    fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
00061   void    drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
00062   void    fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
00063   void    drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
00064   void    fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
00065   void    drawEllipse(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint16_t color);
00066   void    fillEllipse(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint16_t color);
00067   void    drawCurve(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint8_t curvePart, uint16_t color);
00068   void    fillCurve(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint8_t curvePart, uint16_t color);
00069   
00070   void rectHelper  (int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color, bool filled);
00071   void Adafruit_RA8875::boxDraw(int16_t x, int16_t y, int16_t length, int16_t height, int16_t thick, uint16_t color, uint16_t fill);
00072   
00073   /* Backlight */
00074   void    GPIOX(bool on);
00075   void    PWM1config(bool on, uint8_t clock);
00076   void    PWM2config(bool on, uint8_t clock);
00077   void    PWM1out(uint8_t p);
00078   void    PWM2out(uint8_t p);
00079 
00080   /* Touch screen */
00081   void    touchEnable(bool on);
00082   bool touched(void);
00083   bool touchRead(uint16_t *x, uint16_t *y);
00084 
00085   /* Low level access */
00086   void    writeReg(uint8_t reg, uint8_t val);
00087   uint8_t readReg(uint8_t reg);
00088   void    writeData(uint8_t d);
00089   uint8_t readData(void);
00090   void    writeCommand(uint8_t d);
00091   uint8_t readStatus(void);
00092   bool waitPoll(uint8_t r, uint8_t f);
00093   uint16_t width(void);
00094   uint16_t height(void);
00095 
00096   /* Play nice with Arduino's Print class */
00097   virtual size_t write(uint8_t b) {
00098     textWrite((const char *)&b, 1);
00099     return 1;
00100   }
00101   virtual size_t write(const uint8_t *buffer, size_t size) {
00102     textWrite((const char *)buffer, size);
00103     return size;
00104   }
00105 
00106  private:
00107   void PLLinit(void);
00108   void initialize(void);
00109   
00110 //  /* GFX Helper Functions */
00111   void circleHelper(int16_t x0, int16_t y0, int16_t r, uint16_t color, bool filled);
00112   
00113   void triangleHelper(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color, bool filled);
00114   void ellipseHelper(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint16_t color, bool filled);
00115   void curveHelper(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint8_t curvePart, uint16_t color, bool filled);
00116 
00117   DigitalOut _cs, _rst;
00118   uint16_t _width, _height;
00119   uint8_t _textScale;
00120   enum RA8875sizes _size;
00121 
00122   SPI spi;                        ///< spi port
00123 };
00124 
00125 // Colors (RGB565)
00126 #define BLACK                   0x0000
00127 #define BLUE                    0x32f2
00128 #define RED                     0xF800
00129 #define GREEN                   0x07E0
00130 #define CYAN                    0x07FF
00131 #define MAGENTA                 0xF81F
00132 #define YELLOW                  0xFFE0  
00133 #define WHITE                   0xFFFF
00134 #define GREY                    0xA514
00135 #define ORANGE                  0xFA20
00136 
00137 // Command/Data pins for SPI
00138 #define RA8875_DATAWRITE        0x00
00139 #define RA8875_DATAREAD         0x40
00140 #define RA8875_CMDWRITE         0x80
00141 #define RA8875_CMDREAD          0xC0
00142 
00143 // Registers & bits
00144 #define RA8875_PWRR             0x01
00145 #define RA8875_PWRR_DISPON      0x80
00146 #define RA8875_PWRR_DISPOFF     0x00
00147 #define RA8875_PWRR_SLEEP       0x02
00148 #define RA8875_PWRR_NORMAL      0x00
00149 #define RA8875_PWRR_SOFTRESET   0x01
00150 
00151 #define RA8875_MRWC             0x02
00152 
00153 #define RA8875_GPIOX            0xC7
00154 
00155 #define RA8875_PLLC1            0x88
00156 #define RA8875_PLLC1_PLLDIV2    0x80
00157 #define RA8875_PLLC1_PLLDIV1    0x00
00158 
00159 #define RA8875_PLLC2            0x89
00160 #define RA8875_PLLC2_DIV1       0x00
00161 #define RA8875_PLLC2_DIV2       0x01
00162 #define RA8875_PLLC2_DIV4       0x02
00163 #define RA8875_PLLC2_DIV8       0x03
00164 #define RA8875_PLLC2_DIV16      0x04
00165 #define RA8875_PLLC2_DIV32      0x05
00166 #define RA8875_PLLC2_DIV64      0x06
00167 #define RA8875_PLLC2_DIV128     0x07
00168 
00169 #define RA8875_SYSR             0x10
00170 #define RA8875_SYSR_8BPP        0x00
00171 #define RA8875_SYSR_16BPP       0x0C
00172 #define RA8875_SYSR_MCU8        0x00
00173 #define RA8875_SYSR_MCU16       0x03
00174 
00175 #define RA8875_PCSR             0x04
00176 #define RA8875_PCSR_PDATR       0x00
00177 #define RA8875_PCSR_PDATL       0x80
00178 #define RA8875_PCSR_CLK         0x00
00179 #define RA8875_PCSR_2CLK        0x01
00180 #define RA8875_PCSR_4CLK        0x02
00181 #define RA8875_PCSR_8CLK        0x03
00182 
00183 #define RA8875_HDWR             0x14
00184 
00185 #define RA8875_HNDFTR           0x15
00186 #define RA8875_HNDFTR_DE_HIGH   0x00
00187 #define RA8875_HNDFTR_DE_LOW    0x80
00188 
00189 #define RA8875_HNDR             0x16
00190 #define RA8875_HSTR             0x17
00191 #define RA8875_HPWR             0x18
00192 #define RA8875_HPWR_LOW         0x00
00193 #define RA8875_HPWR_HIGH        0x80
00194 
00195 #define RA8875_VDHR0            0x19
00196 #define RA8875_VDHR1            0x1A
00197 #define RA8875_VNDR0            0x1B
00198 #define RA8875_VNDR1            0x1C
00199 #define RA8875_VSTR0            0x1D
00200 #define RA8875_VSTR1            0x1E
00201 #define RA8875_VPWR             0x1F
00202 #define RA8875_VPWR_LOW         0x00
00203 #define RA8875_VPWR_HIGH        0x80
00204 
00205 #define RA8875_HSAW0            0x30
00206 #define RA8875_HSAW1            0x31
00207 #define RA8875_VSAW0            0x32
00208 #define RA8875_VSAW1            0x33
00209 
00210 #define RA8875_HEAW0            0x34
00211 #define RA8875_HEAW1            0x35
00212 #define RA8875_VEAW0            0x36
00213 #define RA8875_VEAW1            0x37
00214 
00215 #define RA8875_MCLR             0x8E
00216 #define RA8875_MCLR_START       0x80
00217 #define RA8875_MCLR_STOP        0x00
00218 #define RA8875_MCLR_READSTATUS  0x80
00219 #define RA8875_MCLR_FULL        0x00
00220 #define RA8875_MCLR_ACTIVE      0x40
00221 
00222 #define RA8875_DCR                    0x90
00223 #define RA8875_DCR_LINESQUTRI_START   0x80
00224 #define RA8875_DCR_LINESQUTRI_STOP    0x00
00225 #define RA8875_DCR_LINESQUTRI_STATUS  0x80
00226 #define RA8875_DCR_CIRCLE_START       0x40
00227 #define RA8875_DCR_CIRCLE_STATUS      0x40
00228 #define RA8875_DCR_CIRCLE_STOP        0x00
00229 #define RA8875_DCR_FILL               0x20
00230 #define RA8875_DCR_NOFILL             0x00
00231 #define RA8875_DCR_DRAWLINE           0x00
00232 #define RA8875_DCR_DRAWTRIANGLE       0x01
00233 #define RA8875_DCR_DRAWSQUARE         0x10
00234 
00235 
00236 #define RA8875_ELLIPSE                0xA0
00237 #define RA8875_ELLIPSE_STATUS         0x80
00238 
00239 #define RA8875_MWCR0            0x40
00240 #define RA8875_MWCR0_GFXMODE    0x00
00241 #define RA8875_MWCR0_TXTMODE    0x80
00242 
00243 #define RA8875_CURH0            0x46
00244 #define RA8875_CURH1            0x47
00245 #define RA8875_CURV0            0x48
00246 #define RA8875_CURV1            0x49
00247 
00248 #define RA8875_P1CR             0x8A
00249 #define RA8875_P1CR_ENABLE      0x80
00250 #define RA8875_P1CR_DISABLE     0x00
00251 #define RA8875_P1CR_CLKOUT      0x10
00252 #define RA8875_P1CR_PWMOUT      0x00
00253 
00254 #define RA8875_P1DCR            0x8B
00255 
00256 #define RA8875_P2CR             0x8C
00257 #define RA8875_P2CR_ENABLE      0x80
00258 #define RA8875_P2CR_DISABLE     0x00
00259 #define RA8875_P2CR_CLKOUT      0x10
00260 #define RA8875_P2CR_PWMOUT      0x00
00261 
00262 #define RA8875_P2DCR            0x8D
00263 
00264 #define RA8875_PWM_CLK_DIV1     0x00
00265 #define RA8875_PWM_CLK_DIV2     0x01
00266 #define RA8875_PWM_CLK_DIV4     0x02
00267 #define RA8875_PWM_CLK_DIV8     0x03
00268 #define RA8875_PWM_CLK_DIV16    0x04
00269 #define RA8875_PWM_CLK_DIV32    0x05
00270 #define RA8875_PWM_CLK_DIV64    0x06
00271 #define RA8875_PWM_CLK_DIV128   0x07
00272 #define RA8875_PWM_CLK_DIV256   0x08
00273 #define RA8875_PWM_CLK_DIV512   0x09
00274 #define RA8875_PWM_CLK_DIV1024  0x0A
00275 #define RA8875_PWM_CLK_DIV2048  0x0B
00276 #define RA8875_PWM_CLK_DIV4096  0x0C
00277 #define RA8875_PWM_CLK_DIV8192  0x0D
00278 #define RA8875_PWM_CLK_DIV16384 0x0E
00279 #define RA8875_PWM_CLK_DIV32768 0x0F
00280 
00281 #define RA8875_TPCR0                  0x70
00282 #define RA8875_TPCR0_ENABLE           0x80
00283 #define RA8875_TPCR0_DISABLE          0x00
00284 #define RA8875_TPCR0_WAIT_512CLK      0x00
00285 #define RA8875_TPCR0_WAIT_1024CLK     0x10
00286 #define RA8875_TPCR0_WAIT_2048CLK     0x20
00287 #define RA8875_TPCR0_WAIT_4096CLK     0x30
00288 #define RA8875_TPCR0_WAIT_8192CLK     0x40
00289 #define RA8875_TPCR0_WAIT_16384CLK    0x50
00290 #define RA8875_TPCR0_WAIT_32768CLK    0x60
00291 #define RA8875_TPCR0_WAIT_65536CLK    0x70
00292 #define RA8875_TPCR0_WAKEENABLE       0x08
00293 #define RA8875_TPCR0_WAKEDISABLE      0x00
00294 #define RA8875_TPCR0_ADCCLK_DIV1      0x00
00295 #define RA8875_TPCR0_ADCCLK_DIV2      0x01
00296 #define RA8875_TPCR0_ADCCLK_DIV4      0x02
00297 #define RA8875_TPCR0_ADCCLK_DIV8      0x03
00298 #define RA8875_TPCR0_ADCCLK_DIV16     0x04
00299 #define RA8875_TPCR0_ADCCLK_DIV32     0x05
00300 #define RA8875_TPCR0_ADCCLK_DIV64     0x06
00301 #define RA8875_TPCR0_ADCCLK_DIV128    0x07
00302 
00303 #define RA8875_TPCR1            0x71
00304 #define RA8875_TPCR1_AUTO       0x00
00305 #define RA8875_TPCR1_MANUAL     0x40
00306 #define RA8875_TPCR1_VREFINT    0x00
00307 #define RA8875_TPCR1_VREFEXT    0x20
00308 #define RA8875_TPCR1_DEBOUNCE   0x04
00309 #define RA8875_TPCR1_NODEBOUNCE 0x00
00310 #define RA8875_TPCR1_IDLE       0x00
00311 #define RA8875_TPCR1_WAIT       0x01
00312 #define RA8875_TPCR1_LATCHX     0x02
00313 #define RA8875_TPCR1_LATCHY     0x03
00314 
00315 #define RA8875_TPXH             0x72
00316 #define RA8875_TPYH             0x73
00317 #define RA8875_TPXYL            0x74
00318 
00319 #define RA8875_INTC1            0xF0
00320 #define RA8875_INTC1_KEY        0x10
00321 #define RA8875_INTC1_DMA        0x08
00322 #define RA8875_INTC1_TP         0x04
00323 #define RA8875_INTC1_BTE        0x02
00324 
00325 #define RA8875_INTC2            0xF1
00326 #define RA8875_INTC2_KEY        0x10
00327 #define RA8875_INTC2_DMA        0x08
00328 #define RA8875_INTC2_TP         0x04
00329 #define RA8875_INTC2_BTE        0x02
00330 
00331 #endif