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

STM32是一款高性能、低功耗的嵌入式微控制器,具有32位RISC架构和高度可定制化的特点,广泛应用于各种智能设备中。 UDP(User Datagram Protocol)是一种面向无连接的传输协议,相比于TCP(Transmission Control Protocol),UDP具有无需建立连接、无需保证可靠性等特点,因此在数据传输速度要求较高、数据重要性相对较低的场景下广泛应用。 实现STM32UDP发送,通常需要以下几个步骤: 1. 初始化网络通信模块:根据硬件平台不同(如ENC28J60、W5500、LWIP等),可以使用相应的网络库进行初始化。 2. 配置UDP参数:包括本地IP地址、接收端IP地址、端口号等,需要根据具体应用场景设置,一般可以通过用户界面进行配置,也可以在代码中进行设置。 3. 实现UDP发送:获得数据并组装UDP数据包(包括源IP地址、目标IP地址、端口号等),调用发送函数完成数据发送。 4. 处理发送回调:通过回调函数处理发送是否成功,进行相应的错误处理。 需要注意以下几点: 1. STM32的网络收发是通过中断方式实现的,要保证中断优先级正确。 2. 要根据具体应用场景选择适当的UDP收发方式(如广播、多播、点对点等)。 3. 要根据实际需求进行UDP数据包大小、发送频率、重传机制等参数的设置,以保证网络通信的稳定性和效率。 以上是STM32 UDP发送的基本过程和需要注意的事项,具体实现方法可以根据所用的硬件平台和网络库进行适当调整。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值