Table of Contents
最近公司用NXP的LPC2366做了一个新板子。很奇怪。我们使用之前现成的程序,发现网络ping不通。但是这个程序在之前的板子上是可以正常工作的。
后来同事使用周立功的程序跑了一下,OK,可以ping通。现在就有一个奇怪的现象:
- 老程序在老板子能正常工作
- 老程序在新板子不能正常工作
- 周立功的程序在新老板子都能正常工作
问题来了,究竟是程序的问题还是硬件的问题呢?
今天终于得空把这个问题整理一下。首先我在老程序的网络中断中增加了打印信息,主要是中断类型和接收报文的状态信息。在新老2个板子上测试。
发现在老板子上多报出AlignmentError和CRCError错误。看来应该是CRC错误导致报文无法被进一步处理。因为老程序的协议栈我还是非常相信的。没办法,google吧。
LPC2000系列的MCU在yahoo上有一个group,于是我在上面搜索了一下。果然发现一个帖子也是遇到了CRC错误的问题,他最后给出的问题原因是PHY芯片的CRS和CRSDV不是同一个管脚,是不是我们的问题原因也是这个呢?于是看了一下原理图,发现果然犯了一样的错误。DM9161的作为RMII使用时,CRSDV应该接到35脚,但是我们的设计接到了37脚。明显接错了。割线飞线,问题解决。