打印
[其他ST产品]

请大家看下这个超时判断函数有什么问题?

[复制链接]
787|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stormwind123|  楼主 | 2024-1-26 09:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32通过spi和ad7193芯片通讯。
主循环里每1秒读取一次ad7193的数据并通过串口发送出来。

和ad7193通讯是这样的:通过spi发送单次转换命令,ad7193接收命令后开始数据转换,转换接收后,将spi_miso引脚拉低,表示转换结束可以读取。然后stm32再通过spi读ad7193数据寄存器。

现在,发送转换命令后,尝试一直等待SPI_MISO管脚为电平,结果程序好像停在了那里。
于是,想加个超时判断,发送转换命令后,如果SPI_MISO管脚为高电平,i++,如果i>60000,则跳出循环执行后面的语句。
发现,我将i>60000,这个数,设大点或设小点,示波器波形看起来都一样,如果特别大,则,好像又停在那里不动了。






绿色为sclk波形,黄色为miso波形, sclk可看到是分成了两部分,第一部分为发送单次转换命令,第二部分为读取ad7193数据寄存器值。中间的间隔,无论我修改数大小,都没有明显变化。

使用特权

评论回复
沙发
jcky001| | 2024-2-10 17:57 | 只看该作者
如果设置超时数值太大,程序可能会停在那里不动,因为轮询会消耗大量CPU时间。建议将超时数值设置得相对较小,并结合定时器来确保程序不会无限制地等待。

使用特权

评论回复
板凳
两只袜子| | 2024-2-10 17:58 | 只看该作者
用示波器调试一下

使用特权

评论回复
地板
一秒落纱| | 2024-2-21 08:22 | 只看该作者
.是不是转换还没转换过来啊?

使用特权

评论回复
5
夜阑风雨| | 2024-2-21 10:30 | 只看该作者
你不是用硬件的SPI么?咋还感觉是时序不对呢

使用特权

评论回复
6
远山寻你| | 2024-2-21 12:30 | 只看该作者
停在这里说明MISO电平一直没变化呗

使用特权

评论回复
7
光辉梦境| | 2024-2-21 14:30 | 只看该作者
是不是你时序没弄对啊

使用特权

评论回复
8
三生万物| | 2024-2-21 16:30 | 只看该作者
你就正常读应该就行吧啊,定时读取,没必要判断miso的电平状态

使用特权

评论回复
9
淡漠安然| | 2024-2-21 18:30 | 只看该作者
你可以找个ad7193的例程,我觉得参考例程时序来操作比较好

使用特权

评论回复
10
暖了夏天蓝了海| | 2024-2-21 20:30 | 只看该作者
现在你是读不到数据吧,按你描述的理解来说

使用特权

评论回复
11
别乱了阵脚| | 2024-2-22 02:30 | 只看该作者
你定时读取的时候,怎么都可以读取到数据吧,就算没转换完是不是能读取到上次数据啊

使用特权

评论回复
12
冰春彩落下| | 2024-2-22 04:30 | 只看该作者
你用这种循环方式判断超时估计不行,容易阻塞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

417

主题

2169

帖子

2

粉丝