标题: 为什么STM32的SPI2以1M速率接收不到从机发来的数据。 [打印本页]

作者: aaahuage    时间: 2023-6-3 12:50
标题: 为什么STM32的SPI2以1M速率接收不到从机发来的数据。
系统结构:MCU=四线SPI=从机1=菊花链=从机2(橙色部分为通信方式)
问题描述:系统使用16MHz外部晶振,系统时钟64MHz。以500kHz速率初始化SPI2时(极性:0 相位:0  ,主机模式),可以接受到从机发来的数据。但是以1MHz速率,其他参数都不变的情况下。接受不到从机发来的数据。

作者: yzwzfyz    时间: 2023-6-5 11:30
通讯是双方的事,对眼了就OK了。不对眼不行啊。

作者: wufa1986    时间: 2023-6-5 13:37
SPI收发是同时完成的,不存在收不到,1M的频率跑SPI完全没压力
作者: 653748856    时间: 2023-6-5 15:54
从设spi是否支持1MHz速率?
作者: 597329015    时间: 2023-6-6 22:15
根据您提供的信息,初步判断可能是在1MHz SPI时钟速率下,SPI总线传输速率太高,从而导致数据传输出现了问题。可以尝试或考虑以下几个方面进行调试和优化:  修改SPI通信模式:可以尝试修改SPI通信模式,如修改极性(CPOL)和相位(CPHA),以使其适应更高速率的SPI传输。  增加SPI传输延迟:可以通过增加SPI传输延迟时间,来减缓SPI总线传输速率,从而避免数据传输出现问题。  减小连接长度:如果SPI从机与主机之间的连接长度较长,也可能会导致SPI信号失真和传输错误。可以考虑缩短SPI连接长度,或使用更好的线缆材料和连接方式,来减少信号传输时的干扰和衰减问题。  降低MCU时钟速率:在1MHz SPI时钟速率下,如果MCU时钟速率太高,也可能会导致SPI总线速率过快从而引起数据传输错误。可以尝试降低MCU时钟速率,或者采用时钟分频等方法来降低总线传输速率。  最后,建议您在进行调试时,使用示波器和逻辑分析仪等工具来检测和分析SPI从机与主机之间的信号传输情况,以便更准确地找到问题所在。
作者: aaahuage    时间: 2023-6-12 10:36
653748856 发表于 2023-6-5 15:54
从设spi是否支持1MHz速率?

从设的速率支持1M
作者: aaahuage    时间: 2023-6-12 10:36
yzwzfyz 发表于 2023-6-5 11:30
通讯是双方的事,对眼了就OK了。不对眼不行啊。

500K速率能行,但1M不行。
作者: aaahuage    时间: 2023-6-12 10:38
wufa1986 发表于 2023-6-5 13:37
SPI收发是同时完成的,不存在收不到,1M的频率跑SPI完全没压力

总线上有数据,但是仿真代码存放的Buffer都是0.

作者: aaahuage    时间: 2023-6-12 10:39
597329015 发表于 2023-6-6 22:15
根据您提供的信息,初步判断可能是在1MHz SPI时钟速率下,SPI总线传输速率太高,从而导致数据传输出现了问 ...

逻辑分析仪解析出来的是数据,但是程序上的缓存Buffer就是获取不到。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1