我现在用stm32f407的spi2基于HAL库来调试一款spi设备,遇到的现象是:当我单步调试并能跟spi设备成功通信后,我断开这次单步调试,然后再紧跟着进行下一次单步调试,发现跟spi设备就不能成功通信了。请问这种情况是什么原因?十分感谢。
|
同样的现象是:当我单步调试并能跟spi设备成功通信后,我给板子断电后再上电,然后进行下一次单步调试,发现跟spi设备就又不能成功通信了。
断开从设备试试看,是不是从设备拉住或没有相应。 如果断开口每次主设备都能发出波形,那么就是与冲设备同步的问题,需要从设备准备好的情况下才能通信。
断开从设备试试看,是不是从设备拉住或没有相应。 如果断开口每次主设备都能发出波形,那么就是与冲设备同 ...
您好! 1.现在的现象就是从设备没有相应。 2.我们把spi从设备断开后,每次主设备都能发出波形。 3.硬件上从设备和mcu之间连了一根线,从设备要求mcu侧判断这个线为高时,表明可以与从设备可以进行通信了。这些我在程序里都做了处理,如果这个线不为高的话程序不会往下执行的。所以我感觉跟从设备没多大关系。您认为呢?谢谢!
你所说的不成功通信是指的什么?发不出去还是接收不了?还是说根本没反应?你可以先基于F407这边的SPI自发自收测试验证下,这边跑顺了,然后连接外部SPI进一步调试。还有,F407这边的SPI通信是基于查询方式?还是中断方式 抑或 DMA方式?
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主从没有同步所致,在调试时会很容易发生。 可以这样验证一下,将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...
您说的“可以这样验证一下,将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”,不是特别理解。是主从两侧都要延迟吗?另外主从同时复位肯定不行。因为在主这侧还有其他功能程序在运行啊。
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...
您可以看看我录的调试视频。
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...
您好,您说的“可以这样验证一下,将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”,我不是太理解怎么测试?是说主从两端都加延迟吗?主从同时复位?
假如通讯信号传输了一部分,这时候主突然复位,而从设备还处在接收状态,再次通讯就会有这种故障。 这是主 ...
您好,您说的“将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”是什么意思?是主从两侧都要延时? 怎么做到主从同时复位?
有没有可能是频率太快
您好,您说的“将程序延迟几秒中执行(从的要延迟时间要短一些),然后主从同时复位看看”是什么意思?是 ...
这样设置的目的是保证主从同时上电时,从先准备好,主再发送信号。 另外发送最好参考一下官方库的例程,在发送完成的回调函数里设置发送成功的标志。用延时的话一般可以用实现,就是逻辑上不如官方的那么完善而已。
你所说的不成功通信是指的什么?发不出去还是接收不了?还是说根本没反应?你可以先基于F407这边的SPI自发自收测试验证下,这边跑顺了,然后连接外部SPI进一步调试。还有,F407这边的SPI通信是基于查询方式?还是中断方式 抑或 DMA方式?