完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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个回答
|
|
以下是一些建议和解决方案:
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信号设置为高,以确保设备在两次传输之间正确地断开连接。 |
|
|
|
只有小组成员才能发言,加入小组>>
486浏览 6评论
405浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
388浏览 5评论
390浏览 4评论
365浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-6 14:07 , Processed in 0.725303 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号