初级会员

- 积分
- 83
- 金钱
- 83
- 注册时间
- 2014-8-20
- 在线时间
- 7 小时
|
1金钱
如题,现有系统STM32F407+UCOSII+LWIP+DM9000; 有一个51字节的数据包,在上传到电脑的时候,经常会出现错误,最后一个字节应该是0x0D,电脑抓包后收到的最后一个字节总是错误的,这个数据包,无论是更改长度、改变其中任意一个字节的某一位,都无法产生这种现象;
根据TCP传输协议,上位机检验错误不发送确认,STM32的LWIP没有收到确认开始重新发送,此时上位机收到的数据为各种丢包,TCP、ARP连接也彻底断掉,整个以外网数据就都是乱码;
使用串口跟踪过发给DM9000的数据包,也没发现丢包的现象;
原子的战舰开发板上传这个数据包则一点问题都没有;
咨询过DAVICOM的技术支持,怀疑DM9000的晶振精度有问题,现在已经将DM9000的25M晶振的精度,提高到16ppm,问题还是一样;
更奇怪的是,系统在前两次上电的时候,成功率很低,上电稳定一段时间后(温度上升),问题就基本不出现了;
现在我怀疑可能是stm32F407的晶振精度不够,在驱动FSMC时,时钟为168M的总线,而STM32F407的8M晶振的精度,总是在10~30ppm之内漂,造成8M精度不够时,168M的精度就会放大很多,加上走线这块,我是将FSMC用到的管脚,都从芯片内部打了过孔,集中走线走到DM9000,非等长线(不过也差不了太多),线长3cm左右,造成这种特定格式数据写入错误的情况;
请教下各位大神,这种情况,我应该怎么整。。。(苦苦调试了一个月)
|
|