ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LWIP应用开发|以太网硬件设计二

2021-01-13 12:00:19  阅读:217  来源: 互联网

标签:DMA LWIP 描述符 FIFO 硬件 MAC LAN8720 以太网


以太网硬件介绍

1. STM32以太网外设简介

1.1 ETH逻辑框图

以太网外设包括带专用 DMA 控制器的 MAC 802.3(介质访问控制)。它支持介质独立接口(MII) 和简化介质独立接口 (RMII),并通过一个选择位在两个接口间进行切换(请参见SYSCFG_PMC 寄存器)

DMA 控制器通过 AHB 主从接口与内核和存储器相连。 AHB 主接口用于控制数据传输,而AHB 从接口则用于访问“控制和状态寄存器” (CSR) 的空间

在进行数据发送时,首先将数据由系统存储器以 DMA 的方式送至发送 FIFO (Tx FIFO) 进行缓冲,再通过 MAC 内核发送。同样,接收 FIFO (Rx FIFO) 则存储通过线路接收的以太网帧,直到这些帧通过 DMA 传送到系统存储器

以太网外设还包括用于与外部 PHY 通信的 SMI。通过一组配置寄存器,用户可以为 MAC 控制器和 DMA 控制器选择所需模式和功能
在这里插入图片描述
以太网外设由 4 个主要功能模块组成:

  • 控制和状态寄存器模块 (CSR),用于控制通过 AHB 32 位从接口进行的寄存器访问
  • 直接存储器访问接口 (DMA),此为逻辑 DMA 模块,具有 1 条用于接收的物理通道和 1 条用于发送的物理通道。该模块用于控制通过 AMBA AHB 32 位主接口在 MAC 和系统存储器之间进行的数据传输。
  • 介质访问控制模块 (MAC),负责实现以太网协议
  • MAC 事务层 (MTL),负责控制应用和 MAC 之间的数据流

此外,还增添了协议适配模块以支持 RMII PHY 介质独立接口
在这里插入图片描述

1.2 MAC 802.3

适用于局域网(LAN)的IEEE 802.3国际标准将CSMA/CD(带有冲突检测的载波侦听多路访问)用作访问方法。以太网外设包括一个带MII接口的MAC 802.3(介质访问控制)控制器和一个专用DMA控制器

  • MAC帧格式

在这里插入图片描述

  • 帧发送:从系统存储器读取的以太网帧由DMA推入FIFO,然后将帧弹出并传输到MAC内核。帧传输结束时,从MAC内核获取发送状态并传回DMA

在这里插入图片描述

  • 帧填充和CRC计算:当从应用程序接收到的字节数少于46时,会向发送帧附加零,使数据长度正好为46字节,以满足IEEE 802.3的最小数据字段要求

在这里插入图片描述

1.3 FIFO

FIFO向MAC内核弹出数据有两种模式:

  • 阈值模式:只要FIFO中的字节数超过配置的阈值,数据就准备好弹出并转发到MAC内核
  • 存储转发模式:仅在FIFO中存储完整的帧后,才会想MAC内核弹出帧

在这里插入图片描述

1.4 DMA

以太网外设中,DMA基于描述符的链表传输数据。应用程序在系统存储器(SRAM)中创建描述符。支持正常描述符和上下文描述符两种

以太网模块中的接收/发送FIFO和内存之间的以太网数据包传输时以太网DMA使用DMA描述符完成的。一共有两个描述符列表:一个用于接收、一个用于发送,两个列表的基地址分别写入DMACRDLAR寄存器和DMACTDLAR寄存器中

  • DMA描述符环形结构

在这里插入图片描述

  • DMA描述符环链接结构:到达环结束处时,DMA会自动基于基址进行回卷

在这里插入图片描述

  • DMA描述符格式:以发送正常描述符的读取和回写格式为例

在这里插入图片描述
在这里插入图片描述

2. LAN8720以太网芯片简介

LAN8720是低功耗的10/100M以太网PHY层芯片,I/O引脚电压符合IEEE802.3-2005标准。LAN8720支持通过RMII接口与以太网MAC层通信,内置10-BASE-T/100BASE-TX全双工传输模块,支持10Mbps和100Mbps。LAN8720可以通过自协商的方式与目的主机最佳的连接方式(速度和双工模式)。支持HP Auto-MDIX自动翻转功能,无需更换网线即可将连接更改为直连或交叉连接。

LAN8720功能框图如下图示
在这里插入图片描述
在这里插入图片描述
LAN8720的配置及使用详见LAN8720数据手册,下面简单介绍几种常用功能设置

  • 中断管理:当中断事件发生且相应事件的中断位使能,LAN8720就会在nINT(14脚)产生一个低电平有效的中断信号。提供主中断和复用中断两种模式
  • PHY地址设置:MAC层通过SMI总线对PHY进行读写操作,LAN8720通过设置RXER/PHYAD0引脚来设置PHY地址,默认情况下为0
  • nINT/REFCLKO配置:nINTSEL(2脚)用于设置nINT/REFCLKO(14脚)引脚的功能
  • 内部寄存器:BCR/BSR/PHY等寄存器

3. RJ45网线插头简介

在这里插入图片描述
在这里插入图片描述

标签:DMA,LWIP,描述符,FIFO,硬件,MAC,LAN8720,以太网
来源: https://blog.csdn.net/Chuangke_Andy/article/details/112307368

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有