你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f407的spi2调试稳定性问题

[复制链接]
savant 提问时间:2022-7-4 08:56 / 未解决
我现在用stm32f407的spi2基于HAL库来调试一款spi设备,遇到的现象是:当我单步调试并能跟spi设备成功通信后,我断开这次单步调试,然后再紧跟着进行下一次单步调试,发现跟spi设备就不能成功通信了。请问这种情况是什么原因?十分感谢。

同样的现象是:当我单步调试并能跟spi设备成功通信后,我给板子断电后再上电,然后进行下一次单步调试,发现跟spi设备就又不能成功通信了。
收藏 评论12 发布时间:2022-7-4 08:56

举报

12个回答
savant 回答时间:2022-7-4 08:59:44
同样的现象是:当我单步调试并能跟spi设备成功通信后,我给板子断电后再上电,然后进行下一次单步调试,发现跟spi设备就又不能成功通信了。
butterflyspring 回答时间:2022-7-4 10:29:21
断开从设备试试看,是不是从设备拉住或没有相应。 如果断开口每次主设备都能发出波形,那么就是与冲设备同步的问题,需要从设备准备好的情况下才能通信。
savant 回答时间:2022-7-4 10:39:59
butterflyspring 发表于 2022-7-4 10:29
断开从设备试试看,是不是从设备拉住或没有相应。 如果断开口每次主设备都能发出波形,那么就是与冲设备同 ...

您好!
1.现在的现象就是从设备没有相应。
2.我们把spi从设备断开后,每次主设备都能发出波形。
3.硬件上从设备和mcu之间连了一根线,从设备要求mcu侧判断这个线为高时,表明可以与从设备可以进行通信了。这些我在程序里都做了处理,如果这个线不为高的话程序不会往下执行的。所以我感觉跟从设备没多大关系。您认为呢?谢谢!

xmshao 回答时间:2022-7-4 11:28:33
你所说的不成功通信是指的什么?发不出去还是接收不了?还是说根本没反应?你可以先基于F407这边的SPI自发自收测试验证下,这边跑顺了,然后连接外部SPI进一步调试。还有,F407这边的SPI通信是基于查询方式?还是中断方式 抑或 DMA方式?
butterflyspring 回答时间:2022-7-4 14:08:59
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主从没有同步所致,在调试时会很容易发生。 可以这样验证一下,将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看
savant 回答时间:2022-7-4 14:46:30
butterflyspring 发表于 2022-7-4 14:08
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...



您说的“可以这样验证一下,将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”,不是特别理解。是主从两侧都要延迟吗?另外主从同时复位肯定不行。因为在主这侧还有其他功能程序在运行啊。

savant 回答时间:2022-7-4 14:51:19
butterflyspring 发表于 2022-7-4 14:08
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...

您可以看看我录的调试视频。

debug.rar

下载

40.31 MB, 下载次数: 4, 下载积分: ST金币 -1

savant 回答时间:2022-7-4 14:53:29
butterflyspring 发表于 2022-7-4 14:08
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...

您好,您说的“可以这样验证一下,将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”,我不是太理解怎么测试?是说主从两端都加延迟吗?主从同时复位?
savant 回答时间:2022-7-4 20:58:14
butterflyspring 发表于 2022-7-4 14:08
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...

您好,您说的“将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”是什么意思?是主从两侧都要延时?
怎么做到主从同时复位?
李康1202 回答时间:2022-7-5 08:07:39
有没有可能是频率太快
butterflyspring 回答时间:2022-7-5 09:51:06
savant 发表于 2022-7-4 20:58
您好,您说的“将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”是什么意思?是 ...

这样设置的目的是保证主从同时上电时,从先准备好,主再发送信号。 另外发送最好参考一下官方库的例程,在发送完成的回调函数里设置发送成功的标志。用延时的话一般可以用实现,就是逻辑上不如官方的那么完善而已。
xmshao 回答时间:2022-7-5 10:19:54
你所说的不成功通信是指的什么?发不出去还是接收不了?还是说根本没反应?你可以先基于F407这边的SPI自发自收测试验证下,这边跑顺了,然后连接外部SPI进一步调试。还有,F407这边的SPI通信是基于查询方式?还是中断方式 抑或 DMA方式?

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版