乐鑫技术交流
直播中

汪潇潇

8年用户 920经验值
私信 关注
[问答]

有没有办法在ESP32上配置SPI以进行半双工模式并对MOSI和MISO使用相同的引脚?

浏览关于 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_initialize( 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 可能会在这里有所帮助,但不幸的是......如果这可能的话,有人知道吗?


更多回帖

发帖
×
20
完善资料,
赚取积分