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 16:30:24 2017 +0000
Revision:
2:040a687cea93
Parent:
1:ac22f0f36d6b
Child:
3:4a3e169866a2
[FIX] spi_speed to 1Mhz; [MOD] Uncomment GFX methods

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