MCU:STM32F107
PHY:KSZ8081
LWIP_VERSION:2.0.3
1.配置RCC,串口,定时器
1.1 开启RCC,使用内部8M晶振,配置系统时钟
1.2 打开调试串口1,打开接收中断,开启DMA发送
1.3 打开定时器中断
2.ETH配置参数
PHY地址怎么确定?看PHY硬件手册和硬件原理图
2.1 PHY前16个寄存器是通用的标准的,不需要修改。修改下PHY控制状态寄存器的偏移,以及哪个BIT位代表速度哪个BIT位代表全双工、半双工。我们可以看下PHY的丛植状态寄存器
2.2 开启连接和状态回调函数,这样可以实现网线插上和拔下的时候触发事件,能够拔下网线的时候缓存数据,插上网线的时候重新申请IP地址并连接服务器。
在ethernetif.c文件里面
void ethernetif_notify_conn_changed(struct netif *netif)
{
/* NOTE : This is function could be implemented in user file
when the callback is needed,
*/
DebugUARTPrintf("conn_changed");
if(netif_is_link_up(netif) && !netif_is_up(netif))
{
netif_set_up(netif);
extern err_t dhcp_start(struct netif *netif);
dhcp_start(netif);
}
}
需要把 ethernetif_set_link(netif_default)放到void MX_LWIP_Process(void),并把void MX_LWIP_Process(void)放到主函数里面轮循。
基本上到这里就可以PING通了。可以再加上业务层,可以到ST的官方上下载,官方网站上有关于做TCP/UDP客户端以及服务器等等。