1. 在
Arduino_DataBus.h 中增加 virtual void read 宣告
class Arduino_DataBus
{
public:
Arduino_DataBus();
virtual void read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len) = 0;
2. 在
Arduino_ESP32SPI.h 中增加 void read 宣告
class Arduino_ESP32SPI : public Arduino_DataBus
{
public:
void read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len);
3. 在
Arduino_ESP32QSPI.h 中增加 void read 宣告
class Arduino_ESP32QSPI : public Arduino_DataBus
{
public:
void read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len) override;;
4. 在
Arduino_ESP32QSPI.c 中增加 void Arduino_ESP32QSPI::read 作法
void Arduino_ESP32QSPI::read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len)
{
CS_LOW();
spi_transaction_ext_t trans = {};
trans.base.flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR | SPI_TRANS_MODE_QIO;
trans.base.cmd = cmd;
trans.base.addr = addr;
trans.base.rxlength = len * 8;
trans.base.rx_buffer = data;
trans.command_bits = 8;
trans.address_bits = 8;
trans.dummy_bits = 8;
spi_device_polling_transmit(_handle, (spi_transaction_t *)&trans);
CS_HIGH();
}
沒有留言:
張貼留言