4#include "TinyGPU/Abstractions/IQSPIBus.h"
5#include "TinyGPU/Emulation.h"
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
44 : cs_(cs), sclk_(sclk), d0_(d0), d1_(d1), d2_(d2), d3_(d3) {}
48 pinMode(sclk_, OUTPUT);
53 digitalWrite(cs_, HIGH);
54 digitalWrite(sclk_, LOW);
58 void end()
override {}
60 bool writeCommand(uint8_t cmd,
const uint8_t* param, size_t len)
override {
61 digitalWrite(cs_, LOW);
62 sendFrameQuad(kOpcodeParam, cmd);
63 for (size_t i = 0; i < len; ++i) sendByteSingle(param[i]);
64 digitalWrite(cs_, HIGH);
68 bool writeColor(uint8_t cmd,
const uint8_t* data, size_t len)
override {
69 digitalWrite(cs_, LOW);
70 sendFrameQuad(kOpcodeColor, cmd);
71 for (size_t i = 0; i < len; ++i) sendByteQuad(data[i]);
72 digitalWrite(cs_, HIGH);
77 static constexpr uint8_t kOpcodeParam = 0x02;
78 static constexpr uint8_t kOpcodeColor = 0x32;
84 digitalWrite(sclk_, HIGH);
85 digitalWrite(sclk_, LOW);
88 void sendNibble(uint8_t nibble) {
89 digitalWrite(d0_, (nibble >> 0) & 1);
90 digitalWrite(d1_, (nibble >> 1) & 1);
91 digitalWrite(d2_, (nibble >> 2) & 1);
92 digitalWrite(d3_, (nibble >> 3) & 1);
96 void sendByteQuad(uint8_t b) {
97 sendNibble((b >> 4) & 0x0F);
101 void sendByteSingle(uint8_t b) {
102 for (int8_t bit = 7; bit >= 0; --bit) {
103 digitalWrite(d0_, (b >> bit) & 1);
110 void sendFrameQuad(uint8_t opcode, uint8_t cmd) {
111 sendByteQuad(opcode);
117 int8_t cs_, sclk_, d0_, d1_, d2_, d3_;
Abstraction over the transport used by DisplayDriverQSPI (see TinyGPU/Drivers/DisplayDriverQSPI....
Definition: IQSPIBus.h:24
Portable, software-driven IQSPIBus backend built only on pinMode()/digitalWrite() - works on any Ardu...
Definition: QSPIBusBitBang.h:40
QSPIBusBitBang(int8_t cs, int8_t sclk, int8_t d0, int8_t d1, int8_t d2, int8_t d3)
Definition: QSPIBusBitBang.h:42
bool writeCommand(uint8_t cmd, const uint8_t *param, size_t len) override
Definition: QSPIBusBitBang.h:60
void end() override
Definition: QSPIBusBitBang.h:58
bool begin() override
Sets up the bus (pins/peripheral). Returns false on failure.
Definition: QSPIBusBitBang.h:46
bool writeColor(uint8_t cmd, const uint8_t *data, size_t len) override
Definition: QSPIBusBitBang.h:68
Definition: DSIBusESP32.h:19