乐鑫技术交流
直播中

刘高

10年用户 964经验值
擅长:嵌入式技术
私信 关注
[问答]

dummy怎么用?

dummy怎么用?
我如下设置后传输
spi_transaction_t t1;
spi_transaction_ext_t et1;

memset(sendbuf1, 0xa5, 8);
t1.length=4*8;
t1.tx_buffer=sendbuf1;
t1.rx_buffer=recvbuf1;
t1.flags=SPI_TRANS_VARIABLE_DUMMY;
et1.dummy_bits = 1;
et1.base=t1;
每次传输完成后再进行下一次传输,结果是cs一直为低,clk一直有,数据一直为0
spi_device_queue_trans(spi,&t1,portMAX_DELAY);
不用dummy时正常,发一次数据,等一段时间后又有一段数据发出
                                                                                                                                                            

回帖(1)

王桂兰

2024-6-24 16:43:46
以下是一些建议和解决方案:

1. 确保您已经正确初始化了SPI设备。在设置SPI设备之前,您需要使用`spi_bus_initialize`函数初始化SPI总线。

2. 确保您已经正确配置了SPI设备属性。使用`spi_device_interface_config_t`结构体配置SPI设备属性,然后使用`spi_bus_add_device`函数将设备添加到SPI总线。

3. 检查您的`spi_transaction_t`和`spi_transaction_ext_t`结构体设置是否正确。根据您的代码,您已经设置了`t1.flags`为`SPI_TRANS_VARIABLE_DUMMY`,这意味着您希望在传输过程中使用可变长度的dummy数据。同时,您设置了`et1.dummy_bits`为1,这表示每个传输周期的dummy数据长度为1位。

4. 确保您在每次传输完成后正确地处理了CS信号。在ESP32的SPI驱动中,CS信号通常由硬件自动管理。如果您发现CS信号一直为低,可能是因为您的SPI设备或代码存在问题。您可以尝试在传输完成后手动将CS信号设置为高,以确保设备在两次传输之间正确地断开连接。


举报

更多回帖

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