STM32F407 + Freertos + Lwip 实现UDP通讯

使用正点原子的探索者开发板,版本是V3.4,即最新版,板载的PHY为国产的YT8512C。

使用STM32CubeMx 直接生成工程,PHY硬件平台选择LAN8742。

其中STM32CubeMx为最新的6.11,Cube包使用的是V1.28,(与1.26之前的版本的不同是,V1.27版本之后,需要自己提供MDC时钟,开启自动协商等)

STM32CubeMx配置十分简单,傻瓜式配置就好,这里不阐述。

代码生成后,核心是修改PHY的特殊状态寄存器的值和速度,双工状态的值。不同的PHY芯片这些值都可能不一样。

需要修改的地方:

1)lan8742.c文件,int32_t LAN8742_GetLinkState(lan8742_Object_t *pObj) 函数。

        此函数是获取连接状态的函数,需要读取特殊状态寄存器,修改如下图:

主要为获取连接状态,速度,和双工状态。

2)在网卡驱动文件ethernetif.c文件,static void low_level_init(struct netif *netif)函数中,添加开启自协商的功能。

这里的延时较大,是保证初始化和自协商必定成功,可以按照自己的需求更改。

3)lan8742.c文件   int32_t LAN8742_Init(lan8742_Object_t *pObj)函数,此函数是初始化LAN8742,需要更改:

至此,可以打开cmd命令行,此时,理应可以ping通开发板。

可以ping通后,接下来可以进行UDP应用实验:

新建一个UDP线程,线程内容为:

这里使用的是静态IP,需要关闭DHCP。开发板IP是192.168.10.100,PC端IP是192.168.10.200..

使用网络调试助手发送数据到开发板,开发板会回送所收数据到网络调试助手:

非常简单的一个实验

补充一点:在初始化ETH IO复用的同时,最好硬件复位一下PHY

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值