Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
Generated on Thu Jul 21 2022 08:35:16 by
1.7.2