1 Star 0 Fork 0

gitesin/Arduino_GFX

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
Arduino_ESP32SPI.h 2.94 KB
一键复制 编辑 原始数据 按行查看 历史
moononournation 提交于 2023-11-16 19:41 +08:00 . align DMA memory allocation with #380
#pragma once
#include "Arduino_DataBus.h"
#if defined(ESP32)
#include "soc/spi_struct.h"
#if CONFIG_IDF_TARGET_ESP32S3
#include "driver/periph_ctrl.h"
#elif CONFIG_IDF_TARGET_ESP32C3
#include "driver/periph_ctrl.h"
#include "esp32c3/rom/gpio.h"
#include "soc/periph_defs.h"
#else
#include "soc/dport_reg.h"
#endif
#define ESP32SPI_MAX_PIXELS_AT_ONCE 32
class Arduino_ESP32SPI : public Arduino_DataBus
{
public:
#if CONFIG_IDF_TARGET_ESP32
Arduino_ESP32SPI(int8_t dc = GFX_NOT_DEFINED, int8_t cs = GFX_NOT_DEFINED, int8_t sck = GFX_NOT_DEFINED, int8_t mosi = GFX_NOT_DEFINED, int8_t miso = GFX_NOT_DEFINED, uint8_t spi_num = VSPI, bool is_shared_interface = true); // Constructor
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
Arduino_ESP32SPI(int8_t dc = GFX_NOT_DEFINED, int8_t cs = GFX_NOT_DEFINED, int8_t sck = GFX_NOT_DEFINED, int8_t mosi = GFX_NOT_DEFINED, int8_t miso = GFX_NOT_DEFINED, uint8_t spi_num = HSPI, bool is_shared_interface = true); // Constructor
#else
Arduino_ESP32SPI(int8_t dc = GFX_NOT_DEFINED, int8_t cs = GFX_NOT_DEFINED, int8_t sck = GFX_NOT_DEFINED, int8_t mosi = GFX_NOT_DEFINED, int8_t miso = GFX_NOT_DEFINED, uint8_t spi_num = FSPI, bool is_shared_interface = true); // Constructor
#endif
bool begin(int32_t speed = GFX_NOT_DEFINED, int8_t dataMode = SPI_MODE0) override;
void beginWrite() override;
void endWrite() override;
void writeCommand(uint8_t) override;
void writeCommand16(uint16_t) override;
void write(uint8_t) override;
void write16(uint16_t) override;
void writeC8D8(uint8_t c, uint8_t d) override;
void writeC8D16(uint8_t c, uint16_t d) override;
void writeC8D16D16(uint8_t c, uint16_t d1, uint16_t d2) override;
void writeRepeat(uint16_t p, uint32_t len) override;
void writePixels(uint16_t *data, uint32_t len) override;
void writeBytes(uint8_t *data, uint32_t len) override;
void writeIndexedPixels(uint8_t *data, uint16_t *idx, uint32_t len) override;
void writeIndexedPixelsDouble(uint8_t *data, uint16_t *idx, uint32_t len) override;
protected:
void flush_data_buf();
INLINE void WRITE8BIT(uint8_t d);
INLINE void WRITE9BIT(uint32_t d);
INLINE void DC_HIGH(void);
INLINE void DC_LOW(void);
INLINE void CS_HIGH(void);
INLINE void CS_LOW(void);
INLINE void POLL(uint32_t len);
private:
int8_t _dc, _cs;
int8_t _sck, _mosi, _miso;
uint8_t _spi_num;
bool _is_shared_interface;
uint32_t _div = 0;
PORTreg_t _dcPortSet; ///< PORT register for data/command SET
PORTreg_t _dcPortClr; ///< PORT register for data/command CLEAR
PORTreg_t _csPortSet; ///< PORT register for chip select SET
PORTreg_t _csPortClr; ///< PORT register for chip select CLEAR
uint32_t _dcPinMask; ///< Bitmask for data/command
uint32_t _csPinMask; ///< Bitmask for chip select
spi_t *_spi;
uint8_t _bitOrder = SPI_MSBFIRST;
union
{
uint8_t* _buffer;
uint16_t* _buffer16;
uint32_t* _buffer32;
};
uint16_t _data_buf_bit_idx = 0;
};
#endif // #if defined(ESP32)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/gitesin/Arduino_GFX.git
git@gitee.com:gitesin/Arduino_GFX.git
gitesin
Arduino_GFX
Arduino_GFX
master

搜索帮助