A base class that interfaces with the SAMD51 hardware, including PORTs, timer/counters, DMA and other operipherals. Unlikely to be instantiated on its own, a few subclasses are provided that represent the display and graphics memory in different ways. Applications must be designed around ONE of these subclasses and stick with it; can't toggle among them.
More...
#include <Adafruit_TFTDMA.h>
|
| Adafruit_TFTDMA (int8_t tc, int8_t reset, int8_t cs, int8_t cd, int8_t rd, int8_t wr, int8_t d0, _EPioType periph) |
| Constructor. Takes note of the hardware configuration to use, but does not itself initialize any hardware yet. More...
|
|
bool | begin (void) |
| Initializes all pins and peripherals used by the library. More...
|
|
|
void | writeReg8 (uint8_t reg, uint8_t value) |
| Writes an 8-bit value to an ILI9341 configuration register. More...
|
|
void | writeReg16 (uint8_t reg, uint16_t value) |
| Writes a 16-bit value to an ILI9341 configuration register. More...
|
|
void | writeReg32 (uint8_t reg, uint32_t value) |
| Writes a 32-bit value to an ILI9341 configuration register. More...
|
|
void | setAddrWindow (int16_t x1, int16_t y1, int16_t x2, int16_t y2) |
| Sets the ILI9341 'address window' for subsequent graphics operations. This also issues a MEMORYWRITE command and leaves the device selected and in DATA mode for incoming pixel data. Inputs are NOT sorted or clipped; subclasses provide higher-level functions that ensure the validity of these parameters. More...
|
|
|
volatile uint8_t * | writePort |
| Pointer to 8-bit PORT OUT.
|
|
volatile uint8_t * | readPort |
| Pointer to 8-bit PORT IN.
|
|
volatile uint8_t * | dirSet |
| 8-bit PORT direction set
|
|
volatile uint8_t * | dirClr |
| 8-bit Port direction clear
|
|
volatile uint32_t * | csPortSet |
| Pointer to CS pin PORT SET register.
|
|
volatile uint32_t * | csPortClr |
| Pointer to CS pin PORT CLEAR register.
|
|
volatile uint32_t * | cdPortSet |
| Pointer to CD pin PORT SET register.
|
|
volatile uint32_t * | cdPortClr |
| Pointer to CD pin PORT CLEAR register.
|
|
volatile uint32_t * | rdPortSet |
| Pointer to RD pin PORT SET register.
|
|
volatile uint32_t * | rdPortClr |
| Pointer to RD pin PORT CLEAR register.
|
|
volatile uint32_t * | wrPortActive |
| Pointer to WR pin PORT active register.
|
|
volatile uint32_t * | wrPortIdle |
| Pointer to WR pin PORT idle register.
|
|
uint32_t | csPinMask |
| Bitmask for CS pin PORT.
|
|
uint32_t | cdPinMask |
| Bitmask for CD pin PORT.
|
|
uint32_t | rdPinMask |
| Bitmask for RD pin PORT.
|
|
uint32_t | wrPinMask |
| Bitmask for WR pin PORT.
|
|
int8_t | csPin |
| Index of CS pin (or -1)
|
|
int8_t | cdPin |
| Index of CD pin.
|
|
int8_t | rdPin |
| Index of RD pin.
|
|
int8_t | wrPin |
| Index of WR pin.
|
|
int8_t | resetPin |
| Index of RESET pin (or -1)
|
|
int8_t | d0Pin |
| Index of data bit 0 pin.
|
|
int8_t | tcNum |
| Timer/Counter number.
|
|
_EPioType | wrPeripheral |
| WR strobe peripheral type.
|
|
Adafruit_ZeroDMA | dma |
| DMA instance.
|
|
A base class that interfaces with the SAMD51 hardware, including PORTs, timer/counters, DMA and other operipherals. Unlikely to be instantiated on its own, a few subclasses are provided that represent the display and graphics memory in different ways. Applications must be designed around ONE of these subclasses and stick with it; can't toggle among them.
◆ Adafruit_TFTDMA()
Adafruit_TFTDMA::Adafruit_TFTDMA |
( |
int8_t |
tc, |
|
|
int8_t |
reset, |
|
|
int8_t |
cs, |
|
|
int8_t |
cd, |
|
|
int8_t |
rd, |
|
|
int8_t |
wr, |
|
|
int8_t |
d0, |
|
|
_EPioType |
periph |
|
) |
| |
Constructor. Takes note of the hardware configuration to use, but does not itself initialize any hardware yet.
- Parameters
-
tc | Index of timer/counter peripheral for PWM (used for generating write-strobe pulses), e.g. pass 2 to use the TC2 peripheral. Certain timer/counters may be in use by other libraries or reserved for the Arduino millis()/micros() timers. |
reset | Index of pin connected to the ILI9341's reset line, or -1 if unconnected. Using the reset line is optional but strongly recommended. |
cs | Index of pin connected to ILI9341 chip select line. Required; must be >= 0. |
cd | Index of pin connected to ILI9341 command/data line. Required; must be >= 0. |
rd | Index of pin connected to ILI9341 read-strobe line, or -1 if unconnected. This library currently doesn't read any registers or pixel data from the device; it is coded specifically for this driver and write-only, so -1 is totally acceptable and even preferred here. Maybe this parameter will be removed in the future. |
wr | Index of pin connected to ILI9341 write-strobe line. Required; must be >= 0. Additionally, this pin must be a valid TCx/WO[0] output for the timer/counter specified by the first parameter, OR a CCL/OUT[x] pin for the same timer counter (see last parameter). |
d0 | Index of pin connected to ILI9341 data bit 0 line. Required; must be >= 0. Additionally, the corresponding PORT bit index for this pin MUST be the least-significant bit of an 8-bit byte (e.g. 0, 8, 16 or 24) if using the 8-bit parallel interface, or the least-significant bit of a 16-bit halfword (e.g. 0 or 16) if using the 16-bit parallel interface. Use of the next 7 or 15 bits of the PORT is implied, the pins corresponding to those bits might not be contiguous or sequential; refer to the schematic or device-specific variant.cpp file for insights. |
periph | Peripheral type connected to the write-strobe pin for PWM out. This can be PIO_TIMER or PIO_TIMER_ALT corresponding to TCx/WO[0] for that pin, or PIO_CCL for CCL/OUT[x] on a pin. PIO_TIMER and PIO_TIMER_ALT require the use of an external logic inverter (the ILI9341 uses active-low control signals). PIO_CCL does not need an inverter, but the choice of pins is very limited, perhaps just one or two. |
◆ begin()
bool Adafruit_TFTDMA::begin |
( |
void |
| ) |
|
Initializes all pins and peripherals used by the library.
- Returns
- true if an error occurred, false otherwise. An error returned here is usually symptomatic of a constructor problem, such as an invalid pin or timer number.
◆ writeReg8()
void Adafruit_TFTDMA::writeReg8 |
( |
uint8_t |
reg, |
|
|
uint8_t |
value |
|
) |
| |
|
protected |
Writes an 8-bit value to an ILI9341 configuration register.
- Parameters
-
reg | Device register to write. |
value | Value written to register. |
◆ writeReg16()
void Adafruit_TFTDMA::writeReg16 |
( |
uint8_t |
reg, |
|
|
uint16_t |
value |
|
) |
| |
|
protected |
Writes a 16-bit value to an ILI9341 configuration register.
- Parameters
-
reg | Device register to write. |
value | Value written to register. |
◆ writeReg32()
void Adafruit_TFTDMA::writeReg32 |
( |
uint8_t |
reg, |
|
|
uint32_t |
value |
|
) |
| |
|
protected |
Writes a 32-bit value to an ILI9341 configuration register.
- Parameters
-
reg | Device register to write. |
value | Value written to register. |
◆ setAddrWindow()
void Adafruit_TFTDMA::setAddrWindow |
( |
int16_t |
x1, |
|
|
int16_t |
y1, |
|
|
int16_t |
x2, |
|
|
int16_t |
y2 |
|
) |
| |
|
protected |
Sets the ILI9341 'address window' for subsequent graphics operations. This also issues a MEMORYWRITE command and leaves the device selected and in DATA mode for incoming pixel data. Inputs are NOT sorted or clipped; subclasses provide higher-level functions that ensure the validity of these parameters.
- Parameters
-
x1 | Left edge of graphics window (0 to TFTWIDTH-1). |
y1 | Top edge of graphics window (0 to TFTHEIGHT-1). |
x2 | Right edge of graphics window (0 to TFTWIDTH-1). |
y2 | Bottom edge of graphics window (0 to TFTHEIGHT-1). |
The documentation for this class was generated from the following files: