[ESP32C2][SPI QUAD 4线 从机模式接收数据出错!]
Posted: Wed Jan 28, 2026 10:41 am
场景:ESP32C2做SPI从机,ESP32C5做SPI主机,使用SPI QUAD 4线半双工模式进行数据交互
问题描述:基于esp-idf-v5.5.2,使用examples\peripherals\spi_slave_hd\append_mode\slave 和examples\peripherals\spi_slave_hd\append_mode\master 这两个例程进行修改,例程原本都是SPI单bit模式,我们将主从的WP和HD引脚都配置好,bus_cfg的flags都设置为SPICOMMON_BUSFLAG_QUAD,由于看到例程使用essl_spi,所以对essl_spi_send_packet函数里essl_spi_wrdma_seg的传参flags进行修改,flags这一项从0改为SPI_TRANS_MODE_QIO,最后测试发现,SPI master发送确实按照4bit模式发送数据,且CMD指令也正确使用了0x23,即WR_DMA(1bitCMD\1bitADDR\4bitDATA),但SPI slave这边收到的数据非常异常,第一次接收数量是8bytes,然后每次往下递减(7、6。。。1),且收到的数据数值也不符合预期,截图部分log如下:
I (135315) Receiver: 8 bytes are actually received:
I (135315) slave RX:: 00 01 02 03 04 05 06 07
I (135315) Receiver: 7 bytes are actually received:
I (135315) slave RX:: 01 02 03 04 05 06 07
I (135325) Receiver: 6 bytes are actually received:
I (135335) slave RX:: 02 03 04 05 06 07
I (135335) Receiver: 0 bytes are actually received:
I (135345) Receiver: 5 bytes are actually received:
I (135355) slave RX:: 03 04 05 06 07
I (135355) Receiver: 0 bytes are actually received:
I (135365) Receiver: 4 bytes are actually received:
I (135375) slave RX:: 04 05 06 07
求助:问下有没有SPI 从机QUAD模式接收数据的例程可以参考?
问题描述:基于esp-idf-v5.5.2,使用examples\peripherals\spi_slave_hd\append_mode\slave 和examples\peripherals\spi_slave_hd\append_mode\master 这两个例程进行修改,例程原本都是SPI单bit模式,我们将主从的WP和HD引脚都配置好,bus_cfg的flags都设置为SPICOMMON_BUSFLAG_QUAD,由于看到例程使用essl_spi,所以对essl_spi_send_packet函数里essl_spi_wrdma_seg的传参flags进行修改,flags这一项从0改为SPI_TRANS_MODE_QIO,最后测试发现,SPI master发送确实按照4bit模式发送数据,且CMD指令也正确使用了0x23,即WR_DMA(1bitCMD\1bitADDR\4bitDATA),但SPI slave这边收到的数据非常异常,第一次接收数量是8bytes,然后每次往下递减(7、6。。。1),且收到的数据数值也不符合预期,截图部分log如下:
I (135315) Receiver: 8 bytes are actually received:
I (135315) slave RX:: 00 01 02 03 04 05 06 07
I (135315) Receiver: 7 bytes are actually received:
I (135315) slave RX:: 01 02 03 04 05 06 07
I (135325) Receiver: 6 bytes are actually received:
I (135335) slave RX:: 02 03 04 05 06 07
I (135335) Receiver: 0 bytes are actually received:
I (135345) Receiver: 5 bytes are actually received:
I (135355) slave RX:: 03 04 05 06 07
I (135355) Receiver: 0 bytes are actually received:
I (135365) Receiver: 4 bytes are actually received:
I (135375) slave RX:: 04 05 06 07
求助:问下有没有SPI 从机QUAD模式接收数据的例程可以参考?