浏览关于 SPI-MASTER-DRIVER 和数据表的 IDF 文档,我没有找到我想要的,所以最后一次机会是在这里问。我想将 hw spi (0.5-1MHz) 与 ESP32 一起使用,但我需要为 MOSI 和 MISO 使用相同的引脚。当我对
通信进行 bitbang 时,它工作正常但速度很慢,所以我想使用 HW SPI。我使单向(主出从入)工作,但 DUT 仅使用一个引脚并通过该引脚返回响应。
有没有办法在 ESP32 上配置 SPI 以进行半双工模式并对 MOSI 和 MISO 使用相同的引脚?
我试过
代码:
全选
spi_bus_config_t spi_bus_config = {
.mosi_io_num = 23,
.miso_io_num = -1,
.sclk_io_num = 18,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
.max_transfer_sz = 0,
.flags = 0
};
spi_bus_ini
tialize( HSPI_HOST, &spi_bus_config, SPI_DMA_CH_AUTO );
spi_device_interface_config_t devcfg = {
.clock_speed_hz = 1000000,
.spics_io_num = -1,
.queue_size = 1,
.mode = 3,
.flags = SPI_DEVICE_BIT_LSBFIRST,
}
spi_device_handle_t handle;
spi_bus_add_device( HSPI_HOST, &devcfg, &handle);
...
SPITransaction.length = NumOfBytes * 8;
SPITransaction.tx_buffer = Data;
spi_device_transmit( Handler->SPIHandle, &SPITransaction );
...
spi_transaction_t SPITransaction = {
.cmd = 0x00,
.rxlength = 8 * NumOfBytes,
.flags = 0,
.tx_buffer = NULL,
.rx_buffer = Data,
};
spi_device_transmit( Handler->SPIHandle, &SPITransaction );
希望 miso_io_num = -1 和 .tx_buffer = NULL 可能会在这里有所帮助,但不幸的是......如果这可能的话,有人知道吗?