Fork of https://os.mbed.com/users/sebastiken/code/Adafruit_RA8875/ ; Adapted for use with K64F and in the process of adding more functions.

Dependencies:   mbed BNO055

Committer:
sebastiken
Date:
Fri Sep 08 14:14:54 2017 +0000
Revision:
1:ac22f0f36d6b
Parent:
0:66c1aa3d198e
Child:
2:040a687cea93
[ADD] Debugging message Serial to RA8875.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sebastiken 0:66c1aa3d198e 1 /**************************************************************************/
sebastiken 0:66c1aa3d198e 2 /*!
sebastiken 0:66c1aa3d198e 3 @file Adafruit_RA8875.cpp
sebastiken 0:66c1aa3d198e 4 @author Limor Friend/Ladyada, K.Townsend/KTOWN for Adafruit Industries
sebastiken 0:66c1aa3d198e 5 @license BSD license, all text above and below must be included in
sebastiken 0:66c1aa3d198e 6 any redistribution
sebastiken 0:66c1aa3d198e 7
sebastiken 0:66c1aa3d198e 8 This is the library for the Adafruit RA8875 Driver board for TFT displays
sebastiken 0:66c1aa3d198e 9 ---------------> http://www.adafruit.com/products/1590
sebastiken 0:66c1aa3d198e 10 The RA8875 is a TFT driver for up to 800x480 dotclock'd displays
sebastiken 0:66c1aa3d198e 11 It is tested to work with displays in the Adafruit shop. Other displays
sebastiken 0:66c1aa3d198e 12 may need timing adjustments and are not guanteed to work.
sebastiken 0:66c1aa3d198e 13
sebastiken 0:66c1aa3d198e 14 Adafruit invests time and resources providing this open
sebastiken 0:66c1aa3d198e 15 source code, please support Adafruit and open-source hardware
sebastiken 0:66c1aa3d198e 16 by purchasing products from Adafruit!
sebastiken 0:66c1aa3d198e 17
sebastiken 0:66c1aa3d198e 18 Written by Limor Fried/Ladyada for Adafruit Industries.
sebastiken 0:66c1aa3d198e 19 BSD license, check license.txt for more information.
sebastiken 0:66c1aa3d198e 20 All text above must be included in any redistribution.
sebastiken 0:66c1aa3d198e 21
sebastiken 0:66c1aa3d198e 22 @section HISTORY
sebastiken 0:66c1aa3d198e 23
sebastiken 0:66c1aa3d198e 24 v1.0 - First release
sebastiken 0:66c1aa3d198e 25
sebastiken 0:66c1aa3d198e 26 Code migrated to Mbed.
sebastiken 0:66c1aa3d198e 27 */
sebastiken 0:66c1aa3d198e 28 /**************************************************************************/
sebastiken 0:66c1aa3d198e 29 #include "RA8875.h"
sebastiken 0:66c1aa3d198e 30
sebastiken 0:66c1aa3d198e 31 #if defined (ARDUINO_ARCH_ARC32)
sebastiken 0:66c1aa3d198e 32 uint32_t spi_speed = 12000000;
sebastiken 0:66c1aa3d198e 33 #else
sebastiken 0:66c1aa3d198e 34 uint32_t spi_speed = 4000000;
sebastiken 0:66c1aa3d198e 35 #endif
sebastiken 0:66c1aa3d198e 36
sebastiken 0:66c1aa3d198e 37 // NOTE: MBed use transactions inside SPI class itself
sebastiken 0:66c1aa3d198e 38 //// If the SPI library has transaction support, these functions
sebastiken 0:66c1aa3d198e 39 //// establish settings and protect from interference from other
sebastiken 0:66c1aa3d198e 40 //// libraries. Otherwise, they simply do nothing.
sebastiken 0:66c1aa3d198e 41 //#ifdef SPI_HAS_TRANSACTION
sebastiken 0:66c1aa3d198e 42 // static inline void spi_begin(void) __attribute__((always_inline));
sebastiken 0:66c1aa3d198e 43 // static inline void spi_begin(void) {
sebastiken 0:66c1aa3d198e 44 // // max speed!
sebastiken 0:66c1aa3d198e 45 // SPI.beginTransaction(SPISettings(spi_speed, MSBFIRST, SPI_MODE0));
sebastiken 0:66c1aa3d198e 46 // }
sebastiken 0:66c1aa3d198e 47 // static inline void spi_end(void) __attribute__((always_inline));
sebastiken 0:66c1aa3d198e 48 // static inline void spi_end(void) {
sebastiken 0:66c1aa3d198e 49 // SPI.endTransaction();
sebastiken 0:66c1aa3d198e 50 // }
sebastiken 0:66c1aa3d198e 51 //#else
sebastiken 0:66c1aa3d198e 52 // #define spi_begin()
sebastiken 0:66c1aa3d198e 53 // #define spi_end()
sebastiken 0:66c1aa3d198e 54 //#endif
sebastiken 0:66c1aa3d198e 55
sebastiken 0:66c1aa3d198e 56
sebastiken 0:66c1aa3d198e 57 /**************************************************************************/
sebastiken 0:66c1aa3d198e 58 /*!
sebastiken 0:66c1aa3d198e 59 Constructor for a new RA8875 instance
sebastiken 0:66c1aa3d198e 60
sebastiken 0:66c1aa3d198e 61 @args CS[in] Location of the SPI chip select pin
sebastiken 0:66c1aa3d198e 62 @args RST[in] Location of the reset pin
sebastiken 0:66c1aa3d198e 63 */
sebastiken 0:66c1aa3d198e 64 /**************************************************************************/
sebastiken 0:66c1aa3d198e 65 Adafruit_RA8875::Adafruit_RA8875(PinName MOSI, PinName MISO, PinName SCLK,
sebastiken 1:ac22f0f36d6b 66 PinName CS, PinName RST, Serial *pc)
sebastiken 0:66c1aa3d198e 67 : //Adafruit_GFX(800, 480)
sebastiken 0:66c1aa3d198e 68 _cs(CS)
sebastiken 0:66c1aa3d198e 69 , _rst(RST)
sebastiken 0:66c1aa3d198e 70 , spi(MOSI, MISO, SCLK)
sebastiken 0:66c1aa3d198e 71 {
sebastiken 1:ac22f0f36d6b 72 pc = pc;
sebastiken 0:66c1aa3d198e 73 }
sebastiken 0:66c1aa3d198e 74
sebastiken 0:66c1aa3d198e 75 /**************************************************************************/
sebastiken 0:66c1aa3d198e 76 /*!
sebastiken 0:66c1aa3d198e 77 Initialises the LCD driver and any HW required by the display
sebastiken 0:66c1aa3d198e 78
sebastiken 0:66c1aa3d198e 79 @args s[in] The display size, which can be either:
sebastiken 0:66c1aa3d198e 80 'RA8875_480x272' (4.3" displays) r
sebastiken 0:66c1aa3d198e 81 'RA8875_800x480' (5" and 7" displays)
sebastiken 0:66c1aa3d198e 82 */
sebastiken 0:66c1aa3d198e 83 /**************************************************************************/
sebastiken 0:66c1aa3d198e 84 bool Adafruit_RA8875::begin(enum RA8875sizes s) {
sebastiken 0:66c1aa3d198e 85 _size = s;
sebastiken 0:66c1aa3d198e 86
sebastiken 0:66c1aa3d198e 87 if (_size == RA8875_480x272) {
sebastiken 0:66c1aa3d198e 88 _width = 480;
sebastiken 0:66c1aa3d198e 89 _height = 272;
sebastiken 0:66c1aa3d198e 90 }
sebastiken 0:66c1aa3d198e 91 else if (_size == RA8875_800x480) {
sebastiken 0:66c1aa3d198e 92 _width = 800;
sebastiken 0:66c1aa3d198e 93 _height = 480;
sebastiken 0:66c1aa3d198e 94 }
sebastiken 0:66c1aa3d198e 95 else {
sebastiken 0:66c1aa3d198e 96 return false;
sebastiken 0:66c1aa3d198e 97 }
sebastiken 0:66c1aa3d198e 98
sebastiken 0:66c1aa3d198e 99 _cs = 1;
sebastiken 0:66c1aa3d198e 100
sebastiken 0:66c1aa3d198e 101 _rst = 0;
sebastiken 0:66c1aa3d198e 102 wait_ms(100);
sebastiken 0:66c1aa3d198e 103 _rst = 1;
sebastiken 0:66c1aa3d198e 104 wait_ms(100);
sebastiken 0:66c1aa3d198e 105
sebastiken 0:66c1aa3d198e 106 // Setting format
sebastiken 0:66c1aa3d198e 107 spi.format(8, 0);
sebastiken 0:66c1aa3d198e 108
sebastiken 0:66c1aa3d198e 109 // Configure SPI frequency
sebastiken 0:66c1aa3d198e 110 spi_speed = 2000000;
sebastiken 0:66c1aa3d198e 111 spi.frequency(spi_speed);
sebastiken 0:66c1aa3d198e 112
sebastiken 0:66c1aa3d198e 113 uint8_t x = readReg(0);
sebastiken 1:ac22f0f36d6b 114 pc->printf("x = 0x"); pc->printf("%x\n" , x);
sebastiken 0:66c1aa3d198e 115 if (x != 0x75) {
sebastiken 0:66c1aa3d198e 116 return false;
sebastiken 0:66c1aa3d198e 117 }
sebastiken 0:66c1aa3d198e 118
sebastiken 0:66c1aa3d198e 119
sebastiken 0:66c1aa3d198e 120
sebastiken 0:66c1aa3d198e 121 initialize();
sebastiken 0:66c1aa3d198e 122
sebastiken 0:66c1aa3d198e 123 #ifdef SPI_HAS_TRANSACTION
sebastiken 0:66c1aa3d198e 124 #if defined (ARDUINO_ARCH_ARC32)
sebastiken 0:66c1aa3d198e 125 spi_speed = 12000000L;
sebastiken 0:66c1aa3d198e 126 #else
sebastiken 0:66c1aa3d198e 127 spi_speed = 4000000L;
sebastiken 0:66c1aa3d198e 128 #endif
sebastiken 0:66c1aa3d198e 129 #else
sebastiken 0:66c1aa3d198e 130 #ifdef __AVR__
sebastiken 0:66c1aa3d198e 131 SPI.setClockDivider(SPI_CLOCK_DIV4);
sebastiken 0:66c1aa3d198e 132 #endif
sebastiken 0:66c1aa3d198e 133 #endif
sebastiken 0:66c1aa3d198e 134
sebastiken 0:66c1aa3d198e 135 return true;
sebastiken 0:66c1aa3d198e 136 }
sebastiken 0:66c1aa3d198e 137
sebastiken 0:66c1aa3d198e 138 /************************* Initialization *********************************/
sebastiken 0:66c1aa3d198e 139
sebastiken 0:66c1aa3d198e 140 /**************************************************************************/
sebastiken 0:66c1aa3d198e 141 /*!
sebastiken 0:66c1aa3d198e 142 Performs a SW-based reset of the RA8875
sebastiken 0:66c1aa3d198e 143 */
sebastiken 0:66c1aa3d198e 144 /**************************************************************************/
sebastiken 0:66c1aa3d198e 145 void Adafruit_RA8875::softReset(void) {
sebastiken 0:66c1aa3d198e 146 writeCommand(RA8875_PWRR);
sebastiken 0:66c1aa3d198e 147 writeData(RA8875_PWRR_SOFTRESET);
sebastiken 0:66c1aa3d198e 148 writeData(RA8875_PWRR_NORMAL);
sebastiken 0:66c1aa3d198e 149 wait_ms(1);
sebastiken 0:66c1aa3d198e 150 }
sebastiken 0:66c1aa3d198e 151
sebastiken 0:66c1aa3d198e 152 /**************************************************************************/
sebastiken 0:66c1aa3d198e 153 /*!
sebastiken 0:66c1aa3d198e 154 Initialise the PLL
sebastiken 0:66c1aa3d198e 155 */
sebastiken 0:66c1aa3d198e 156 /**************************************************************************/
sebastiken 0:66c1aa3d198e 157 void Adafruit_RA8875::PLLinit(void) {
sebastiken 0:66c1aa3d198e 158 if (_size == RA8875_480x272) {
sebastiken 0:66c1aa3d198e 159 writeReg(RA8875_PLLC1, RA8875_PLLC1_PLLDIV1 + 10);
sebastiken 0:66c1aa3d198e 160 wait_ms(1);
sebastiken 0:66c1aa3d198e 161 writeReg(RA8875_PLLC2, RA8875_PLLC2_DIV4);
sebastiken 0:66c1aa3d198e 162 wait_ms(1);
sebastiken 0:66c1aa3d198e 163 }
sebastiken 0:66c1aa3d198e 164 else /* (_size == RA8875_800x480) */ {
sebastiken 0:66c1aa3d198e 165 writeReg(RA8875_PLLC1, RA8875_PLLC1_PLLDIV1 + 10);
sebastiken 0:66c1aa3d198e 166 wait_ms(1);
sebastiken 0:66c1aa3d198e 167 writeReg(RA8875_PLLC2, RA8875_PLLC2_DIV4);
sebastiken 0:66c1aa3d198e 168 wait_ms(1);
sebastiken 0:66c1aa3d198e 169 }
sebastiken 0:66c1aa3d198e 170 }
sebastiken 0:66c1aa3d198e 171
sebastiken 0:66c1aa3d198e 172 /**************************************************************************/
sebastiken 0:66c1aa3d198e 173 /*!
sebastiken 0:66c1aa3d198e 174 Initialises the driver IC (clock setup, etc.)
sebastiken 0:66c1aa3d198e 175 */
sebastiken 0:66c1aa3d198e 176 /**************************************************************************/
sebastiken 0:66c1aa3d198e 177 void Adafruit_RA8875::initialize(void) {
sebastiken 0:66c1aa3d198e 178 PLLinit();
sebastiken 0:66c1aa3d198e 179 writeReg(RA8875_SYSR, RA8875_SYSR_16BPP | RA8875_SYSR_MCU8);
sebastiken 0:66c1aa3d198e 180
sebastiken 0:66c1aa3d198e 181 /* Timing values */
sebastiken 0:66c1aa3d198e 182 uint8_t pixclk;
sebastiken 0:66c1aa3d198e 183 uint8_t hsync_start;
sebastiken 0:66c1aa3d198e 184 uint8_t hsync_pw;
sebastiken 0:66c1aa3d198e 185 uint8_t hsync_finetune;
sebastiken 0:66c1aa3d198e 186 uint8_t hsync_nondisp;
sebastiken 0:66c1aa3d198e 187 uint8_t vsync_pw;
sebastiken 0:66c1aa3d198e 188 uint16_t vsync_nondisp;
sebastiken 0:66c1aa3d198e 189 uint16_t vsync_start;
sebastiken 0:66c1aa3d198e 190
sebastiken 0:66c1aa3d198e 191 /* Set the correct values for the display being used */
sebastiken 0:66c1aa3d198e 192 if (_size == RA8875_480x272)
sebastiken 0:66c1aa3d198e 193 {
sebastiken 0:66c1aa3d198e 194 pixclk = RA8875_PCSR_PDATL | RA8875_PCSR_4CLK;
sebastiken 0:66c1aa3d198e 195 hsync_nondisp = 10;
sebastiken 0:66c1aa3d198e 196 hsync_start = 8;
sebastiken 0:66c1aa3d198e 197 hsync_pw = 48;
sebastiken 0:66c1aa3d198e 198 hsync_finetune = 0;
sebastiken 0:66c1aa3d198e 199 vsync_nondisp = 3;
sebastiken 0:66c1aa3d198e 200 vsync_start = 8;
sebastiken 0:66c1aa3d198e 201 vsync_pw = 10;
sebastiken 0:66c1aa3d198e 202 }
sebastiken 0:66c1aa3d198e 203 else // (_size == RA8875_800x480)
sebastiken 0:66c1aa3d198e 204 {
sebastiken 0:66c1aa3d198e 205 pixclk = RA8875_PCSR_PDATL | RA8875_PCSR_2CLK;
sebastiken 0:66c1aa3d198e 206 hsync_nondisp = 26;
sebastiken 0:66c1aa3d198e 207 hsync_start = 32;
sebastiken 0:66c1aa3d198e 208 hsync_pw = 96;
sebastiken 0:66c1aa3d198e 209 hsync_finetune = 0;
sebastiken 0:66c1aa3d198e 210 vsync_nondisp = 32;
sebastiken 0:66c1aa3d198e 211 vsync_start = 23;
sebastiken 0:66c1aa3d198e 212 vsync_pw = 2;
sebastiken 0:66c1aa3d198e 213 }
sebastiken 0:66c1aa3d198e 214
sebastiken 0:66c1aa3d198e 215 writeReg(RA8875_PCSR, pixclk);
sebastiken 0:66c1aa3d198e 216 wait_ms(1);
sebastiken 0:66c1aa3d198e 217
sebastiken 0:66c1aa3d198e 218 /* Horizontal settings registers */
sebastiken 0:66c1aa3d198e 219 writeReg(RA8875_HDWR, (_width / 8) - 1); // H width: (HDWR + 1) * 8 = 480
sebastiken 0:66c1aa3d198e 220 writeReg(RA8875_HNDFTR, RA8875_HNDFTR_DE_HIGH + hsync_finetune);
sebastiken 0:66c1aa3d198e 221 writeReg(RA8875_HNDR, (hsync_nondisp - hsync_finetune - 2)/8); // H non-display: HNDR * 8 + HNDFTR + 2 = 10
sebastiken 0:66c1aa3d198e 222 writeReg(RA8875_HSTR, hsync_start/8 - 1); // Hsync start: (HSTR + 1)*8
sebastiken 0:66c1aa3d198e 223 writeReg(RA8875_HPWR, RA8875_HPWR_LOW + (hsync_pw/8 - 1)); // HSync pulse width = (HPWR+1) * 8
sebastiken 0:66c1aa3d198e 224
sebastiken 0:66c1aa3d198e 225 /* Vertical settings registers */
sebastiken 0:66c1aa3d198e 226 writeReg(RA8875_VDHR0, (uint16_t)(_height - 1) & 0xFF);
sebastiken 0:66c1aa3d198e 227 writeReg(RA8875_VDHR1, (uint16_t)(_height - 1) >> 8);
sebastiken 0:66c1aa3d198e 228 writeReg(RA8875_VNDR0, vsync_nondisp-1); // V non-display period = VNDR + 1
sebastiken 0:66c1aa3d198e 229 writeReg(RA8875_VNDR1, vsync_nondisp >> 8);
sebastiken 0:66c1aa3d198e 230 writeReg(RA8875_VSTR0, vsync_start-1); // Vsync start position = VSTR + 1
sebastiken 0:66c1aa3d198e 231 writeReg(RA8875_VSTR1, vsync_start >> 8);
sebastiken 0:66c1aa3d198e 232 writeReg(RA8875_VPWR, RA8875_VPWR_LOW + vsync_pw - 1); // Vsync pulse width = VPWR + 1
sebastiken 0:66c1aa3d198e 233
sebastiken 0:66c1aa3d198e 234 /* Set active window X */
sebastiken 0:66c1aa3d198e 235 writeReg(RA8875_HSAW0, 0); // horizontal start point
sebastiken 0:66c1aa3d198e 236 writeReg(RA8875_HSAW1, 0);
sebastiken 0:66c1aa3d198e 237 writeReg(RA8875_HEAW0, (uint16_t)(_width - 1) & 0xFF); // horizontal end point
sebastiken 0:66c1aa3d198e 238 writeReg(RA8875_HEAW1, (uint16_t)(_width - 1) >> 8);
sebastiken 0:66c1aa3d198e 239
sebastiken 0:66c1aa3d198e 240 /* Set active window Y */
sebastiken 0:66c1aa3d198e 241 writeReg(RA8875_VSAW0, 0); // vertical start point
sebastiken 0:66c1aa3d198e 242 writeReg(RA8875_VSAW1, 0);
sebastiken 0:66c1aa3d198e 243 writeReg(RA8875_VEAW0, (uint16_t)(_height - 1) & 0xFF); // horizontal end point
sebastiken 0:66c1aa3d198e 244 writeReg(RA8875_VEAW1, (uint16_t)(_height - 1) >> 8);
sebastiken 0:66c1aa3d198e 245
sebastiken 0:66c1aa3d198e 246 /* ToDo: Setup touch panel? */
sebastiken 0:66c1aa3d198e 247
sebastiken 0:66c1aa3d198e 248 /* Clear the entire window */
sebastiken 0:66c1aa3d198e 249 writeReg(RA8875_MCLR, RA8875_MCLR_START | RA8875_MCLR_FULL);
sebastiken 0:66c1aa3d198e 250 wait_ms(500);
sebastiken 0:66c1aa3d198e 251 }
sebastiken 0:66c1aa3d198e 252
sebastiken 0:66c1aa3d198e 253 /**************************************************************************/
sebastiken 0:66c1aa3d198e 254 /*!
sebastiken 0:66c1aa3d198e 255 Returns the display width in pixels
sebastiken 0:66c1aa3d198e 256
sebastiken 0:66c1aa3d198e 257 @returns The 1-based display width in pixels
sebastiken 0:66c1aa3d198e 258 */
sebastiken 0:66c1aa3d198e 259 /**************************************************************************/
sebastiken 0:66c1aa3d198e 260 uint16_t Adafruit_RA8875::width(void) { return _width; }
sebastiken 0:66c1aa3d198e 261
sebastiken 0:66c1aa3d198e 262 /**************************************************************************/
sebastiken 0:66c1aa3d198e 263 /*!
sebastiken 0:66c1aa3d198e 264 Returns the display height in pixels
sebastiken 0:66c1aa3d198e 265
sebastiken 0:66c1aa3d198e 266 @returns The 1-based display height in pixels
sebastiken 0:66c1aa3d198e 267 */
sebastiken 0:66c1aa3d198e 268 /**************************************************************************/
sebastiken 0:66c1aa3d198e 269 uint16_t Adafruit_RA8875::height(void) { return _height; }
sebastiken 0:66c1aa3d198e 270
sebastiken 0:66c1aa3d198e 271 /************************* Text Mode ***********************************/
sebastiken 0:66c1aa3d198e 272
sebastiken 0:66c1aa3d198e 273 /**************************************************************************/
sebastiken 0:66c1aa3d198e 274 /*!
sebastiken 0:66c1aa3d198e 275 Sets the display in text mode (as opposed to graphics mode)
sebastiken 0:66c1aa3d198e 276 */
sebastiken 0:66c1aa3d198e 277 /**************************************************************************/
sebastiken 0:66c1aa3d198e 278 void Adafruit_RA8875::textMode(void)
sebastiken 0:66c1aa3d198e 279 {
sebastiken 0:66c1aa3d198e 280 /* Set text mode */
sebastiken 0:66c1aa3d198e 281 writeCommand(RA8875_MWCR0);
sebastiken 0:66c1aa3d198e 282 uint8_t temp = readData();
sebastiken 0:66c1aa3d198e 283 temp |= RA8875_MWCR0_TXTMODE; // Set bit 7
sebastiken 0:66c1aa3d198e 284 writeData(temp);
sebastiken 0:66c1aa3d198e 285
sebastiken 0:66c1aa3d198e 286 /* Select the internal (ROM) font */
sebastiken 0:66c1aa3d198e 287 writeCommand(0x21);
sebastiken 0:66c1aa3d198e 288 temp = readData();
sebastiken 0:66c1aa3d198e 289 temp &= ~((1<<7) | (1<<5)); // Clear bits 7 and 5
sebastiken 0:66c1aa3d198e 290 writeData(temp);
sebastiken 0:66c1aa3d198e 291 }
sebastiken 0:66c1aa3d198e 292
sebastiken 0:66c1aa3d198e 293 /**************************************************************************/
sebastiken 0:66c1aa3d198e 294 /*!
sebastiken 0:66c1aa3d198e 295 Sets the display in text mode (as opposed to graphics mode)
sebastiken 0:66c1aa3d198e 296
sebastiken 0:66c1aa3d198e 297 @args x[in] The x position of the cursor (in pixels, 0..1023)
sebastiken 0:66c1aa3d198e 298 @args y[in] The y position of the cursor (in pixels, 0..511)
sebastiken 0:66c1aa3d198e 299 */
sebastiken 0:66c1aa3d198e 300 /**************************************************************************/
sebastiken 0:66c1aa3d198e 301 void Adafruit_RA8875::textSetCursor(uint16_t x, uint16_t y)
sebastiken 0:66c1aa3d198e 302 {
sebastiken 0:66c1aa3d198e 303 /* Set cursor location */
sebastiken 0:66c1aa3d198e 304 writeCommand(0x2A);
sebastiken 0:66c1aa3d198e 305 writeData(x & 0xFF);
sebastiken 0:66c1aa3d198e 306 writeCommand(0x2B);
sebastiken 0:66c1aa3d198e 307 writeData(x >> 8);
sebastiken 0:66c1aa3d198e 308 writeCommand(0x2C);
sebastiken 0:66c1aa3d198e 309 writeData(y & 0xFF);
sebastiken 0:66c1aa3d198e 310 writeCommand(0x2D);
sebastiken 0:66c1aa3d198e 311 writeData(y >> 8);
sebastiken 0:66c1aa3d198e 312 }
sebastiken 0:66c1aa3d198e 313
sebastiken 0:66c1aa3d198e 314 /**************************************************************************/
sebastiken 0:66c1aa3d198e 315 /*!
sebastiken 0:66c1aa3d198e 316 Sets the fore and background color when rendering text
sebastiken 0:66c1aa3d198e 317
sebastiken 0:66c1aa3d198e 318 @args foreColor[in] The RGB565 color to use when rendering the text
sebastiken 0:66c1aa3d198e 319 @args bgColor[in] The RGB565 colot to use for the background
sebastiken 0:66c1aa3d198e 320 */
sebastiken 0:66c1aa3d198e 321 /**************************************************************************/
sebastiken 0:66c1aa3d198e 322 void Adafruit_RA8875::textColor(uint16_t foreColor, uint16_t bgColor)
sebastiken 0:66c1aa3d198e 323 {
sebastiken 0:66c1aa3d198e 324 /* Set Fore Color */
sebastiken 0:66c1aa3d198e 325 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 326 writeData((foreColor & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 327 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 328 writeData((foreColor & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 329 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 330 writeData((foreColor & 0x001f));
sebastiken 0:66c1aa3d198e 331
sebastiken 0:66c1aa3d198e 332 /* Set Background Color */
sebastiken 0:66c1aa3d198e 333 writeCommand(0x60);
sebastiken 0:66c1aa3d198e 334 writeData((bgColor & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 335 writeCommand(0x61);
sebastiken 0:66c1aa3d198e 336 writeData((bgColor & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 337 writeCommand(0x62);
sebastiken 0:66c1aa3d198e 338 writeData((bgColor & 0x001f));
sebastiken 0:66c1aa3d198e 339
sebastiken 0:66c1aa3d198e 340 /* Clear transparency flag */
sebastiken 0:66c1aa3d198e 341 writeCommand(0x22);
sebastiken 0:66c1aa3d198e 342 uint8_t temp = readData();
sebastiken 0:66c1aa3d198e 343 temp &= ~(1<<6); // Clear bit 6
sebastiken 0:66c1aa3d198e 344 writeData(temp);
sebastiken 0:66c1aa3d198e 345 }
sebastiken 0:66c1aa3d198e 346
sebastiken 0:66c1aa3d198e 347 /**************************************************************************/
sebastiken 0:66c1aa3d198e 348 /*!
sebastiken 0:66c1aa3d198e 349 Sets the fore color when rendering text with a transparent bg
sebastiken 0:66c1aa3d198e 350
sebastiken 0:66c1aa3d198e 351 @args foreColor[in] The RGB565 color to use when rendering the text
sebastiken 0:66c1aa3d198e 352 */
sebastiken 0:66c1aa3d198e 353 /**************************************************************************/
sebastiken 0:66c1aa3d198e 354 void Adafruit_RA8875::textTransparent(uint16_t foreColor)
sebastiken 0:66c1aa3d198e 355 {
sebastiken 0:66c1aa3d198e 356 /* Set Fore Color */
sebastiken 0:66c1aa3d198e 357 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 358 writeData((foreColor & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 359 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 360 writeData((foreColor & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 361 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 362 writeData((foreColor & 0x001f));
sebastiken 0:66c1aa3d198e 363
sebastiken 0:66c1aa3d198e 364 /* Set transparency flag */
sebastiken 0:66c1aa3d198e 365 writeCommand(0x22);
sebastiken 0:66c1aa3d198e 366 uint8_t temp = readData();
sebastiken 0:66c1aa3d198e 367 temp |= (1<<6); // Set bit 6
sebastiken 0:66c1aa3d198e 368 writeData(temp);
sebastiken 0:66c1aa3d198e 369 }
sebastiken 0:66c1aa3d198e 370
sebastiken 0:66c1aa3d198e 371 /**************************************************************************/
sebastiken 0:66c1aa3d198e 372 /*!
sebastiken 0:66c1aa3d198e 373 Sets the text enlarge settings, using one of the following values:
sebastiken 0:66c1aa3d198e 374
sebastiken 0:66c1aa3d198e 375 0 = 1x zoom
sebastiken 0:66c1aa3d198e 376 1 = 2x zoom
sebastiken 0:66c1aa3d198e 377 2 = 3x zoom
sebastiken 0:66c1aa3d198e 378 3 = 4x zoom
sebastiken 0:66c1aa3d198e 379
sebastiken 0:66c1aa3d198e 380 @args scale[in] The zoom factor (0..3 for 1-4x zoom)
sebastiken 0:66c1aa3d198e 381 */
sebastiken 0:66c1aa3d198e 382 /**************************************************************************/
sebastiken 0:66c1aa3d198e 383 void Adafruit_RA8875::textEnlarge(uint8_t scale)
sebastiken 0:66c1aa3d198e 384 {
sebastiken 0:66c1aa3d198e 385 if (scale > 3) scale = 3;
sebastiken 0:66c1aa3d198e 386
sebastiken 0:66c1aa3d198e 387 /* Set font size flags */
sebastiken 0:66c1aa3d198e 388 writeCommand(0x22);
sebastiken 0:66c1aa3d198e 389 uint8_t temp = readData();
sebastiken 0:66c1aa3d198e 390 temp &= ~(0xF); // Clears bits 0..3
sebastiken 0:66c1aa3d198e 391 temp |= scale << 2;
sebastiken 0:66c1aa3d198e 392 temp |= scale;
sebastiken 0:66c1aa3d198e 393 writeData(temp);
sebastiken 0:66c1aa3d198e 394
sebastiken 0:66c1aa3d198e 395 _textScale = scale;
sebastiken 0:66c1aa3d198e 396 }
sebastiken 0:66c1aa3d198e 397
sebastiken 0:66c1aa3d198e 398 /**************************************************************************/
sebastiken 0:66c1aa3d198e 399 /*!
sebastiken 0:66c1aa3d198e 400 Renders some text on the screen when in text mode
sebastiken 0:66c1aa3d198e 401
sebastiken 0:66c1aa3d198e 402 @args buffer[in] The buffer containing the characters to render
sebastiken 0:66c1aa3d198e 403 @args len[in] The size of the buffer in bytes
sebastiken 0:66c1aa3d198e 404 */
sebastiken 0:66c1aa3d198e 405 /**************************************************************************/
sebastiken 0:66c1aa3d198e 406 void Adafruit_RA8875::textWrite(const char* buffer, uint16_t len)
sebastiken 0:66c1aa3d198e 407 {
sebastiken 0:66c1aa3d198e 408 if (len == 0) len = strlen(buffer);
sebastiken 0:66c1aa3d198e 409 writeCommand(RA8875_MRWC);
sebastiken 0:66c1aa3d198e 410 for (uint16_t i=0;i<len;i++)
sebastiken 0:66c1aa3d198e 411 {
sebastiken 0:66c1aa3d198e 412 writeData(buffer[i]);
sebastiken 0:66c1aa3d198e 413 #if defined(__AVR__)
sebastiken 0:66c1aa3d198e 414 if (_textScale > 1) wait_ms(1);
sebastiken 0:66c1aa3d198e 415 #elif defined(__arm__)
sebastiken 0:66c1aa3d198e 416 // This wait_ms is needed with textEnlarge(1) because
sebastiken 0:66c1aa3d198e 417 // Teensy 3.X is much faster than Arduino Uno
sebastiken 0:66c1aa3d198e 418 if (_textScale > 0) wait_ms(1);
sebastiken 0:66c1aa3d198e 419 #endif
sebastiken 0:66c1aa3d198e 420 }
sebastiken 0:66c1aa3d198e 421 }
sebastiken 0:66c1aa3d198e 422
sebastiken 0:66c1aa3d198e 423 /************************* Graphics ***********************************/
sebastiken 0:66c1aa3d198e 424
sebastiken 0:66c1aa3d198e 425 /**************************************************************************/
sebastiken 0:66c1aa3d198e 426 /*!
sebastiken 0:66c1aa3d198e 427 Sets the display in graphics mode (as opposed to text mode)
sebastiken 0:66c1aa3d198e 428 */
sebastiken 0:66c1aa3d198e 429 /**************************************************************************/
sebastiken 0:66c1aa3d198e 430 void Adafruit_RA8875::graphicsMode(void) {
sebastiken 0:66c1aa3d198e 431 writeCommand(RA8875_MWCR0);
sebastiken 0:66c1aa3d198e 432 uint8_t temp = readData();
sebastiken 0:66c1aa3d198e 433 temp &= ~RA8875_MWCR0_TXTMODE; // bit #7
sebastiken 0:66c1aa3d198e 434 writeData(temp);
sebastiken 0:66c1aa3d198e 435 }
sebastiken 0:66c1aa3d198e 436
sebastiken 0:66c1aa3d198e 437 /**************************************************************************/
sebastiken 0:66c1aa3d198e 438 /*!
sebastiken 0:66c1aa3d198e 439 Waits for screen to finish by polling the status!
sebastiken 0:66c1aa3d198e 440 */
sebastiken 0:66c1aa3d198e 441 /**************************************************************************/
sebastiken 0:66c1aa3d198e 442 bool Adafruit_RA8875::waitPoll(uint8_t regname, uint8_t waitflag) {
sebastiken 0:66c1aa3d198e 443 /* Wait for the command to finish */
sebastiken 0:66c1aa3d198e 444 while (1)
sebastiken 0:66c1aa3d198e 445 {
sebastiken 0:66c1aa3d198e 446 uint8_t temp = readReg(regname);
sebastiken 0:66c1aa3d198e 447 if (!(temp & waitflag))
sebastiken 0:66c1aa3d198e 448 return true;
sebastiken 0:66c1aa3d198e 449 }
sebastiken 0:66c1aa3d198e 450 //return false; // MEMEFIX: yeah i know, unreached! - add timeout?
sebastiken 0:66c1aa3d198e 451 }
sebastiken 0:66c1aa3d198e 452
sebastiken 0:66c1aa3d198e 453
sebastiken 0:66c1aa3d198e 454 /**************************************************************************/
sebastiken 0:66c1aa3d198e 455 /*!
sebastiken 0:66c1aa3d198e 456 Sets the current X/Y position on the display before drawing
sebastiken 0:66c1aa3d198e 457
sebastiken 0:66c1aa3d198e 458 @args x[in] The 0-based x location
sebastiken 0:66c1aa3d198e 459 @args y[in] The 0-base y location
sebastiken 0:66c1aa3d198e 460 */
sebastiken 0:66c1aa3d198e 461 /**************************************************************************/
sebastiken 0:66c1aa3d198e 462 void Adafruit_RA8875::setXY(uint16_t x, uint16_t y) {
sebastiken 0:66c1aa3d198e 463 writeReg(RA8875_CURH0, x);
sebastiken 0:66c1aa3d198e 464 writeReg(RA8875_CURH1, x >> 8);
sebastiken 0:66c1aa3d198e 465 writeReg(RA8875_CURV0, y);
sebastiken 0:66c1aa3d198e 466 writeReg(RA8875_CURV1, y >> 8);
sebastiken 0:66c1aa3d198e 467 }
sebastiken 0:66c1aa3d198e 468
sebastiken 0:66c1aa3d198e 469 /**************************************************************************/
sebastiken 0:66c1aa3d198e 470 /*!
sebastiken 0:66c1aa3d198e 471 HW accelerated function to push a chunk of raw pixel data
sebastiken 0:66c1aa3d198e 472
sebastiken 0:66c1aa3d198e 473 @args num[in] The number of pixels to push
sebastiken 0:66c1aa3d198e 474 @args p[in] The pixel color to use
sebastiken 0:66c1aa3d198e 475 */
sebastiken 0:66c1aa3d198e 476 /**************************************************************************/
sebastiken 0:66c1aa3d198e 477 void Adafruit_RA8875::pushPixels(uint32_t num, uint16_t p) {
sebastiken 0:66c1aa3d198e 478 _cs = 0;
sebastiken 0:66c1aa3d198e 479
sebastiken 0:66c1aa3d198e 480 spi.write(RA8875_DATAWRITE);
sebastiken 0:66c1aa3d198e 481 while (num--) {
sebastiken 0:66c1aa3d198e 482 spi.write(p >> 8);
sebastiken 0:66c1aa3d198e 483 spi.write(p);
sebastiken 0:66c1aa3d198e 484 }
sebastiken 0:66c1aa3d198e 485 _cs = 1;
sebastiken 0:66c1aa3d198e 486 }
sebastiken 0:66c1aa3d198e 487
sebastiken 0:66c1aa3d198e 488 /**************************************************************************/
sebastiken 0:66c1aa3d198e 489 /*!
sebastiken 0:66c1aa3d198e 490
sebastiken 0:66c1aa3d198e 491 */
sebastiken 0:66c1aa3d198e 492 /**************************************************************************/
sebastiken 0:66c1aa3d198e 493 void Adafruit_RA8875::fillRect(void) {
sebastiken 0:66c1aa3d198e 494 writeCommand(RA8875_DCR);
sebastiken 0:66c1aa3d198e 495 writeData(RA8875_DCR_LINESQUTRI_STOP | RA8875_DCR_DRAWSQUARE);
sebastiken 0:66c1aa3d198e 496 writeData(RA8875_DCR_LINESQUTRI_START | RA8875_DCR_FILL | RA8875_DCR_DRAWSQUARE);
sebastiken 0:66c1aa3d198e 497 }
sebastiken 0:66c1aa3d198e 498
sebastiken 0:66c1aa3d198e 499 /**************************************************************************/
sebastiken 0:66c1aa3d198e 500 /*!
sebastiken 0:66c1aa3d198e 501 Draws a single pixel at the specified location
sebastiken 0:66c1aa3d198e 502
sebastiken 0:66c1aa3d198e 503 @args x[in] The 0-based x location
sebastiken 0:66c1aa3d198e 504 @args y[in] The 0-base y location
sebastiken 0:66c1aa3d198e 505 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 506 */
sebastiken 0:66c1aa3d198e 507 /**************************************************************************/
sebastiken 0:66c1aa3d198e 508 void Adafruit_RA8875::drawPixel(int16_t x, int16_t y, uint16_t color)
sebastiken 0:66c1aa3d198e 509 {
sebastiken 0:66c1aa3d198e 510 writeReg(RA8875_CURH0, x);
sebastiken 0:66c1aa3d198e 511 writeReg(RA8875_CURH1, x >> 8);
sebastiken 0:66c1aa3d198e 512 writeReg(RA8875_CURV0, y);
sebastiken 0:66c1aa3d198e 513 writeReg(RA8875_CURV1, y >> 8);
sebastiken 0:66c1aa3d198e 514 writeCommand(RA8875_MRWC);
sebastiken 0:66c1aa3d198e 515 _cs = 0;
sebastiken 0:66c1aa3d198e 516 spi.write(RA8875_DATAWRITE);
sebastiken 0:66c1aa3d198e 517 spi.write(color >> 8);
sebastiken 0:66c1aa3d198e 518 spi.write(color);
sebastiken 0:66c1aa3d198e 519 _cs = 1;
sebastiken 0:66c1aa3d198e 520 }
sebastiken 0:66c1aa3d198e 521
sebastiken 0:66c1aa3d198e 522 /**************************************************************************/
sebastiken 0:66c1aa3d198e 523 /*!
sebastiken 0:66c1aa3d198e 524 Draws a HW accelerated line on the display
sebastiken 0:66c1aa3d198e 525
sebastiken 0:66c1aa3d198e 526 @args x0[in] The 0-based starting x location
sebastiken 0:66c1aa3d198e 527 @args y0[in] The 0-base starting y location
sebastiken 0:66c1aa3d198e 528 @args x1[in] The 0-based ending x location
sebastiken 0:66c1aa3d198e 529 @args y1[in] The 0-base ending y location
sebastiken 0:66c1aa3d198e 530 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 531 */
sebastiken 0:66c1aa3d198e 532 /**************************************************************************/
sebastiken 0:66c1aa3d198e 533 void Adafruit_RA8875::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color)
sebastiken 0:66c1aa3d198e 534 {
sebastiken 0:66c1aa3d198e 535 /* Set X */
sebastiken 0:66c1aa3d198e 536 writeCommand(0x91);
sebastiken 0:66c1aa3d198e 537 writeData(x0);
sebastiken 0:66c1aa3d198e 538 writeCommand(0x92);
sebastiken 0:66c1aa3d198e 539 writeData(x0 >> 8);
sebastiken 0:66c1aa3d198e 540
sebastiken 0:66c1aa3d198e 541 /* Set Y */
sebastiken 0:66c1aa3d198e 542 writeCommand(0x93);
sebastiken 0:66c1aa3d198e 543 writeData(y0);
sebastiken 0:66c1aa3d198e 544 writeCommand(0x94);
sebastiken 0:66c1aa3d198e 545 writeData(y0 >> 8);
sebastiken 0:66c1aa3d198e 546
sebastiken 0:66c1aa3d198e 547 /* Set X1 */
sebastiken 0:66c1aa3d198e 548 writeCommand(0x95);
sebastiken 0:66c1aa3d198e 549 writeData(x1);
sebastiken 0:66c1aa3d198e 550 writeCommand(0x96);
sebastiken 0:66c1aa3d198e 551 writeData((x1) >> 8);
sebastiken 0:66c1aa3d198e 552
sebastiken 0:66c1aa3d198e 553 /* Set Y1 */
sebastiken 0:66c1aa3d198e 554 writeCommand(0x97);
sebastiken 0:66c1aa3d198e 555 writeData(y1);
sebastiken 0:66c1aa3d198e 556 writeCommand(0x98);
sebastiken 0:66c1aa3d198e 557 writeData((y1) >> 8);
sebastiken 0:66c1aa3d198e 558
sebastiken 0:66c1aa3d198e 559 /* Set Color */
sebastiken 0:66c1aa3d198e 560 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 561 writeData((color & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 562 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 563 writeData((color & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 564 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 565 writeData((color & 0x001f));
sebastiken 0:66c1aa3d198e 566
sebastiken 0:66c1aa3d198e 567 /* Draw! */
sebastiken 0:66c1aa3d198e 568 writeCommand(RA8875_DCR);
sebastiken 0:66c1aa3d198e 569 writeData(0x80);
sebastiken 0:66c1aa3d198e 570
sebastiken 0:66c1aa3d198e 571 /* Wait for the command to finish */
sebastiken 0:66c1aa3d198e 572 waitPoll(RA8875_DCR, RA8875_DCR_LINESQUTRI_STATUS);
sebastiken 0:66c1aa3d198e 573 }
sebastiken 0:66c1aa3d198e 574
sebastiken 0:66c1aa3d198e 575 /**************************************************************************/
sebastiken 0:66c1aa3d198e 576 /*!
sebastiken 0:66c1aa3d198e 577
sebastiken 0:66c1aa3d198e 578 */
sebastiken 0:66c1aa3d198e 579 /**************************************************************************/
sebastiken 0:66c1aa3d198e 580 void Adafruit_RA8875::drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color)
sebastiken 0:66c1aa3d198e 581 {
sebastiken 0:66c1aa3d198e 582 drawLine(x, y, x, y+h, color);
sebastiken 0:66c1aa3d198e 583 }
sebastiken 0:66c1aa3d198e 584
sebastiken 0:66c1aa3d198e 585 /**************************************************************************/
sebastiken 0:66c1aa3d198e 586 /*!
sebastiken 0:66c1aa3d198e 587
sebastiken 0:66c1aa3d198e 588 */
sebastiken 0:66c1aa3d198e 589 /**************************************************************************/
sebastiken 0:66c1aa3d198e 590 void Adafruit_RA8875::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color)
sebastiken 0:66c1aa3d198e 591 {
sebastiken 0:66c1aa3d198e 592 drawLine(x, y, x+w, y, color);
sebastiken 0:66c1aa3d198e 593 }
sebastiken 0:66c1aa3d198e 594
sebastiken 0:66c1aa3d198e 595 /**************************************************************************/
sebastiken 0:66c1aa3d198e 596 /*!
sebastiken 0:66c1aa3d198e 597 Draws a HW accelerated rectangle on the display
sebastiken 0:66c1aa3d198e 598
sebastiken 0:66c1aa3d198e 599 @args x[in] The 0-based x location of the top-right corner
sebastiken 0:66c1aa3d198e 600 @args y[in] The 0-based y location of the top-right corner
sebastiken 0:66c1aa3d198e 601 @args w[in] The rectangle width
sebastiken 0:66c1aa3d198e 602 @args h[in] The rectangle height
sebastiken 0:66c1aa3d198e 603 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 604 */
sebastiken 0:66c1aa3d198e 605 /**************************************************************************/
sebastiken 0:66c1aa3d198e 606 /*
sebastiken 0:66c1aa3d198e 607 void Adafruit_RA8875::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color)
sebastiken 0:66c1aa3d198e 608 {
sebastiken 0:66c1aa3d198e 609 rectHelper(x, y, x+w, y+h, color, false);
sebastiken 0:66c1aa3d198e 610 }
sebastiken 0:66c1aa3d198e 611 */
sebastiken 0:66c1aa3d198e 612 /**************************************************************************/
sebastiken 0:66c1aa3d198e 613 /*!
sebastiken 0:66c1aa3d198e 614 Draws a HW accelerated filled rectangle on the display
sebastiken 0:66c1aa3d198e 615
sebastiken 0:66c1aa3d198e 616 @args x[in] The 0-based x location of the top-right corner
sebastiken 0:66c1aa3d198e 617 @args y[in] The 0-based y location of the top-right corner
sebastiken 0:66c1aa3d198e 618 @args w[in] The rectangle width
sebastiken 0:66c1aa3d198e 619 @args h[in] The rectangle height
sebastiken 0:66c1aa3d198e 620 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 621 */
sebastiken 0:66c1aa3d198e 622 /**************************************************************************/
sebastiken 0:66c1aa3d198e 623 /*
sebastiken 0:66c1aa3d198e 624 void Adafruit_RA8875::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color)
sebastiken 0:66c1aa3d198e 625 {
sebastiken 0:66c1aa3d198e 626 rectHelper(x, y, x+w, y+h, color, true);
sebastiken 0:66c1aa3d198e 627 }
sebastiken 0:66c1aa3d198e 628 */
sebastiken 0:66c1aa3d198e 629 /**************************************************************************/
sebastiken 0:66c1aa3d198e 630 /*!
sebastiken 0:66c1aa3d198e 631 Fills the screen with the spefied RGB565 color
sebastiken 0:66c1aa3d198e 632
sebastiken 0:66c1aa3d198e 633 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 634 */
sebastiken 0:66c1aa3d198e 635 /**************************************************************************/
sebastiken 0:66c1aa3d198e 636
sebastiken 0:66c1aa3d198e 637 void Adafruit_RA8875::fillScreen(uint16_t color)
sebastiken 0:66c1aa3d198e 638 {
sebastiken 0:66c1aa3d198e 639 rectHelper(0, 0, _width-1, _height-1, color, true);
sebastiken 0:66c1aa3d198e 640 }
sebastiken 0:66c1aa3d198e 641
sebastiken 0:66c1aa3d198e 642 /**************************************************************************/
sebastiken 0:66c1aa3d198e 643 /*!
sebastiken 0:66c1aa3d198e 644 Draws a HW accelerated circle on the display
sebastiken 0:66c1aa3d198e 645
sebastiken 0:66c1aa3d198e 646 @args x[in] The 0-based x location of the center of the circle
sebastiken 0:66c1aa3d198e 647 @args y[in] The 0-based y location of the center of the circle
sebastiken 0:66c1aa3d198e 648 @args w[in] The circle's radius
sebastiken 0:66c1aa3d198e 649 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 650 */
sebastiken 0:66c1aa3d198e 651 /**************************************************************************/
sebastiken 0:66c1aa3d198e 652 /*
sebastiken 0:66c1aa3d198e 653 void Adafruit_RA8875::drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color)
sebastiken 0:66c1aa3d198e 654 {
sebastiken 0:66c1aa3d198e 655 circleHelper(x0, y0, r, color, false);
sebastiken 0:66c1aa3d198e 656 }
sebastiken 0:66c1aa3d198e 657 */
sebastiken 0:66c1aa3d198e 658 /**************************************************************************/
sebastiken 0:66c1aa3d198e 659 /*!
sebastiken 0:66c1aa3d198e 660 Draws a HW accelerated filled circle on the display
sebastiken 0:66c1aa3d198e 661
sebastiken 0:66c1aa3d198e 662 @args x[in] The 0-based x location of the center of the circle
sebastiken 0:66c1aa3d198e 663 @args y[in] The 0-based y location of the center of the circle
sebastiken 0:66c1aa3d198e 664 @args w[in] The circle's radius
sebastiken 0:66c1aa3d198e 665 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 666 */
sebastiken 0:66c1aa3d198e 667 /**************************************************************************/
sebastiken 0:66c1aa3d198e 668 /*
sebastiken 0:66c1aa3d198e 669 void Adafruit_RA8875::fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color)
sebastiken 0:66c1aa3d198e 670 {
sebastiken 0:66c1aa3d198e 671 circleHelper(x0, y0, r, color, true);
sebastiken 0:66c1aa3d198e 672 }
sebastiken 0:66c1aa3d198e 673 */
sebastiken 0:66c1aa3d198e 674 /**************************************************************************/
sebastiken 0:66c1aa3d198e 675 /*!
sebastiken 0:66c1aa3d198e 676 Draws a HW accelerated triangle on the display
sebastiken 0:66c1aa3d198e 677
sebastiken 0:66c1aa3d198e 678 @args x0[in] The 0-based x location of point 0 on the triangle
sebastiken 0:66c1aa3d198e 679 @args y0[in] The 0-based y location of point 0 on the triangle
sebastiken 0:66c1aa3d198e 680 @args x1[in] The 0-based x location of point 1 on the triangle
sebastiken 0:66c1aa3d198e 681 @args y1[in] The 0-based y location of point 1 on the triangle
sebastiken 0:66c1aa3d198e 682 @args x2[in] The 0-based x location of point 2 on the triangle
sebastiken 0:66c1aa3d198e 683 @args y2[in] The 0-based y location of point 2 on the triangle
sebastiken 0:66c1aa3d198e 684 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 685 */
sebastiken 0:66c1aa3d198e 686 /**************************************************************************/
sebastiken 0:66c1aa3d198e 687 /*
sebastiken 0:66c1aa3d198e 688 void Adafruit_RA8875::drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color)
sebastiken 0:66c1aa3d198e 689 {
sebastiken 0:66c1aa3d198e 690 triangleHelper(x0, y0, x1, y1, x2, y2, color, false);
sebastiken 0:66c1aa3d198e 691 }
sebastiken 0:66c1aa3d198e 692 */
sebastiken 0:66c1aa3d198e 693 /**************************************************************************/
sebastiken 0:66c1aa3d198e 694 /*!
sebastiken 0:66c1aa3d198e 695 Draws a HW accelerated filled triangle on the display
sebastiken 0:66c1aa3d198e 696
sebastiken 0:66c1aa3d198e 697 @args x0[in] The 0-based x location of point 0 on the triangle
sebastiken 0:66c1aa3d198e 698 @args y0[in] The 0-based y location of point 0 on the triangle
sebastiken 0:66c1aa3d198e 699 @args x1[in] The 0-based x location of point 1 on the triangle
sebastiken 0:66c1aa3d198e 700 @args y1[in] The 0-based y location of point 1 on the triangle
sebastiken 0:66c1aa3d198e 701 @args x2[in] The 0-based x location of point 2 on the triangle
sebastiken 0:66c1aa3d198e 702 @args y2[in] The 0-based y location of point 2 on the triangle
sebastiken 0:66c1aa3d198e 703 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 704 */
sebastiken 0:66c1aa3d198e 705 /**************************************************************************/
sebastiken 0:66c1aa3d198e 706 /*
sebastiken 0:66c1aa3d198e 707 void Adafruit_RA8875::fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color)
sebastiken 0:66c1aa3d198e 708 {
sebastiken 0:66c1aa3d198e 709 triangleHelper(x0, y0, x1, y1, x2, y2, color, true);
sebastiken 0:66c1aa3d198e 710 }
sebastiken 0:66c1aa3d198e 711 */
sebastiken 0:66c1aa3d198e 712 /**************************************************************************/
sebastiken 0:66c1aa3d198e 713 /*!
sebastiken 0:66c1aa3d198e 714 Draws a HW accelerated ellipse on the display
sebastiken 0:66c1aa3d198e 715
sebastiken 0:66c1aa3d198e 716 @args xCenter[in] The 0-based x location of the ellipse's center
sebastiken 0:66c1aa3d198e 717 @args yCenter[in] The 0-based y location of the ellipse's center
sebastiken 0:66c1aa3d198e 718 @args longAxis[in] The size in pixels of the ellipse's long axis
sebastiken 0:66c1aa3d198e 719 @args shortAxis[in] The size in pixels of the ellipse's short axis
sebastiken 0:66c1aa3d198e 720 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 721 */
sebastiken 0:66c1aa3d198e 722 /**************************************************************************/
sebastiken 0:66c1aa3d198e 723 /*
sebastiken 0:66c1aa3d198e 724 void Adafruit_RA8875::drawEllipse(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint16_t color)
sebastiken 0:66c1aa3d198e 725 {
sebastiken 0:66c1aa3d198e 726 ellipseHelper(xCenter, yCenter, longAxis, shortAxis, color, false);
sebastiken 0:66c1aa3d198e 727 }
sebastiken 0:66c1aa3d198e 728 */
sebastiken 0:66c1aa3d198e 729 /**************************************************************************/
sebastiken 0:66c1aa3d198e 730 /*!
sebastiken 0:66c1aa3d198e 731 Draws a HW accelerated filled ellipse on the display
sebastiken 0:66c1aa3d198e 732
sebastiken 0:66c1aa3d198e 733 @args xCenter[in] The 0-based x location of the ellipse's center
sebastiken 0:66c1aa3d198e 734 @args yCenter[in] The 0-based y location of the ellipse's center
sebastiken 0:66c1aa3d198e 735 @args longAxis[in] The size in pixels of the ellipse's long axis
sebastiken 0:66c1aa3d198e 736 @args shortAxis[in] The size in pixels of the ellipse's short axis
sebastiken 0:66c1aa3d198e 737 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 738 */
sebastiken 0:66c1aa3d198e 739 /**************************************************************************/
sebastiken 0:66c1aa3d198e 740 /*
sebastiken 0:66c1aa3d198e 741 void Adafruit_RA8875::fillEllipse(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint16_t color)
sebastiken 0:66c1aa3d198e 742 {
sebastiken 0:66c1aa3d198e 743 ellipseHelper(xCenter, yCenter, longAxis, shortAxis, color, true);
sebastiken 0:66c1aa3d198e 744 }
sebastiken 0:66c1aa3d198e 745 */
sebastiken 0:66c1aa3d198e 746 /**************************************************************************/
sebastiken 0:66c1aa3d198e 747 /*!
sebastiken 0:66c1aa3d198e 748 Draws a HW accelerated curve on the display
sebastiken 0:66c1aa3d198e 749
sebastiken 0:66c1aa3d198e 750 @args xCenter[in] The 0-based x location of the ellipse's center
sebastiken 0:66c1aa3d198e 751 @args yCenter[in] The 0-based y location of the ellipse's center
sebastiken 0:66c1aa3d198e 752 @args longAxis[in] The size in pixels of the ellipse's long axis
sebastiken 0:66c1aa3d198e 753 @args shortAxis[in] The size in pixels of the ellipse's short axis
sebastiken 0:66c1aa3d198e 754 @args curvePart[in] The corner to draw, where in clock-wise motion:
sebastiken 0:66c1aa3d198e 755 0 = 180-270°
sebastiken 0:66c1aa3d198e 756 1 = 270-0°
sebastiken 0:66c1aa3d198e 757 2 = 0-90°
sebastiken 0:66c1aa3d198e 758 3 = 90-180°
sebastiken 0:66c1aa3d198e 759 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 760 */
sebastiken 0:66c1aa3d198e 761 /**************************************************************************/
sebastiken 0:66c1aa3d198e 762 /*
sebastiken 0:66c1aa3d198e 763 void Adafruit_RA8875::drawCurve(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint8_t curvePart, uint16_t color)
sebastiken 0:66c1aa3d198e 764 {
sebastiken 0:66c1aa3d198e 765 curveHelper(xCenter, yCenter, longAxis, shortAxis, curvePart, color, false);
sebastiken 0:66c1aa3d198e 766 }
sebastiken 0:66c1aa3d198e 767 */
sebastiken 0:66c1aa3d198e 768 /**************************************************************************/
sebastiken 0:66c1aa3d198e 769 /*!
sebastiken 0:66c1aa3d198e 770 Draws a HW accelerated filled curve on the display
sebastiken 0:66c1aa3d198e 771
sebastiken 0:66c1aa3d198e 772 @args xCenter[in] The 0-based x location of the ellipse's center
sebastiken 0:66c1aa3d198e 773 @args yCenter[in] The 0-based y location of the ellipse's center
sebastiken 0:66c1aa3d198e 774 @args longAxis[in] The size in pixels of the ellipse's long axis
sebastiken 0:66c1aa3d198e 775 @args shortAxis[in] The size in pixels of the ellipse's short axis
sebastiken 0:66c1aa3d198e 776 @args curvePart[in] The corner to draw, where in clock-wise motion:
sebastiken 0:66c1aa3d198e 777 0 = 180-270°
sebastiken 0:66c1aa3d198e 778 1 = 270-0°
sebastiken 0:66c1aa3d198e 779 2 = 0-90°
sebastiken 0:66c1aa3d198e 780 3 = 90-180°
sebastiken 0:66c1aa3d198e 781 @args color[in] The RGB565 color to use when drawing the pixel
sebastiken 0:66c1aa3d198e 782 */
sebastiken 0:66c1aa3d198e 783 /**************************************************************************/
sebastiken 0:66c1aa3d198e 784 /*
sebastiken 0:66c1aa3d198e 785 void Adafruit_RA8875::fillCurve(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint8_t curvePart, uint16_t color)
sebastiken 0:66c1aa3d198e 786 {
sebastiken 0:66c1aa3d198e 787 curveHelper(xCenter, yCenter, longAxis, shortAxis, curvePart, color, true);
sebastiken 0:66c1aa3d198e 788 }
sebastiken 0:66c1aa3d198e 789 */
sebastiken 0:66c1aa3d198e 790 /**************************************************************************/
sebastiken 0:66c1aa3d198e 791 /*!
sebastiken 0:66c1aa3d198e 792 Helper function for higher level circle drawing code
sebastiken 0:66c1aa3d198e 793 */
sebastiken 0:66c1aa3d198e 794 /**************************************************************************/
sebastiken 0:66c1aa3d198e 795
sebastiken 0:66c1aa3d198e 796 void Adafruit_RA8875::circleHelper(int16_t x0, int16_t y0, int16_t r, uint16_t color, bool filled)
sebastiken 0:66c1aa3d198e 797 {
sebastiken 0:66c1aa3d198e 798 /* Set X */
sebastiken 0:66c1aa3d198e 799 writeCommand(0x99);
sebastiken 0:66c1aa3d198e 800 writeData(x0);
sebastiken 0:66c1aa3d198e 801 writeCommand(0x9a);
sebastiken 0:66c1aa3d198e 802 writeData(x0 >> 8);
sebastiken 0:66c1aa3d198e 803
sebastiken 0:66c1aa3d198e 804 /* Set Y */
sebastiken 0:66c1aa3d198e 805 writeCommand(0x9b);
sebastiken 0:66c1aa3d198e 806 writeData(y0);
sebastiken 0:66c1aa3d198e 807 writeCommand(0x9c);
sebastiken 0:66c1aa3d198e 808 writeData(y0 >> 8);
sebastiken 0:66c1aa3d198e 809
sebastiken 0:66c1aa3d198e 810 /* Set Radius */
sebastiken 0:66c1aa3d198e 811 writeCommand(0x9d);
sebastiken 0:66c1aa3d198e 812 writeData(r);
sebastiken 0:66c1aa3d198e 813
sebastiken 0:66c1aa3d198e 814 /* Set Color */
sebastiken 0:66c1aa3d198e 815 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 816 writeData((color & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 817 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 818 writeData((color & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 819 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 820 writeData((color & 0x001f));
sebastiken 0:66c1aa3d198e 821
sebastiken 0:66c1aa3d198e 822 /* Draw! */
sebastiken 0:66c1aa3d198e 823 writeCommand(RA8875_DCR);
sebastiken 0:66c1aa3d198e 824 if (filled)
sebastiken 0:66c1aa3d198e 825 {
sebastiken 0:66c1aa3d198e 826 writeData(RA8875_DCR_CIRCLE_START | RA8875_DCR_FILL);
sebastiken 0:66c1aa3d198e 827 }
sebastiken 0:66c1aa3d198e 828 else
sebastiken 0:66c1aa3d198e 829 {
sebastiken 0:66c1aa3d198e 830 writeData(RA8875_DCR_CIRCLE_START | RA8875_DCR_NOFILL);
sebastiken 0:66c1aa3d198e 831 }
sebastiken 0:66c1aa3d198e 832
sebastiken 0:66c1aa3d198e 833 /* Wait for the command to finish */
sebastiken 0:66c1aa3d198e 834 waitPoll(RA8875_DCR, RA8875_DCR_CIRCLE_STATUS);
sebastiken 0:66c1aa3d198e 835 }
sebastiken 0:66c1aa3d198e 836
sebastiken 0:66c1aa3d198e 837 /**************************************************************************/
sebastiken 0:66c1aa3d198e 838 /*!
sebastiken 0:66c1aa3d198e 839 Helper function for higher level rectangle drawing code
sebastiken 0:66c1aa3d198e 840 */
sebastiken 0:66c1aa3d198e 841 /**************************************************************************/
sebastiken 0:66c1aa3d198e 842 void Adafruit_RA8875::rectHelper(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color, bool filled)
sebastiken 0:66c1aa3d198e 843 {
sebastiken 0:66c1aa3d198e 844 /* Set X */
sebastiken 0:66c1aa3d198e 845 writeCommand(0x91);
sebastiken 0:66c1aa3d198e 846 writeData(x);
sebastiken 0:66c1aa3d198e 847 writeCommand(0x92);
sebastiken 0:66c1aa3d198e 848 writeData(x >> 8);
sebastiken 0:66c1aa3d198e 849
sebastiken 0:66c1aa3d198e 850 /* Set Y */
sebastiken 0:66c1aa3d198e 851 writeCommand(0x93);
sebastiken 0:66c1aa3d198e 852 writeData(y);
sebastiken 0:66c1aa3d198e 853 writeCommand(0x94);
sebastiken 0:66c1aa3d198e 854 writeData(y >> 8);
sebastiken 0:66c1aa3d198e 855
sebastiken 0:66c1aa3d198e 856 /* Set X1 */
sebastiken 0:66c1aa3d198e 857 writeCommand(0x95);
sebastiken 0:66c1aa3d198e 858 writeData(w);
sebastiken 0:66c1aa3d198e 859 writeCommand(0x96);
sebastiken 0:66c1aa3d198e 860 writeData((w) >> 8);
sebastiken 0:66c1aa3d198e 861
sebastiken 0:66c1aa3d198e 862 /* Set Y1 */
sebastiken 0:66c1aa3d198e 863 writeCommand(0x97);
sebastiken 0:66c1aa3d198e 864 writeData(h);
sebastiken 0:66c1aa3d198e 865 writeCommand(0x98);
sebastiken 0:66c1aa3d198e 866 writeData((h) >> 8);
sebastiken 0:66c1aa3d198e 867
sebastiken 0:66c1aa3d198e 868 /* Set Color */
sebastiken 0:66c1aa3d198e 869 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 870 writeData((color & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 871 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 872 writeData((color & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 873 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 874 writeData((color & 0x001f));
sebastiken 0:66c1aa3d198e 875
sebastiken 0:66c1aa3d198e 876 /* Draw! */
sebastiken 0:66c1aa3d198e 877 writeCommand(RA8875_DCR);
sebastiken 0:66c1aa3d198e 878 if (filled)
sebastiken 0:66c1aa3d198e 879 {
sebastiken 0:66c1aa3d198e 880 writeData(0xB0);
sebastiken 0:66c1aa3d198e 881 }
sebastiken 0:66c1aa3d198e 882 else
sebastiken 0:66c1aa3d198e 883 {
sebastiken 0:66c1aa3d198e 884 writeData(0x90);
sebastiken 0:66c1aa3d198e 885 }
sebastiken 0:66c1aa3d198e 886
sebastiken 0:66c1aa3d198e 887 /* Wait for the command to finish */
sebastiken 0:66c1aa3d198e 888 waitPoll(RA8875_DCR, RA8875_DCR_LINESQUTRI_STATUS);
sebastiken 0:66c1aa3d198e 889 }
sebastiken 0:66c1aa3d198e 890
sebastiken 0:66c1aa3d198e 891 /**************************************************************************/
sebastiken 0:66c1aa3d198e 892 /*!
sebastiken 0:66c1aa3d198e 893 Helper function for higher level triangle drawing code
sebastiken 0:66c1aa3d198e 894 */
sebastiken 0:66c1aa3d198e 895 /**************************************************************************/
sebastiken 0:66c1aa3d198e 896 void Adafruit_RA8875::triangleHelper(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color, bool filled)
sebastiken 0:66c1aa3d198e 897 {
sebastiken 0:66c1aa3d198e 898 /* Set Point 0 */
sebastiken 0:66c1aa3d198e 899 writeCommand(0x91);
sebastiken 0:66c1aa3d198e 900 writeData(x0);
sebastiken 0:66c1aa3d198e 901 writeCommand(0x92);
sebastiken 0:66c1aa3d198e 902 writeData(x0 >> 8);
sebastiken 0:66c1aa3d198e 903 writeCommand(0x93);
sebastiken 0:66c1aa3d198e 904 writeData(y0);
sebastiken 0:66c1aa3d198e 905 writeCommand(0x94);
sebastiken 0:66c1aa3d198e 906 writeData(y0 >> 8);
sebastiken 0:66c1aa3d198e 907
sebastiken 0:66c1aa3d198e 908 /* Set Point 1 */
sebastiken 0:66c1aa3d198e 909 writeCommand(0x95);
sebastiken 0:66c1aa3d198e 910 writeData(x1);
sebastiken 0:66c1aa3d198e 911 writeCommand(0x96);
sebastiken 0:66c1aa3d198e 912 writeData(x1 >> 8);
sebastiken 0:66c1aa3d198e 913 writeCommand(0x97);
sebastiken 0:66c1aa3d198e 914 writeData(y1);
sebastiken 0:66c1aa3d198e 915 writeCommand(0x98);
sebastiken 0:66c1aa3d198e 916 writeData(y1 >> 8);
sebastiken 0:66c1aa3d198e 917
sebastiken 0:66c1aa3d198e 918 /* Set Point 2 */
sebastiken 0:66c1aa3d198e 919 writeCommand(0xA9);
sebastiken 0:66c1aa3d198e 920 writeData(x2);
sebastiken 0:66c1aa3d198e 921 writeCommand(0xAA);
sebastiken 0:66c1aa3d198e 922 writeData(x2 >> 8);
sebastiken 0:66c1aa3d198e 923 writeCommand(0xAB);
sebastiken 0:66c1aa3d198e 924 writeData(y2);
sebastiken 0:66c1aa3d198e 925 writeCommand(0xAC);
sebastiken 0:66c1aa3d198e 926 writeData(y2 >> 8);
sebastiken 0:66c1aa3d198e 927
sebastiken 0:66c1aa3d198e 928 /* Set Color */
sebastiken 0:66c1aa3d198e 929 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 930 writeData((color & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 931 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 932 writeData((color & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 933 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 934 writeData((color & 0x001f));
sebastiken 0:66c1aa3d198e 935
sebastiken 0:66c1aa3d198e 936 /* Draw! */
sebastiken 0:66c1aa3d198e 937 writeCommand(RA8875_DCR);
sebastiken 0:66c1aa3d198e 938 if (filled)
sebastiken 0:66c1aa3d198e 939 {
sebastiken 0:66c1aa3d198e 940 writeData(0xA1);
sebastiken 0:66c1aa3d198e 941 }
sebastiken 0:66c1aa3d198e 942 else
sebastiken 0:66c1aa3d198e 943 {
sebastiken 0:66c1aa3d198e 944 writeData(0x81);
sebastiken 0:66c1aa3d198e 945 }
sebastiken 0:66c1aa3d198e 946
sebastiken 0:66c1aa3d198e 947 /* Wait for the command to finish */
sebastiken 0:66c1aa3d198e 948 waitPoll(RA8875_DCR, RA8875_DCR_LINESQUTRI_STATUS);
sebastiken 0:66c1aa3d198e 949 }
sebastiken 0:66c1aa3d198e 950
sebastiken 0:66c1aa3d198e 951 /**************************************************************************/
sebastiken 0:66c1aa3d198e 952 /*!
sebastiken 0:66c1aa3d198e 953 Helper function for higher level ellipse drawing code
sebastiken 0:66c1aa3d198e 954 */
sebastiken 0:66c1aa3d198e 955 /**************************************************************************/
sebastiken 0:66c1aa3d198e 956 void Adafruit_RA8875::ellipseHelper(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint16_t color, bool filled)
sebastiken 0:66c1aa3d198e 957 {
sebastiken 0:66c1aa3d198e 958 /* Set Center Point */
sebastiken 0:66c1aa3d198e 959 writeCommand(0xA5);
sebastiken 0:66c1aa3d198e 960 writeData(xCenter);
sebastiken 0:66c1aa3d198e 961 writeCommand(0xA6);
sebastiken 0:66c1aa3d198e 962 writeData(xCenter >> 8);
sebastiken 0:66c1aa3d198e 963 writeCommand(0xA7);
sebastiken 0:66c1aa3d198e 964 writeData(yCenter);
sebastiken 0:66c1aa3d198e 965 writeCommand(0xA8);
sebastiken 0:66c1aa3d198e 966 writeData(yCenter >> 8);
sebastiken 0:66c1aa3d198e 967
sebastiken 0:66c1aa3d198e 968 /* Set Long and Short Axis */
sebastiken 0:66c1aa3d198e 969 writeCommand(0xA1);
sebastiken 0:66c1aa3d198e 970 writeData(longAxis);
sebastiken 0:66c1aa3d198e 971 writeCommand(0xA2);
sebastiken 0:66c1aa3d198e 972 writeData(longAxis >> 8);
sebastiken 0:66c1aa3d198e 973 writeCommand(0xA3);
sebastiken 0:66c1aa3d198e 974 writeData(shortAxis);
sebastiken 0:66c1aa3d198e 975 writeCommand(0xA4);
sebastiken 0:66c1aa3d198e 976 writeData(shortAxis >> 8);
sebastiken 0:66c1aa3d198e 977
sebastiken 0:66c1aa3d198e 978 /* Set Color */
sebastiken 0:66c1aa3d198e 979 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 980 writeData((color & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 981 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 982 writeData((color & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 983 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 984 writeData((color & 0x001f));
sebastiken 0:66c1aa3d198e 985
sebastiken 0:66c1aa3d198e 986 /* Draw! */
sebastiken 0:66c1aa3d198e 987 writeCommand(0xA0);
sebastiken 0:66c1aa3d198e 988 if (filled)
sebastiken 0:66c1aa3d198e 989 {
sebastiken 0:66c1aa3d198e 990 writeData(0xC0);
sebastiken 0:66c1aa3d198e 991 }
sebastiken 0:66c1aa3d198e 992 else
sebastiken 0:66c1aa3d198e 993 {
sebastiken 0:66c1aa3d198e 994 writeData(0x80);
sebastiken 0:66c1aa3d198e 995 }
sebastiken 0:66c1aa3d198e 996
sebastiken 0:66c1aa3d198e 997 /* Wait for the command to finish */
sebastiken 0:66c1aa3d198e 998 waitPoll(RA8875_ELLIPSE, RA8875_ELLIPSE_STATUS);
sebastiken 0:66c1aa3d198e 999 }
sebastiken 0:66c1aa3d198e 1000
sebastiken 0:66c1aa3d198e 1001 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1002 /*!
sebastiken 0:66c1aa3d198e 1003 Helper function for higher level curve drawing code
sebastiken 0:66c1aa3d198e 1004 */
sebastiken 0:66c1aa3d198e 1005 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1006 void Adafruit_RA8875::curveHelper(int16_t xCenter, int16_t yCenter, int16_t longAxis, int16_t shortAxis, uint8_t curvePart, uint16_t color, bool filled)
sebastiken 0:66c1aa3d198e 1007 {
sebastiken 0:66c1aa3d198e 1008 /* Set Center Point */
sebastiken 0:66c1aa3d198e 1009 writeCommand(0xA5);
sebastiken 0:66c1aa3d198e 1010 writeData(xCenter);
sebastiken 0:66c1aa3d198e 1011 writeCommand(0xA6);
sebastiken 0:66c1aa3d198e 1012 writeData(xCenter >> 8);
sebastiken 0:66c1aa3d198e 1013 writeCommand(0xA7);
sebastiken 0:66c1aa3d198e 1014 writeData(yCenter);
sebastiken 0:66c1aa3d198e 1015 writeCommand(0xA8);
sebastiken 0:66c1aa3d198e 1016 writeData(yCenter >> 8);
sebastiken 0:66c1aa3d198e 1017
sebastiken 0:66c1aa3d198e 1018 /* Set Long and Short Axis */
sebastiken 0:66c1aa3d198e 1019 writeCommand(0xA1);
sebastiken 0:66c1aa3d198e 1020 writeData(longAxis);
sebastiken 0:66c1aa3d198e 1021 writeCommand(0xA2);
sebastiken 0:66c1aa3d198e 1022 writeData(longAxis >> 8);
sebastiken 0:66c1aa3d198e 1023 writeCommand(0xA3);
sebastiken 0:66c1aa3d198e 1024 writeData(shortAxis);
sebastiken 0:66c1aa3d198e 1025 writeCommand(0xA4);
sebastiken 0:66c1aa3d198e 1026 writeData(shortAxis >> 8);
sebastiken 0:66c1aa3d198e 1027
sebastiken 0:66c1aa3d198e 1028 /* Set Color */
sebastiken 0:66c1aa3d198e 1029 writeCommand(0x63);
sebastiken 0:66c1aa3d198e 1030 writeData((color & 0xf800) >> 11);
sebastiken 0:66c1aa3d198e 1031 writeCommand(0x64);
sebastiken 0:66c1aa3d198e 1032 writeData((color & 0x07e0) >> 5);
sebastiken 0:66c1aa3d198e 1033 writeCommand(0x65);
sebastiken 0:66c1aa3d198e 1034 writeData((color & 0x001f));
sebastiken 0:66c1aa3d198e 1035
sebastiken 0:66c1aa3d198e 1036 /* Draw! */
sebastiken 0:66c1aa3d198e 1037 writeCommand(0xA0);
sebastiken 0:66c1aa3d198e 1038 if (filled)
sebastiken 0:66c1aa3d198e 1039 {
sebastiken 0:66c1aa3d198e 1040 writeData(0xD0 | (curvePart & 0x03));
sebastiken 0:66c1aa3d198e 1041 }
sebastiken 0:66c1aa3d198e 1042 else
sebastiken 0:66c1aa3d198e 1043 {
sebastiken 0:66c1aa3d198e 1044 writeData(0x90 | (curvePart & 0x03));
sebastiken 0:66c1aa3d198e 1045 }
sebastiken 0:66c1aa3d198e 1046
sebastiken 0:66c1aa3d198e 1047 /* Wait for the command to finish */
sebastiken 0:66c1aa3d198e 1048 waitPoll(RA8875_ELLIPSE, RA8875_ELLIPSE_STATUS);
sebastiken 0:66c1aa3d198e 1049 }
sebastiken 0:66c1aa3d198e 1050
sebastiken 0:66c1aa3d198e 1051 /************************* Mid Level ***********************************/
sebastiken 0:66c1aa3d198e 1052
sebastiken 0:66c1aa3d198e 1053 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1054 /*!
sebastiken 0:66c1aa3d198e 1055
sebastiken 0:66c1aa3d198e 1056 */
sebastiken 0:66c1aa3d198e 1057 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1058 void Adafruit_RA8875::GPIOX(bool on) {
sebastiken 0:66c1aa3d198e 1059 if (on)
sebastiken 0:66c1aa3d198e 1060 writeReg(RA8875_GPIOX, 1);
sebastiken 0:66c1aa3d198e 1061 else
sebastiken 0:66c1aa3d198e 1062 writeReg(RA8875_GPIOX, 0);
sebastiken 0:66c1aa3d198e 1063 }
sebastiken 0:66c1aa3d198e 1064
sebastiken 0:66c1aa3d198e 1065 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1066 /*!
sebastiken 0:66c1aa3d198e 1067
sebastiken 0:66c1aa3d198e 1068 */
sebastiken 0:66c1aa3d198e 1069 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1070 void Adafruit_RA8875::PWM1out(uint8_t p) {
sebastiken 0:66c1aa3d198e 1071 writeReg(RA8875_P1DCR, p);
sebastiken 0:66c1aa3d198e 1072 }
sebastiken 0:66c1aa3d198e 1073
sebastiken 0:66c1aa3d198e 1074 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1075 /*!
sebastiken 0:66c1aa3d198e 1076
sebastiken 0:66c1aa3d198e 1077 */
sebastiken 0:66c1aa3d198e 1078 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1079 void Adafruit_RA8875::PWM2out(uint8_t p) {
sebastiken 0:66c1aa3d198e 1080 writeReg(RA8875_P2DCR, p);
sebastiken 0:66c1aa3d198e 1081 }
sebastiken 0:66c1aa3d198e 1082
sebastiken 0:66c1aa3d198e 1083 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1084 /*!
sebastiken 0:66c1aa3d198e 1085
sebastiken 0:66c1aa3d198e 1086 */
sebastiken 0:66c1aa3d198e 1087 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1088 void Adafruit_RA8875::PWM1config(bool on, uint8_t clock) {
sebastiken 0:66c1aa3d198e 1089 if (on) {
sebastiken 0:66c1aa3d198e 1090 writeReg(RA8875_P1CR, RA8875_P1CR_ENABLE | (clock & 0xF));
sebastiken 0:66c1aa3d198e 1091 } else {
sebastiken 0:66c1aa3d198e 1092 writeReg(RA8875_P1CR, RA8875_P1CR_DISABLE | (clock & 0xF));
sebastiken 0:66c1aa3d198e 1093 }
sebastiken 0:66c1aa3d198e 1094 }
sebastiken 0:66c1aa3d198e 1095
sebastiken 0:66c1aa3d198e 1096 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1097 /*!
sebastiken 0:66c1aa3d198e 1098
sebastiken 0:66c1aa3d198e 1099 */
sebastiken 0:66c1aa3d198e 1100 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1101 void Adafruit_RA8875::PWM2config(bool on, uint8_t clock) {
sebastiken 0:66c1aa3d198e 1102 if (on) {
sebastiken 0:66c1aa3d198e 1103 writeReg(RA8875_P2CR, RA8875_P2CR_ENABLE | (clock & 0xF));
sebastiken 0:66c1aa3d198e 1104 } else {
sebastiken 0:66c1aa3d198e 1105 writeReg(RA8875_P2CR, RA8875_P2CR_DISABLE | (clock & 0xF));
sebastiken 0:66c1aa3d198e 1106 }
sebastiken 0:66c1aa3d198e 1107 }
sebastiken 0:66c1aa3d198e 1108
sebastiken 0:66c1aa3d198e 1109 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1110 /*!
sebastiken 0:66c1aa3d198e 1111 Enables or disables the on-chip touch screen controller
sebastiken 0:66c1aa3d198e 1112 */
sebastiken 0:66c1aa3d198e 1113 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1114 void Adafruit_RA8875::touchEnable(bool on)
sebastiken 0:66c1aa3d198e 1115 {
sebastiken 0:66c1aa3d198e 1116 uint8_t adcClk = (uint8_t) RA8875_TPCR0_ADCCLK_DIV4;
sebastiken 0:66c1aa3d198e 1117
sebastiken 0:66c1aa3d198e 1118 if ( _size == RA8875_800x480 ) //match up touch size with LCD size
sebastiken 0:66c1aa3d198e 1119 adcClk = (uint8_t) RA8875_TPCR0_ADCCLK_DIV16;
sebastiken 0:66c1aa3d198e 1120
sebastiken 0:66c1aa3d198e 1121 if (on)
sebastiken 0:66c1aa3d198e 1122 {
sebastiken 0:66c1aa3d198e 1123 /* Enable Touch Panel (Reg 0x70) */
sebastiken 0:66c1aa3d198e 1124 writeReg(RA8875_TPCR0, RA8875_TPCR0_ENABLE |
sebastiken 0:66c1aa3d198e 1125 RA8875_TPCR0_WAIT_4096CLK |
sebastiken 0:66c1aa3d198e 1126 RA8875_TPCR0_WAKEENABLE |
sebastiken 0:66c1aa3d198e 1127 adcClk); // 10mhz max!
sebastiken 0:66c1aa3d198e 1128 /* Set Auto Mode (Reg 0x71) */
sebastiken 0:66c1aa3d198e 1129 writeReg(RA8875_TPCR1, RA8875_TPCR1_AUTO |
sebastiken 0:66c1aa3d198e 1130 // RA8875_TPCR1_VREFEXT |
sebastiken 0:66c1aa3d198e 1131 RA8875_TPCR1_DEBOUNCE);
sebastiken 0:66c1aa3d198e 1132 /* Enable TP INT */
sebastiken 0:66c1aa3d198e 1133 writeReg(RA8875_INTC1, readReg(RA8875_INTC1) | RA8875_INTC1_TP);
sebastiken 0:66c1aa3d198e 1134 }
sebastiken 0:66c1aa3d198e 1135 else
sebastiken 0:66c1aa3d198e 1136 {
sebastiken 0:66c1aa3d198e 1137 /* Disable TP INT */
sebastiken 0:66c1aa3d198e 1138 writeReg(RA8875_INTC1, readReg(RA8875_INTC1) & ~RA8875_INTC1_TP);
sebastiken 0:66c1aa3d198e 1139 /* Disable Touch Panel (Reg 0x70) */
sebastiken 0:66c1aa3d198e 1140 writeReg(RA8875_TPCR0, RA8875_TPCR0_DISABLE);
sebastiken 0:66c1aa3d198e 1141 }
sebastiken 0:66c1aa3d198e 1142 }
sebastiken 0:66c1aa3d198e 1143
sebastiken 0:66c1aa3d198e 1144 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1145 /*!
sebastiken 0:66c1aa3d198e 1146 Checks if a touch event has occured
sebastiken 0:66c1aa3d198e 1147
sebastiken 0:66c1aa3d198e 1148 @returns True is a touch event has occured (reading it via
sebastiken 0:66c1aa3d198e 1149 touchRead() will clear the interrupt in memory)
sebastiken 0:66c1aa3d198e 1150 */
sebastiken 0:66c1aa3d198e 1151 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1152 bool Adafruit_RA8875::touched(void)
sebastiken 0:66c1aa3d198e 1153 {
sebastiken 0:66c1aa3d198e 1154 if (readReg(RA8875_INTC2) & RA8875_INTC2_TP) return true;
sebastiken 0:66c1aa3d198e 1155 return false;
sebastiken 0:66c1aa3d198e 1156 }
sebastiken 0:66c1aa3d198e 1157
sebastiken 0:66c1aa3d198e 1158 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1159 /*!
sebastiken 0:66c1aa3d198e 1160 Reads the last touch event
sebastiken 0:66c1aa3d198e 1161
sebastiken 0:66c1aa3d198e 1162 @args x[out] Pointer to the uint16_t field to assign the raw X value
sebastiken 0:66c1aa3d198e 1163 @args y[out] Pointer to the uint16_t field to assign the raw Y value
sebastiken 0:66c1aa3d198e 1164
sebastiken 0:66c1aa3d198e 1165 @note Calling this function will clear the touch panel interrupt on
sebastiken 0:66c1aa3d198e 1166 the RA8875, resetting the flag used by the 'touched' function
sebastiken 0:66c1aa3d198e 1167 */
sebastiken 0:66c1aa3d198e 1168 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1169 bool Adafruit_RA8875::touchRead(uint16_t *x, uint16_t *y)
sebastiken 0:66c1aa3d198e 1170 {
sebastiken 0:66c1aa3d198e 1171 uint16_t tx, ty;
sebastiken 0:66c1aa3d198e 1172 uint8_t temp;
sebastiken 0:66c1aa3d198e 1173
sebastiken 0:66c1aa3d198e 1174 tx = readReg(RA8875_TPXH);
sebastiken 0:66c1aa3d198e 1175 ty = readReg(RA8875_TPYH);
sebastiken 0:66c1aa3d198e 1176 temp = readReg(RA8875_TPXYL);
sebastiken 0:66c1aa3d198e 1177 tx <<= 2;
sebastiken 0:66c1aa3d198e 1178 ty <<= 2;
sebastiken 0:66c1aa3d198e 1179 tx |= temp & 0x03; // get the bottom x bits
sebastiken 0:66c1aa3d198e 1180 ty |= (temp >> 2) & 0x03; // get the bottom y bits
sebastiken 0:66c1aa3d198e 1181
sebastiken 0:66c1aa3d198e 1182 *x = tx;
sebastiken 0:66c1aa3d198e 1183 *y = ty;
sebastiken 0:66c1aa3d198e 1184
sebastiken 0:66c1aa3d198e 1185 /* Clear TP INT Status */
sebastiken 0:66c1aa3d198e 1186 writeReg(RA8875_INTC2, RA8875_INTC2_TP);
sebastiken 0:66c1aa3d198e 1187
sebastiken 0:66c1aa3d198e 1188 return true;
sebastiken 0:66c1aa3d198e 1189 }
sebastiken 0:66c1aa3d198e 1190
sebastiken 0:66c1aa3d198e 1191 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1192 /*!
sebastiken 0:66c1aa3d198e 1193 Turns the display on or off
sebastiken 0:66c1aa3d198e 1194 */
sebastiken 0:66c1aa3d198e 1195 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1196 void Adafruit_RA8875::displayOn(bool on)
sebastiken 0:66c1aa3d198e 1197 {
sebastiken 0:66c1aa3d198e 1198 if (on)
sebastiken 0:66c1aa3d198e 1199 writeReg(RA8875_PWRR, RA8875_PWRR_NORMAL | RA8875_PWRR_DISPON);
sebastiken 0:66c1aa3d198e 1200 else
sebastiken 0:66c1aa3d198e 1201 writeReg(RA8875_PWRR, RA8875_PWRR_NORMAL | RA8875_PWRR_DISPOFF);
sebastiken 0:66c1aa3d198e 1202 }
sebastiken 0:66c1aa3d198e 1203
sebastiken 0:66c1aa3d198e 1204 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1205 /*!
sebastiken 0:66c1aa3d198e 1206 Puts the display in sleep mode, or disables sleep mode if enabled
sebastiken 0:66c1aa3d198e 1207 */
sebastiken 0:66c1aa3d198e 1208 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1209 void Adafruit_RA8875::sleep(bool sleep)
sebastiken 0:66c1aa3d198e 1210 {
sebastiken 0:66c1aa3d198e 1211 if (sleep)
sebastiken 0:66c1aa3d198e 1212 writeReg(RA8875_PWRR, RA8875_PWRR_DISPOFF | RA8875_PWRR_SLEEP);
sebastiken 0:66c1aa3d198e 1213 else
sebastiken 0:66c1aa3d198e 1214 writeReg(RA8875_PWRR, RA8875_PWRR_DISPOFF);
sebastiken 0:66c1aa3d198e 1215 }
sebastiken 0:66c1aa3d198e 1216
sebastiken 0:66c1aa3d198e 1217 /************************* Low Level ***********************************/
sebastiken 0:66c1aa3d198e 1218
sebastiken 0:66c1aa3d198e 1219 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1220 /*!
sebastiken 0:66c1aa3d198e 1221
sebastiken 0:66c1aa3d198e 1222 */
sebastiken 0:66c1aa3d198e 1223 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1224 void Adafruit_RA8875::writeReg(uint8_t reg, uint8_t val)
sebastiken 0:66c1aa3d198e 1225 {
sebastiken 0:66c1aa3d198e 1226 writeCommand(reg);
sebastiken 0:66c1aa3d198e 1227 writeData(val);
sebastiken 0:66c1aa3d198e 1228 }
sebastiken 0:66c1aa3d198e 1229
sebastiken 0:66c1aa3d198e 1230 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1231 /*!
sebastiken 0:66c1aa3d198e 1232
sebastiken 0:66c1aa3d198e 1233 */
sebastiken 0:66c1aa3d198e 1234 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1235 uint8_t Adafruit_RA8875::readReg(uint8_t reg)
sebastiken 0:66c1aa3d198e 1236 {
sebastiken 0:66c1aa3d198e 1237 writeCommand(reg);
sebastiken 0:66c1aa3d198e 1238 return readData();
sebastiken 0:66c1aa3d198e 1239 }
sebastiken 0:66c1aa3d198e 1240
sebastiken 0:66c1aa3d198e 1241 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1242 /*!
sebastiken 0:66c1aa3d198e 1243
sebastiken 0:66c1aa3d198e 1244 */
sebastiken 0:66c1aa3d198e 1245 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1246 void Adafruit_RA8875::writeData(uint8_t d)
sebastiken 0:66c1aa3d198e 1247 {
sebastiken 0:66c1aa3d198e 1248 _cs = 0;
sebastiken 0:66c1aa3d198e 1249
sebastiken 0:66c1aa3d198e 1250 spi.write(RA8875_DATAWRITE);
sebastiken 0:66c1aa3d198e 1251 spi.write(d);
sebastiken 0:66c1aa3d198e 1252 _cs = 1;
sebastiken 0:66c1aa3d198e 1253
sebastiken 0:66c1aa3d198e 1254 }
sebastiken 0:66c1aa3d198e 1255
sebastiken 0:66c1aa3d198e 1256 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1257 /*!
sebastiken 0:66c1aa3d198e 1258
sebastiken 0:66c1aa3d198e 1259 */
sebastiken 0:66c1aa3d198e 1260 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1261 uint8_t Adafruit_RA8875::readData(void)
sebastiken 0:66c1aa3d198e 1262 {
sebastiken 0:66c1aa3d198e 1263 _cs = 0;
sebastiken 0:66c1aa3d198e 1264
sebastiken 0:66c1aa3d198e 1265 spi.write(RA8875_DATAREAD);
sebastiken 0:66c1aa3d198e 1266 uint8_t x = spi.write(0x0);
sebastiken 0:66c1aa3d198e 1267
sebastiken 0:66c1aa3d198e 1268 _cs = 1;
sebastiken 0:66c1aa3d198e 1269 return x;
sebastiken 0:66c1aa3d198e 1270 }
sebastiken 0:66c1aa3d198e 1271
sebastiken 0:66c1aa3d198e 1272 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1273 /*!
sebastiken 0:66c1aa3d198e 1274
sebastiken 0:66c1aa3d198e 1275 */
sebastiken 0:66c1aa3d198e 1276 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1277 void Adafruit_RA8875::writeCommand(uint8_t d)
sebastiken 0:66c1aa3d198e 1278 {
sebastiken 0:66c1aa3d198e 1279 _cs = 0;
sebastiken 0:66c1aa3d198e 1280
sebastiken 0:66c1aa3d198e 1281 spi.write(RA8875_CMDWRITE);
sebastiken 0:66c1aa3d198e 1282 spi.write(d);
sebastiken 0:66c1aa3d198e 1283
sebastiken 0:66c1aa3d198e 1284 _cs = 1;
sebastiken 0:66c1aa3d198e 1285 }
sebastiken 0:66c1aa3d198e 1286
sebastiken 0:66c1aa3d198e 1287 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1288 /*!
sebastiken 0:66c1aa3d198e 1289
sebastiken 0:66c1aa3d198e 1290 */
sebastiken 0:66c1aa3d198e 1291 /**************************************************************************/
sebastiken 0:66c1aa3d198e 1292 uint8_t Adafruit_RA8875::readStatus(void)
sebastiken 0:66c1aa3d198e 1293 {
sebastiken 0:66c1aa3d198e 1294 _cs = 0;
sebastiken 0:66c1aa3d198e 1295
sebastiken 0:66c1aa3d198e 1296 spi.write(RA8875_CMDREAD);
sebastiken 0:66c1aa3d198e 1297 uint8_t x = spi.write(0x0);
sebastiken 0:66c1aa3d198e 1298
sebastiken 0:66c1aa3d198e 1299 _cs = 1;
sebastiken 0:66c1aa3d198e 1300 return x;
sebastiken 0:66c1aa3d198e 1301 }