使用STM32+W5500方案是一种比较节省CPU开支的方案,无需多余的CPU资源管理Lwip协议。
调试的时候很多情况下无法通信,现结合笔者近10年的调试经验(每次用W5500做板子,不会说是一帆风顺的- -),总结一下经常出现的问题:
一、硬件问题
晶振一般情况不会出现不起振的情况,25MHz无源晶体+18pF电容,无需1M电阻。如果怀疑,那就示波器测测;
看有没有电容电阻焊错的,特别是,把电容错焊为电阻,这样的话电路的表现就是耗电异常;
W5500到带变压器的RJ45之间距离不长的话,10公分以内吧,特别短的话,无需进行阻抗匹配或等长设置,只需要普通的差分布线即可。
二、软件问题
软件问题有的是硬件造成的,有的是软件造成的。
2.1 硬件造成的有:
SPI线过长(过长就是大概超过5-10cm),导致SPI无法支持过高的通信速率,这时候降低SPI主频即可;SPI线过长还会出现一种情况:引脚速度太高。一般把SPI或者其他通信引脚的速率设置为50MHz即可,有时候设置为100MHz会出问题。
2.2 软件造成的问题有:
1、引脚模式定义错误,输入输出模式定义好,另外中断引脚的模式以及使用的外部中断线是否对应上。如果有问题,会无法进入中断。
2、保持头脑清晰,有些代码在UDP模式下不会执行:
3、调试的上位机的防火墙要关闭,主要是公共网和专用网,域网络不用关闭。
4、MDK软件的调试设置,勾选上 Reset and Run,否则下载后不能立即执行,会影响纠错的思路。
5、使用TMS320F2812的时候,无法使用自带的SPI接口进行通信,因为W5500和DSP的SPI通信机制永远都不合拍,自己乖乖写模拟SPI接口吧。其他型号的DSP可以使用,因为其SPI通信时加入了6次采样,可以弥补DSP的SPI的通信机制缺陷(为啥叫缺陷呢,他自己觉得自己很牛,不与其他家的SPI通信机制兼容)。
【补充说明】
有朋友问2812与W5500为什么不兼容,我简单说一下, 这是和时钟极性CPOL和时钟相位CPHA有关。尽管说跟这两个有关,实际上最关键的还不是这个,我先解释CPOL和CPHA,CPOL规定了时钟线在空闲时间是高还是低电平,CPHA规定了是在上升沿采样还是在下降沿采样。这是目前来说最为广泛使用的设置,这里面隐藏了一个属性,就是数据的发送和接收是同时进行还是异步进行的,W5500采用的是同步进行,也就是说,在上升沿或者在下降沿时,对发送和接收数据进行采样,那么数据的电平翻转是在这个同步信号的前一个相位发生的。但是基本上所有的TI DSP都是异步的,你说恶心不恶心?它发送采样是在上升沿,那接收采样就在下降沿,总是跟你对着干,就是不同步,这造成了什么呢?造成了你在读数或者发送的时候,总有一个是出于数据翻转的状态,而不是稳态。从2812以后,TI发现自己恶心了,就自己给自己架了个台阶,勉强算是兼容(屈服)了,是什么呢,就是增加了采样次数,我忘记是16次采样还是8次采样了,这样的话,即使有一次采样时数据是在翻转,那剩下的15次或者7次数据都是稳定的,这样就排除了这个不稳定的状态时的数据。这样就蒙混过关了!!??