1.以太网是什么以太网是目前局域网LAN里最常用的有线通信技术。如路由器开发板上RJ485网口核心思路多台设备挂在同一”总线“上早期是共享介质现在是交换机点对点用MAC地址标识每一台设备数据被打包成以太网帧Frame在链路上传输常见速率标准速率线缆10Base-T10 Mbps双绞线100Base-T100 Mbs五类线1000Base-T1 Gps五类/超五类线W5500支持 10/100 Mbps 自适应不支持千兆。2.网络分层先知道自己在哪一层先不必背完整OSI分层先理清应用层 HTTPMQTT自定义协议 传输层 TCPUDP 网络层 IPICMPARP 数据链路层 以太网 MAC 物理层 PHY网线变压器类比寄快递物理层公路、卡车电信号、网线MAC 层小区门牌号MAC 地址全球唯一硬件地址IP 层收件人 IP 地址可配置、可变化TCP/UDP快递单类型可靠传输 vs 尽力而为应用层包裹里具体是什么网页、传感器数据等MCU做联网时要先清楚哪些层由软件实现哪些层由硬件芯片代劳。3.以太网帧结构一帧以太网数据大致如下| 目的MAC(6B) | 源MAC(6B) | 类型(2B) | 数据(46~1500B) | CRC(4B)目的MAC发给谁广播地址FF:FF:FF:FF:FF:FF表示所有人源MAC谁发的类型上层协议例如 0x0800 表示 IPv4数据IP包等内容CRC校验MCU通常不直接拼以太网帧而是由 MAC/PHY 或专用芯片如W5500处理4.MAC地址与IP地址MAC地址6字节例如 00:08:DC:12:34:56出厂烧录或按规则配置局域网内标识(哪块网卡)APR协议负责把IP映射到MACIP地址IPv4为4字节例如 192.168.1.100同一网段内可直接通信跨网段需经网关Gateway转发典型局域网配置1 IP 地址: 192.168.1.100 2 子网掩码: 255.255.255.0 (/24前 24 位为网络号) 3 网关: 192.168.1.1 (通常是路由器)判断两台设备是否同网段IP 与子网掩码做 AND 运算网络号相同即可直连否则走网关。5.TCP与UDP(传输层)TCP(传输控制协议)面向连接先握手3次再传数据最后断开四次挥手可靠丢包会重传顺序有保证适用HTTPModbus TCP远程配置文件配置。典型流程1 客户端 服务器 2 |---- SYN ----------------| 3 |--- SYNACK -------------| 4 |---- ACK ----------------| 5 | 数据传输 | 6 | 数据传输 | 7 |---- FIN ----------------| 8 ...UDP(用户数据报协议)无连接发出去就完事不保证到达顺序适用视频流DNS对实时性要求高可容忍丢包的场景。W5500 同时支持 TCP 和 UDP通过 Socket套接字适用。6.以太网硬件MACPHY变压器一块能上网的以太网接口通常包含模块作用MAC数据链路层组帧/解帧MAC地址过滤PHY物理层编码链路协商10/100M全双工/半双工网络变压器电气隔离阻抗匹配保护芯片RJ45物理接口接网线链路协商插上网线后两端自动协商速率和双工模式。链路 down时先查网线交换机端口模块供电再查软件。7.嵌入式以太网方案对比MCU接入以太网常见三种路线方案1MCU内置MAC PHY例如某型号自带ETH外设外接LAN8720等PHY优点带宽高灵活可跑完整LwIP缺点软件栈复杂占用RAM/FLash调试成本高方案2MCU 软件TCP/IP协议栈如LwIP 外置MAC/PHY协议栈在MCU上跑工作量大但可定制深度方案3MCU 硬件TCP/IP芯片如W5500TCP/IP协议在芯片内部使用硬件逻辑实现MCU只通过SPI操作Socket优点开发快占用MCU资源少行为稳定缺点灵活性低于纯软件栈部分高级特性不支持如IP分片LAN8720以太网模块LAN8720A是一颗 10/100M 以太网物理层芯片PHY。它负责把MAC侧的数字信号转换成网线上的模拟信号并完成链路检测自协商和Auto-MDIX。它本身不包含TCP/IP协议栈也不替代MCU里的MAC。典型连接关系1.以太网硬件分层完整以太网口通常由三部分组成MAC负责以太网帧的发送接收地址过滤CRC等。很多MCU片内就带ETHMACPHY负责物理层收发。LAN8720A就属于这层。变压器 RJ45负责电气隔离和线缆接口。可以外挂也可以做到网口座里。MAC 和 PHY 之间需要标准数字接口常见的是MII 和RMII。LAN8720A使用的是RMII。2.MIIMII全称Media Independent Interface媒体独立接口是 IEEE 802.3定义的MAC与PHY接口。“媒体无关”含义MAC不关心对面是铜缆还是光纤只按统一数字教收发数据介质相关工作交给PHY。传输引脚与信号数据线TXD[3:0]发送 4 位、RXD[3:0]接收 4 位控制线TX_EN发送使能、RX_DV接收有效、TX_ER发送错误、RX_ER接收错误时钟线TX_CLK发送时钟、RX_CLK接收时钟两套独立时钟状态线CRS载波侦听、COL冲突检测管理线MDC/MDIO这俩是 MDIO 接口用来读写 PHY 芯片的寄存器如配置速度、读取状态。信号方向相对 MAC作用TX_CLKPHY → MAC发送时钟TXD[3:0]MAC → PHY发送数据TX_ENMAC → PHY发送使能TX_ERMAC → PHY发送错误可选RX_CLKPHY → MAC接收时钟RXD[3:0]PHY → MAC接收数据RX_DVPHY → MAC接收数据有效RX_ERPHY → MAC接收错误CRSPHY → MAC载波侦测COLPHY → MAC冲突检测管理总线信号作用MDC管理时钟MDIO管理数据双向固虽MII 功能完整但引脚多布线成本高对引脚紧张的 MCU 不太友好。MII 的速度是多少标准 MII 接口的时钟TX_CLK/RX_CLK频率是25 MHz。因为在时钟的每个周期4 根数据线同时传输 4 个 bit25 MHz×4 bit100 Mbps25 MHz×4 bit100 Mbps所以MII 是专门为 100M 以太网设计的在 10M 模式下时钟降为 2.5MHz。总的来说MII 是连接 MCU 内部 MAC 和外部 PHY 的 16 线并行标准接口3.RMIIRMII 全称 Reduced Media Independent Interface是 MII 的精简版本目标是减少引脚数量同时仍支持 10/100 Mbps。精简方式RMII相对MII做了这些调整数据宽度从4bit减到2bit100M 时钟从25MHz提高到50Mhz收发共用同一个 REF_CLK将 CRS 和 RX_DV 合并为 CRS_DV去掉独立的 COLRX_ER 变为可选100Mbps时仍满足带宽2bit X 50MHz 100Mbps10Mbps 时RMII通常仍使用 50MHz 参考时钟由内部逻辑完成速率适配不像MII那样把数字降到 2.5MHz。主要信号信号方向相对 MAC作用REF_CLK共同参考时钟50 MHz收发都参考它TXD0 / TXD1MAC → PHY发送数据TX_ENMAC → PHY发送使能RXD0 / RXD1PHY → MAC接收数据CRS_DVPHY → MAC载波侦测与数据有效RX_ERPHY → MAC接收错误可选管理口保持不变信号作用MDC管理时钟MDIO管理数据MII 与 RMII 对比项目MIIRMII支持速率10/100 Mbps10/100 Mbps数据位宽4 bit2 bit100M 时钟25 MHz50 MHz时钟结构TX_CLK RX_CLK单一 REF_CLK数据有效RX_DV并入 CRS_DV载波侦测CRS并入 CRS_DV冲突检测COL无独立脚引脚数量较多较少LAN8720A不支持完整 MII仅支持 RMII4. MDIO 管理接口RMII 负责数据传输 MDIO 负责配置和状态查询。MDIO也称为 SMI只有两根线MDC时钟由MAC 侧输出MDIO双向数据线通常需要上拉一根 MDIO 总线最多可挂载32个 PHY通过 5 bit地址区分。常见操作包括读 PHY ID确认芯片是否在线软复位使能自协商查询链路是否建立读取当前速率和双工模式STM32一类MCU通常提供封装接口例如1HAL_ETH_ReadPHYRegister(...);2HAL_ETH_WritePHYRegister(...);5. LAN8720A 功能特点LAN8720A 的主要特点支持 10BASE-T / 100BASE-TX数字接口为 RMII支持自协商支持 HP Auto-MDIX直通线和交叉线都可使用可通过 MDIO 访问标准 PHY 寄存器可使用 25 MHz 晶振并在特定配置下输出 50 MHz 参考时钟封装小适合嵌入式板级设计它完成的是物理层工作不负责 IP、TCP、UDP、HTTP 这些上层协议。6.LAN8720A引脚分组引脚按功能分一下几组RMII 数据引脚信号方向相对 PHY作用TXEN输入发送使能TXD0输入发送数据 bit0TXD1输入发送数据 bit1RXD0输出接收数据 bit0RXD1输出接收数据 bit1CRS_DV输出载波侦测 / 数据有效RXER输出接收错误可选连接发送时MAC在 REF_CLK 节拍下给出TXD[1:0]并拉高 TXEN。接收时PHY 通过RXD[1:0]送出数据并用 CRS_DV 指示有效性。管理引脚信号作用MDC管理时钟MDIO管理数据软件对 PHY 的配置和状态读取都走这两根线。时钟与复位信号作用XTAL1 / CLKIN晶振输入或外部时钟输入XTAL2晶振输出端nINT / REFCLKO中断输出或 50 MHz 时钟输出nRST低有效复位RMII 需要 50 MHz 参考时钟常见两种方式PHY 输出 50 MHzLAN8720 使用 25 MHz 晶振通过配置让REFCLKO输出 50 MHz 给 MAC。外部提供 50 MHz由外部时钟源同时供给 PHY 和 MAC此时nINT/REFCLKO更常作为中断脚使用。具体使用哪种方式由复位时的配置脚电平决定。模拟与电源信号作用TXP / TXN差分线接变压器RXP / RXN差分线接变压器RBIAS偏置电阻脚通常接精密电阻到地VDDIOIO 电源VDDCR内核电源VDD1A / VDD2A模拟电源差分线必须经过网络变压器再接到 RJ45不能直接挂到网口金属端子上。7. 复位配置脚LAN8720A 有一部分引脚在正常工作时是功能脚在复位释放瞬间会被采样为配置值。这类脚称为 strap 脚。常见配置包括PHY 地址由RXER/PHYAD0在复位时采样低电平地址偏向 0高电平地址偏向 1软件中的 PHY 地址必须与硬件一致否则 MDIO 读写会失败。默认工作模式由MODE[2:0]组合决定这些信号与RXD0RXD1CRS_DV复用。常见默认是进入自协商模式。内部1.2V稳压器由 LED1/REGOFF 决定是否使用内部LDO。关闭内部LDO时需要外部提供1.2V给内核电源脚。这些配置在硬复位释放时锁存。运行过程中临时改变外部电平不会自动改写已经锁存的配置。以下是图片中提取的文本和表格内容8. 关键寄存器驱动开发中最常用的寄存器如下寄存器地址作用BCR0x00软复位、自协商使能、掉电控制BSR0x01链路状态、自协商完成标志PHY ID10x02厂商/芯片识别高位PHY ID20x03厂商/芯片识别低位PHYSCSR0x1F自协商后的速度和双工结果LAN8720 的 PHY ID 通常接近ID10x0007ID20xC0Fx低 4 bit 为版本号链路检测常见流程连续读取两次 BSR判断链路是否建立读取PHYSCSR解析 10M/100M半双工/全双工9.软件开发流程一个通用的LAN8720驱动流程如下初始化 MAC 侧接口配置 MCU和ETH外设为 RMII配置相关GPIO保证 50MHz 参考时钟有效初始化 MDIO 时钟分频识别PHY按硬件设计确定PHY地址或扫描0~31读取PHY ID确认芯片在线初始化PHY硬件复位或等待上电稳定通过BCR做软复位使能自协商退出掉电状态查询链路周期性读取链路状态在链路变化时更新MAC侧双工和速率配置再进入协议栈初始化1 供电与复位正常 2 - 3 RMII 时钟与接线正确 4 - 5 MDIO 能读到 PHY ID 6 - 7 插拔网线能看到 Link 变化 8 - 9 再接入 TCP/IP 协议栈10.LAN8720总结LAN8720A 是一颗 RMII 接口的 10/100M PHY。使用它时先理解 MII 与 RMII 的差异再按硬件设计接好 RMII、MDIO、时钟和复位最后通过寄存器完成识别、初始化和链路查询。物理层打通的标志很明确MDIO 能稳定读到 PHY ID插拔网线能看到链路状态变化能正确读出 10M/100M 与双工模式
阅读完成 · 觉得有帮助?