关于以太网通信
最近用了两种以太网芯片了,先是STM32F446+W5500,然后是STM32F429+LAN8720A,第二种虽然现在也能发数了,但是发送的数据一超过一千字节就会报错,实际上根本没有吃透这个LWIP,只是简单的去测试源代码都不能成功,等我搞明白了再来记录。
关于W5500这个芯片就很友好了,(中文官网)有一堆测试demo和调试指南,对于我这种一开始连以太网是什么都不知道的小白来说,真的不能够再好了。
附上连接:https://www.w5500.com/index.html
. 以下是关于TCP sever的一些理解:
想要实现以上基本也就两步,一、ping通。二、socket。
- 首先是单片机通过SPI去配置w5500的网络参数,如果配置的对,且PC端也设置的同一网段的话,就可以ping通。我在实际操作的时候遇到一些问题,首先插上了网线时候link灯不亮,检查硬件发现没有给w5500提供25M晶振,其他输入电压正常,然后灯还是不亮,由于我使用的网络变压器RJ45的电路是外接的就是没有集成到一块板子上,果然问题在这,没有给RJ45供电,加上电后网线的灯就亮了。如果这时候还是ping不通的话就去debug一下看看有没有正确的把网络参数写到W5500的配置寄存器里。
关键点
硬件上晶振25M,工作电压正常。
软件上SPI通信 - Ping通了之后就是调用socket了,这个状态机就比较好理解,w5500一共有8个socket,而我只用了socket 0。如果socket处于连接状态