完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
实现STM32F407+FreeRTOS+Ethernet(DP83848)+Lwip实现socket通信,在实现之前我们先来了解下几点储备知识
一. 以太网行业标准MII/RMII 1 以太网接口MII,RMII MII即“媒体独立接口”,也叫“独立于介质的接口”。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。 RMII全称为“简化的媒体独立接口”,是IEEE-802.3u标准中除MII接口之外的另一种实现。 1.1. 独立于介质的接口(MII) 独立于介质的接口(MII)用于MAC与外接的PHY互联,支持10Mbit/s和100Mbit/s数据传输模式。MII的信号线如下图所示:
1.2 精简的独立于介质的接口(RMII) 精简的独立于介质接口(RMII)规范减少了以太网通信所需要的引脚数。根据IEEE802.3标准,MII接口需要16个数据和控制信号引脚,而RMII标准则将引脚数减少到了7个。RMII具有以下特性: 时钟信号需要提高到50MHz.MAC和外部的以太网PHY需要使用同样的时钟源 ,使用2位宽度的数据收发 RMII的信号线如下图所示: 1.3 时钟源 1)MII时钟源 为了产生TX_CLK和RX_CLK时钟信号,外接的PHY模块必需有来自外部的25MHz时钟驱动。该时钟不需要与MAC时钟相同。可以使用外部的25MHz晶体。当时钟来源MCO引脚时需配置合适的PLL,保证MCO引脚输出的时钟为25MHZ。 2)RMII时钟源 通过将相同的时钟源接到MAC和以太网PHY的REF_CLK引脚保证两者时钟源的同步。可以通过外部的50MHZ信号或者GD32F107xx微控制器的MCO引脚提供这一时钟。当时钟来源MCO引脚时需配置合适的PLL,保证MCO引脚输出的时钟为50MHZ。 3)总结 采用MII接口,PYH的时钟频率要求25M,不需要与MAC层时钟一致。 采用RMII接口,PYH的时钟频率要求50M,需与MAC层时钟一致,通常从MAC层获取该时钟源。 二. 以太网芯片(DP83848介绍) 芯片datasheet如下: dp83848c.pdf 1. DP83848芯片概述 DP83848是TI出的一款以太网物理层IC,有以下feature 一般工规芯片选择DP83848I就行了 2. DP83848引脚介绍 2.1 Serial Management Interface 2.2 MAC Data Interface 2.3 Clock Interface 2.4 LED Interface 2.5 Reset and Power Down 3. DP83848中断寄存器 这个在后面移植的low_level_init会用到 三. CubeMx配置以太网芯片DP83848 1. DP83848 GPIO配置 HR91105A是这个 CubeMx GPIO配置如下(通过原理图可以看到是RMII接口): 2. Cubemx Advanced Paramter配置 这里会牵扯到三个配置: 2.1 External PHY Configuration 此部分一共牵扯到以下部分: PHY: 外部PHY芯片,我们开发板是选择的这个DP83848,所以默认可以直接勾选上 PHY Address Value: 外部PHY芯片的地址,可以看到DP83848芯片是根据map来的,默认PHYAD0是默认上拉的,PHYAD[4:1]是默认下来的,所以默认地址是0x01 其他默认配置就行了! 2.2 Common:External PHY Configuration 这个我们选择默认就好 2.3 Extended:External PHY Configuration 这个我们选择默认就好 四. lwip介绍 LwIP 全名:Light weight IP,意思是轻量化的 TCP/IP 协议,是瑞典计算机科学院 (SICS) 的 Adam Dunkels 开发的一个小型开源的 TCP/IP 协议栈。LwIP 的设计初衷是:用少量的资源消耗实现一个较为完整的TCP/IP 协议栈,其中“完整”主要指的是 TCP 协议的完整性,实现的重点是在保持 TCP 协议主要功能的基础上减少对 RAM 的占用。此外 LwIP 既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行。 LwIP 具有主要特性:
LwIP 尽管有如此多的优点,但它毕竟是为嵌入式而生,所以并没有很完整地实现 TCP/IP 协议栈。相比于 Linux 和 Windows 系统自带的 TCP/IP 协议栈,LwIP 的功能不算完整和强大。但对于大多数物联网领域的网络应用程序,LwIP 已经足够了。 1.文件列表 可以通过这个链接去下载lwip的代码:http://download.savannah.nongnu.org/releases/lwip/ 打开后就是这个模样: 文件列表大体分为几类: 1)drivers ,主要是提供一款32位的MCU(MCF5223X)部分驱动以及一款Eth的LAN芯片(CS8900A) 2)older_versions,主要是提供一些旧(1.4.0以前的版本)的lwip版本以及Contrib source code 3)contrib-xxxx,主要提供一些辅助代码(示例/移植等) 4)lwip-xxxxx,lwip对应版本的代码 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 18:46 , Processed in 0.833153 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号