使用stm32f429 的SPI5接W5500,调用了SPI5的DMA通道
设置为服务器,PC为客户端。
程序使用的是官方下载的驱动,修改了一下驱动,支持DMA。
配置上,SPI的配置都是cubemx的默认配置,4分频(22.5M),所有SPI引脚无上下拉,速度等级都是最快。DMA是正常模式(非循环模式)。
服务器能够被客户端连接上,收发几十个字节的数据没太观察到有问题,能读写寄存器等。
PC按照协议,发送一个文件给服务器存储,发送一帧数据,服务器返回一帧ACK,逐条发送。在这个过程中,出现了问题,经过示波器抓取波形,如下所示
红色是MOSI,黄色是MISO,绿色是CLK,蓝色是我的一个触发信号。
出现的问题是,在MISO的长的电平区域,是MCU在读取W5500的缓存数据,MISO应该输出,但是这个时候,并没有输出,而且该电平也不是低电平,是一个中间电平,而MOSI也是中间电平,拉不低。
尝试过在软件中配置引脚为上拉和下拉,也是没有用,现象一样。
检查程序中,也没有别的地方对SPI5的这几个引脚有配置。而且我使用TCP调试工具下发,随机的选择了一帧数据,依旧是在第59帧的时候出现这个现象。但是并不会全部都会是这一帧。
跳线,使用SPI3的引脚,跳线到该W5500上,并没有出现该现象。
手里几个板子都是同一个现象,请问F429的SPI5是会有什么问题吗?
也没有断开连接,读取这1050个字节后,再去读写寄存器,返回的值,又是正确的,继续发下一帧,也能读取出来。 从wireshark抓包来看,下发的数据也是正确的。
抓过这个时刻的W5500的电压,纹波也比较小,没有突变
在咱们测评群里分享了你的问题,我搬运下2个群友们给的建议供参考:
1、spi最好是使用前两个,鬼知道后面几个是不是有啥bug,一般情况下PA4-PA7不要接别的元器件,预留给SPI用,我甚至遇到过SPI2跟串口3的DMA接收起冲突...ST的东西,最好是别整花活,不然排查问题影响效率,串口和SPI都用前两个,I2C用第一个,PB6 PB7
2、我怀疑是DMA冲突~
引用: nmg 发表于 2022-11-16 16:34 在咱们测评群里分享了你的问题,我搬运下2个群友们给的建议供参考: 1、spi最好是使用前两个,鬼知道后 ...
问题找到了,是开发板上面有一个SPI FLASH 就是用的这个4个引脚,存在竞争了,当时布板的时候,没有注意开发板上的IO
麻袋 发表于 2022-11-16 19:10 问题找到了,是开发板上面有一个SPI FLASH 就是用的这个4个引脚,存在竞争了,当时布板的时候,没有注意 ...
这错误好难,咋排查出来的
nmg 发表于 2022-11-17 11:04 这错误好难,咋排查出来的
有个同事提了一下,一查核心板,果然有IC。开始一直都是检测的我们自己的源代码,SCH和PCB,总查不出来。还是自己疏忽了。
nmg 发表于 2022-11-17 11:04 这错误好难,咋排查出来的
因为不是一直错,数据收发大部分都对,检查了好久的程序。 可能在某一些数据帧的情况下,刚好就碰到了这个SPI FLASH的某一些命令IC。
引用: starcat123 发表于 2022-12-1 16:37 厉害,向大佬学习了 刚下的淘宝订单里就有W5500模块开发板,希望我能早日学到这一块儿
加油加油
429还是自带的以太网好,挂个w5500没那么爽。
WIZnet 出了个w5500 w7500就没再搞新的了。也不知道什么原因。按理w7500扩展一下内存什么的应用会更广一点。
反倒是国内做的越来越好。
本帖最后由 damiaa 于 2022-12-15 10:15 编辑引用: damiaa 发表于 2022-12-15 10:12 429还是自带的以太网好,挂个w5500没那么爽。 WIZnet 出了个w5500 w7500就没再搞新的了。也不知道 ...
嗯,我们有个需求是4个网口,所以还是必须要外挂
引用: 麻袋 发表于 2022-12-19 13:38 嗯,我们有个需求是4个网口,所以还是必须要外挂
你好,最近也在搞f429dma w5500,能否分享一份软件参考,万分感谢
引用: W1234w 发表于 2023-11-12 22:55 你好,最近也在搞f429dma w5500,能否分享一份软件参考,万分感谢
没有对公司程序进行精简了,不好意思。 不过这个都不是很难,当时两个SPI DMA都出来了,另外一路只是偶然有问题,才排查了好久。