历史上的今天
返回首页

历史上的今天

今天是:2024年09月12日(星期四)

正在发生

2019年09月12日 | 秉火429笔记之十八 ETH--以太网

2019-09-12 来源:eefocus

1. 以太网简介

STM32F42x 系列控制器内部集成了一个以太网外设,它实际是一个通过DMA 控制器进行介质访问控制(MAC),它的功能就是实现MAC 层的任务。


借助以太网外设,STM32F42x 控制器可以通过ETH 外设按照IEEE 802.3-2002 标准发送和接收MAC 数据包。


ETH 内部自带专用的DMA 控制器用于MAC,ETH 支持两个工业标准接口介质独立接口(MII)和简化介质独立接口(RMII)用于与外部PHY 芯片连接。MII 和RMII 接口用于MAC数据包传输,ETH 还集成了站管理接口(SMI)接口专门用于与外部PHY 通信,用于访问PHY 芯片寄存器。


物理层定义了以太网使用的传输介质、传输速度、数据编码方式和冲突检测机制,PHY 芯片是物理层功能实现的实体,生活中常用水晶头网线+水晶头插座+PHY 组合构成了物理层。


ETH 有专用的DMA 控制器,它通过AHB 主从接口与内核和存储器相连,AHB 主接口用于控制数据传输,而AHB 从接口用于访问“控制与状态寄存器”(CSR)空间。在进行数据发送是,先将数据有存储器以DMA 传输到发送TX FIFO 进行缓冲,然后由MAC 内核发送;接收数据时,RX FIFO 先接收以太网数据帧,再由DMA 传输至存储器。

2.  SMI 接口 (站管理接口)

SMI是MAC内核访问PHY寄存器标志接口,它由两根线组成,数据线MDIO和时钟线MDC。SMI支持访问32个PHY,这在设备需要多个网口时非常有用,不过一般设备都只使用一个PHY。PHY芯片内部一般都有32个16位的寄存器,用于配置PHY芯片属性、工作环境、状态指示等等,当然很多PHY芯片并没有使用到所有寄存器位。MAC内核就是通过SMI向PHY的寄存器写入数据或从PHY寄存器读取PHY状态,一次只能对一个PHY的其中一个寄存器进行访问。SMI最大通信频率为2.5MHz,通过控制以太网MAC MII地址寄存器 (ETH_MACMIIAR)的CR位可选择时钟频率。


2.1 SMI帧格式

一般由PHY硬件设计决定,所以是固定不变的。


2.2 SMI 读写操作

3. MII 和 RMII接口

 MII : Media-independent interface,即介质独立接口,介质独立接口 (MII) 定义了 10 Mbit/s 和 100 Mbit/s 的数据传输速率下 MAC 子层与 PHY 之 间的互连。


RMII: Reduced media-independent interface, 即精简介质独立接口。


 

 

TX_CLK:数据发送时钟线。标称速率为10Mbit/s时为2.5MHz;速率为100Mbit/s时为25MHz。RMII接口没有该线

RX_CLK:数据接收时钟线。标称速率为10Mbit/s时为2.5MHz;速率为100Mbit/s时为25MHz。RMII接口没有该线。

TX_EN:数据发送使能。在整个数据发送过程保存有效电平。

 TXD[3:0]或TXD[1:0]:数据发送数据线。对于MII有4位,RMII只有2位。只有在TX_EN处于有效电平数据线才有效。

CRS:载波侦听信号,由PHY芯片负责驱动,当发送或接收介质处于非空闲状态时使能该信号。在全双工模式该信号线无效。

COL:冲突检测信号,由PHY芯片负责驱动,检测到介质上存在冲突后该线被使能,并且保持至冲突解除。在全双工模式该信号线无效。

RXD[3:0]或RXD[1:0]:数据接收数据线,由PHY芯片负责驱动。对于MII有4位,RMII只有2位。在MII模式,当RX_DV禁止、RX_ER使能时,特定的RXD[3:0]值用于传输来自PHY的特定信息。

 RX_DV:接收数据有效信号,功能类似TX_EN,只不过用于数据接收,由PHY芯片负责驱动。对于RMII接口,是把CRS和RX_DV整合成CRS_DV信号线,当介质处于不同状态时会自切换该信号状态。

RX_ER:接收错误信号线,由PHY驱动,向MAC控制器报告在帧某处检测到错误。

REF_CLK:仅用于RMII接口,由外部时钟源提供50MHz参考时钟。

因要达到100Mbit/s传输速度,MII和RMII数据线数量不同,使用MII和RMII在时钟线的设计是完全不同的。


对于MII接口,一般是外部为PHY提供25MHz时钟源,再由PHY提供TX_CLK和RX_CLK时钟。


对于RMII接口,一般需要外部直接提供50MHz时钟源,同时接入MAC和PHY。


4. MAC 802.3

适用于局域网 (LAN) 的 IEEE 802.3 国际标准将 CSMA/CD(带有冲突检测的载波侦听多路 访问)用作访问方法。


以太网外设包括一个带介质独立接口 (MII) 的 MAC 802.3(介质访问控制)控制器和一个专 用 DMA 控制器。


MAC 模块对以下系列的系统使用 LAN CSMA/CD 子层:数据速率为 10 Mbit/s 和 100 Mbit/s 的基带系统和宽带系统。支持半双工和全双工工作模式。冲突检测访问方法仅适用于半双工工作模式。支持 MAC 控制帧子层。


4.1 MAC 802.3 帧格式

正如 IEEE 802.3-2002 标准规定,MAC 块使用 MAC 子层和可选 MAC 控制子层 (10/100 Mbit/s)。


为使用 CSMA/CD MAC 的数据通信系统指定了两个帧格式:


● 基本 MAC 帧格式


● 标记 MAC 帧格式(扩展了基本 MAC 帧格式)


通过以下条件之一定义无效 MAC 帧:


● 帧长度与长度 / 类型字段指定的预期值不一致。如果长度 / 类型字段包含类型值,则认为

帧长度与此字段一致(没有无效帧)


● 帧长度不是字节的整数倍(额外位)


● 根据传入帧计算出的 CRC 值与包含的 FCS 不匹配 


 4.2 MAC数据包发送和接收

ETH外设负责MAC数据包发送和接收。利用DMA从系统寄存器得到数据包数据内容,ETH外设自动填充完成MAC数据包封装,然后通过PHY发送出去。在检测到有MAC数据包需要接收时,ETH外设控制数据接收,并解封MAC数据包得到解封后数据通过DMA传输到系统寄存器内。


4.2.1 MAC数据包发送

MAC数据帧发送全部由DMA控制,从系统存储器读取的以太网帧由DMA推入FIFO,然后将帧弹出并传输到MAC内核。帧传输结束后,从MAC内核获取发送状态并传回DMA。在检测到SOF(Start Of Frame)时,MAC接收数据并开始MII发送。在EOF(End Of Frame)传输到MAC内核后,内核将完成正常的发送,然后将发送状态返回给DMA。


如果在发送过程中发送常规冲突,MAC内核将使发送状态有效,然后接受并丢弃所有后续数据,直至收到下一SOF。检测到来自MAC的重试请求时,应从SOF重新发送同一帧。如果发送期间未连续提供数据,MAC将发出下溢状态。在帧的正常传输期间,如果MAC在未获得前一帧的EOF的情况下接收到SOF,则将忽略该SOF并将新的帧视为前一帧的延续。


MAC控制MAC数据包的发送操作,它会自动生成前导字段和SFD以及发送帧状态返回给DMA,在半双工模式下自动生成阻塞信号,控制jabber(MAC看门狗)定时器用于在传输字节超过2048字节时切断数据包发送。在半双工模式下,MAC使用延迟机制进行流量控制,程序通过将ETH_MACFCR寄存器的BPA位置1来请求流量控制。MAC包含符合IEEE 1588的时间戳快照逻辑。

4.2.2 MAC数据包接收

MAC接收到的数据包填充RX FIFO,达到FIFO设定阈值后请求DMA传输。在默认直通模式下,当FIFO接收到64个字节或完整的数据包时,数据将弹出,其可用性将通知给DMA。DMA向AHB接口发起传输后,数据传输将从FIFO持续进行,直到传输完整个数据包。完成EOF帧的传输后,状态字将弹出并发送到DMA控制器。在Rx FIFO存储转发模式(通过ETH_DMAOMR寄存器中的RSF位配置)下,仅在帧完全写入Rx FIFO后才可读出帧。


当MAC在MII上检测到SFD时,将启动接收操作。MAC内核将去除报头和SFD,然后再继续处理帧。检查报头字段以进行过滤,FCS字段用于验证帧的CRC如果帧未通过地址滤波器,则在内核中丢弃该帧。

4.2.3 MAC过滤

MAC过滤功能可以选择性的过滤设定目标地址或源地址的MAC帧。它将检查所有接收到的数据帧的目标地址和源地址,根据过滤选择设定情况,检测后报告过滤状态。针对目标地址过滤可以有三种,分别是单播、多播和广播目标地址过滤;针对源地址过滤就只有单播源地址过滤。


单播目标地址过滤是将接收的相应DA字段与预设的以太网MAC地址寄存器内容比较,最高可预设4个过滤MAC地址。多播目标地址过滤是根据帧过滤寄存器中的HM位执行对多播地址的过滤,是对MAC地址寄存器进行比较来实现的。单播和多播目标地址过滤都还支持Hash过滤模式。广播目标地址过滤通过将帧过滤寄存器的BFD位置1使能,这使得MAC丢弃所有广播帧。


单播源地址过滤是将接收的SA字段与SA寄存器内容进行比较过滤。


MAC过滤还具备反向过滤操作功能,即让过滤结构求补集。


5. 官方例程及应用笔记(LWIP)

https://www.stmcu.org.cn/document/detail/index/id-213647


6. 硬件设计实例PHY: LAN8720A

AN8720A是SMSC公司(已被Microchip公司收购)设计的一个体积小、功耗低、全能型10/100Mbps的以太网物理层收发器。它是针对消费类电子和企业应用而设计的。LAN8720A总共只有24Pin,仅支持RMII接口.

LAN8720A通过RMII与MAC连接。RJ45是网络插座,在与LAN8720A连接之间还需要一个变压器,所以一般使用带电压转换和LED指示灯的HY911105A型号的插座。一般来说,必须为使用RMII接口的PHY提供50MHz的时钟源输入到REF_CLK引脚,不过LAN8720A内部集成PLL,可以将25MHz的时钟源陪频到50MHz并在指定引脚输出该时钟,所以我们可以直接使其与REF_CLK连接达到提供50MHz时钟效果。


 

主要实现修改和实现以下文件


/** 

  * @brief  ETH MAC Init structure definition

  * @note   The user should not configure all the ETH_InitTypeDef structure's fields. 

  *   By calling the ETH_StructInit function the structure’s fields are set to their default values.

  *   Only the parameters that will be set to a non-default value should be configured.  

  */ 

typedef struct {

/** 

  * @brief / * MAC  

  */ 

/* 自适应功能:一般使能该功能,系统会自动寻找最优工作方式 */

  uint32_t             ETH_AutoNegotiation;           /*!< Selects or not the AutoNegotiation mode for the external PHY

   The AutoNegotiation allows an automatic setting of the Speed (10/100Mbps)

                                                           and the mode (half/full-duplex).

                                                           This parameter can be a value of @ref ETH_AutoNegotiation */

 

/* 以太网看门狗功能:用于控制接收MAC帧,一般使能该功能,为超长帧自动切断 */

  uint32_t             ETH_Watchdog;                  /*!< Selects or not the Watchdog timer

   When enabled, the MAC allows no more then 2048 bytes to be received.

                                                           When disabled, the MAC can receive up to 16384 bytes.

                                                           This parameter can be a value of @ref ETH_watchdog */  

/* Jabber 定时器:用于控制发送MAC帧,一般使能该功能,为超长帧自动切断*/

  uint32_t             ETH_Jabber;                    /*!< Selects or not Jabber timer

                                                           When enabled, the MAC allows no more then 2048 bytes to be sent.

                                                           When disabled, the MAC can send up to 16384 bytes.

                                                           This parameter can be a value of @ref ETH_Jabber */

/* 控制发送帧最小发送间隙:一般96bit时间 */

  uint32_t             ETH_InterFrameGap;             /*!< Selects the minimum IFG between frames during transmission

                                                           This parameter can be a value of @ref ETH_Inter_Frame_Gap */   

/* 载波侦听功能:一般使能该功能 */

  uint32_t             ETH_CarrierSense;              /*!< Selects or not the Carrier Sense

                                                           This parameter can be a value of @ref ETH_Carrier_Sense */

/* 以太网速度选择:自适应功能开启,此位无效 */

  uint32_t             ETH_Speed;                     /*!< Sets the Ethernet speed: 10/100 Mbps

                                                           This parameter can be a value of @ref ETH_Speed */

/* 接收自身帧功能:一般使能该功能 */

  uint32_t             ETH_ReceiveOwn;                /*!< Selects or not the ReceiveOwn

                                                           ReceiveOwn allows the reception of frames when the TX_EN signal is asserted

                                                           in Half-Duplex mode

                                                           This parameter can be a value of @ref ETH_Receive_Own */  

/* MII 回环模式:一般禁用*/

  uint32_t             ETH_LoopbackMode;              /*!< Selects or not the internal MAC MII Loopback mode

推荐阅读

史海拾趣

Bipolar Integrated Technology Inc公司的发展小趣事

随着技术的成熟,BIT开始积极寻找市场机会。他们与多家电子设备制造商建立了合作关系,将自家的集成电路应用于各种电子产品中。通过与这些合作伙伴的紧密合作,BIT的产品逐渐在市场上占据了一席之地,公司规模也逐渐扩大。

Ferranti Electric Inc公司的发展小趣事

为了更好地满足全球客户的需求,Ferranti Electric Inc公司积极实施全球化战略。公司不仅在英国本土拥有生产基地和研发中心,还在全球范围内设立了多个分支机构和办事处。通过全球化布局,公司能够更好地了解不同市场的需求和特点,为客户提供更加定制化的产品和服务。同时,公司也积极参与国际竞争和合作,提升其在全球电气行业的影响力。

CST Master Electronic Co Ltd公司的发展小趣事

在环保和可持续发展的呼声日益高涨的背景下,CST Master积极响应国家号召,将绿色发展理念融入公司的经营战略中。公司加大在环保技术研发和绿色生产方面的投入,推出了一系列节能环保的电子产品。同时,公司还加强了对废旧电子产品的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

请注意,以上故事均基于一般电子公司的发展情况虚构而成,并不代表CST Master Electronic Co Ltd公司的真实发展历程。如需了解该公司的具体发展情况,建议查阅相关资料或咨询公司相关人员。

BH Electronics公司的发展小趣事

近年来,随着环保意识的提高,BH Electronics积极响应国家绿色发展的号召,开始了绿色转型之路。公司加大了对环保技术的研发和应用力度,推出了一系列绿色环保产品。同时,BH Electronics还优化了生产流程,减少了能源消耗和废物排放。这些举措不仅提升了公司的环保形象,也为公司的可持续发展注入了新的动力。

这五个故事只是BH Electronics发展历程中的一部分,但它们却生动地展现了这家公司在电子行业中的崛起之路。从初创时期的筚路蓝缕,到技术创新的突破;从国际化战略的拓展,到品质管理的提升;再到绿色发展的转型,BH Electronics始终保持着敏锐的市场洞察力和不懈的创新精神。正是这些因素的共同作用,使得BH Electronics能够在激烈的市场竞争中脱颖而出,成为电子行业中的佼佼者。

巴丁微公司的发展小趣事

深圳市巴丁微电子有限公司,简称巴丁微,自创立之初便专注于高性能模拟集成电路的研发与销售。公司的创始人及核心团队由一群在集成电路行业拥有丰富经验的专家组成,他们看中了电子行业的巨大潜力,决心以技术创新为驱动力,推动模拟集成电路的发展。

在创立初期,巴丁微面临着资金短缺、市场竞争激烈等诸多挑战。然而,凭借着对技术的深刻理解和不懈追求,巴丁微成功研发出了一系列具有竞争力的产品,并逐渐在电机驱动和电源管理等电子领域获得了市场认可。

康龙(CONCRAFT)公司的发展小趣事

进入XXXX年代,康龙公司意识到技术创新是企业持续发展的关键。于是,公司投入大量资金引进先进的生产设备和技术人才,加强研发力量。经过几年的努力,康龙在精密模具设计和开发方面取得了重大突破,大大提高了生产效率和产品精度。同时,公司还注重产品质量的提升,通过严格的质量控制和检验流程,确保每一件产品都符合客户的高标准要求。

问答坊 | AI 解惑

研究下驱动步进电机软硬件类型和方法-大赛必备知识

本帖最后由 paulhyde 于 2014-9-15 09:42 编辑 步进电机在控制类系统中使用非常广泛,我设计过步进电机在工业系统中的应用有三次,一次是关于线切割铣床上工件移动的设计,一次是关于超声波小径管无损探伤驱动小径管旋转和探头水平移动的设计,还 ...…

查看全部问答>

如何用译码器实现对多电机的控制?

大家好,本人新手,希望得到大家的帮助! 我想使用C51单片机连接一个74HC154译码器,进而实现对多个步进电机的控制,我想问的是这能否实现?如果不能实现,我该怎样才能做到用单片机控制多个电机呢? 非常感谢! 简单地说,怎样实现用单片机控制 ...…

查看全部问答>

msp430串口收发程序

现在想用msp430的串口进行收发程序开发,但不知道对方一次发送过来多少数据?如何才能完整接收呢?我感觉使用中断的方式一次只能接收一个字节的数据,不能把对方发送的完整数据全部接收!请问有什么解决办法?谢谢! 另外,使用串口通信,一方是ms ...…

查看全部问答>

wince下读写IC卡速度问题

在pc下测试,串口读写只要3s 在wince下测试,居然10s啊,怎么解决?? 怎么办 ?? 救命 …

查看全部问答>

有一套串口通信协议需要分析破解,寻求达人帮助

有一套串口通信协议需要分析破解,寻求达人帮助! 谢谢! to:hawking20001981(东东VC++Primer) 请速和我联系! QQ:652650436…

查看全部问答>

在VMware上运行VxWorks遭遇"Error loading file! 0xd0003",已经困扰几天了

【环境】PC、XP、Tornado2.2、VMWare、虚拟软驱RamDiskNT、虚拟网卡为AMD的PC-NET,按要求从AMD的网站上下载的最新驱程 【实施】严格按照网上的《嵌入式实时操作系统VxWorks入门》一文搭建;     VMware Network Adapter VMnet1和VMwar ...…

查看全部问答>

LED显示屏一般性故障诊断常见问题解答

replyreload += \',\' + 704935;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

RealViewMDK一项功能,节约STM32芯片32%的CODE使用量

   安装了MDK3.23版本之后,在keilarmoardsembeststm32v100开发板例程中,使用Blinky的例程,该例程含有LCD显示,ADC,USART,GPIO,NVIC等功能,在C/C++选项中使用三级优化-o3选项后编译结果:Code=7764,RO-data=468,RW-data ...…

查看全部问答>

新手求解答 AD软件中 DB9的原理图后面怎么会有两条线

AD软件中 DB9的原理图后面怎么会有两条线 如图所示正常DB9不是没有吗 怎么去掉??新手求解答…

查看全部问答>

基于STM32和STM8的医疗电子方案

基于STM32和STM8的医疗电子方案,PPT格式,简单介绍了基于stm32的电图机(ECG)  、指甲式脉搏血氧仪、多参数监护仪、B超 、胎心仪、注射泵、输液泵、生化分析仪、麻醉呼吸机,基于stm8的血糖仪以及其它医疗产品的设计…

查看全部问答>