摘要:本文简要介绍S32K3xx系列芯片的以太网驱动技术
关键词:车载嵌入式芯片应用
一、以太网简介:
文章仅介绍和总结以太网底层链路,即物理层(PHY)和数据链路层(MAC)。
1、从硬件的角度来分析,以太网的电路接口一般由MCU、MAC(Media Access Control)控制器和物理层接口(physical Layer PHY)组成,如下图所示:
对于上述三部分,并不一定都是独立的芯片,主要有以下几种情况:
CPU内部集成了MAC和PHY,难度较高
CPU内部集成MAC,PHY采用独立芯片(主流方案)
CPU不集成MAC和PHY,MAC和PHY采用独立芯片或者集成芯片(高端采用)
当我们的PHY芯片发送数据,接受到MAC层发送过来的数字信号,然后转换成模拟信号,通过MDI接口传输出去。
2、MAC控制器
MAC(Media Access Control),即媒体访问控制子层协议,该部分有两个概念:MAC可以是一个硬件控制器以及MAC通讯协议。该协议位于OSI七层协议中数据链路层的下半部分,主要是负责控制与连接物理层的物理介质。
3 MII接口
MII(Media Independent Interface)即媒体独立接口,MII接口是MAC与PHY连接的标准接口。它是IEEE-802.3定义的以太网行业标准。
MII接口主要包括以下三个部分:
从MAC层到PHY层的发送数据接口
从PHY层到MAC层的接收数据接口
从MAC层和PHY层之间寄存器控制和信息获取的MDIO接口
下面是MII的MAC层定义接口:
MII 数据接口总共需要 16 个信号,包括 TX_ER,TXD[3:0],TX_EN,TX_CLK,COL,RXD[3:0],RX_ER,RX_CLK,CRS,RX_DV 等。MII的时钟为25MHz,传输速率为10/100Mbps。
4 MDC/MDIO接口
MDC/MDIO是MAC内核访问PHY寄存器接口,它由两根线组成,双工,MDC为时钟,MDIO为双向数据通信,原理上跟I2C总线很类似,也可以通过总线访问多个不同的PHY。
MDC/MDIO基本特性:
两线制:MDC(时钟线)和MDIO(数据线)。
时钟频率:可配置
通信方式:总线制,可同时接入的PHY数量为32个
5 PHY模块
发送数据:对于PHY来说,并没有帧的概念,对它来说,不管是地址、数据还是CRC,都会将并行数据转换为串行数据流,在按照物理层的编码规则把数据编码,最终转换成模拟信号发送出去
接收数据:从外部接收数据时,模拟信号先转成数字信号,再经过解码得到数据, 经过MII送到MAC。
6 MDI
MDI(Media Dependent Interface,介质相关/有关接口)也称为上行链路端口,一般用于PC上的NIC(网络接口卡)或集成NIC端口的以太网端口连接。当NIC的传输信号要传输到集线器或网络交换机的接收信号上时,需通过一根直通电缆连接MDIX端口。
MDIX(Medium Dependent Interface Crossover)是计算机、路由器、集线器或网络交换机上常见的8P8C端口。由于MDIX是MDI端口的交叉版本,因此MDI设备上的引脚1和2(传输)通过直通电缆连接到MDIX设备上的引脚1和2(接收)。类似地,MDI设备上的引脚3和6(接收)转到MDIX设备上的引脚3和6(发送)。在这种情况下,MDIX端口无需交叉双绞线布线。
二、以太网帧结构:
1、标准定义的数据帧格式
当今最常用的以太网协议标准是 ETHERNET II 标准。 ETHERNET II 标准定义的数据帧格式如下图:
2、VLAN数据帧格式
VLAN 技术通过给数据帧插入 VLAN 标签(又叫 VLAN TAG)的方式,让交换机能够分辨出各个数据帧所属的 VLAN 。VLAN 标签是用来区分数据帧所属 VLAN 的,是 4 个字节长度的字段,插入到以太网帧头部上。 VLAN 标签会插入到源 MAC 地址后面, IEEE 802.1Q 标准有这个格式定义和字段构成说明。
3、音视频数据封装
AVB协议族中的音视频传输协议AVTP是链路层的传输协议,并且是基于VLAN的,在以太网帧中的位置如下所示:
三、以太网驱动初始化步骤:
1、GPIO初始化,引脚复用
2、时钟初始化
3、DMA初始化
MAC层的数据传输模式如下图所示:
4、MTL初始化
5、设置MAC地址
MAC地址0
MAC地址1
MAC接口只有一个,但地址有两个,用于接收路由,发送时不会进行MAC地址匹配,直接发出,接收时进行MAC地址匹配,如果不匹配,则丢弃。
6、MAC初始化
7、PHY模块配置
8、时间戳配置
四、以太网数据收发解析:
MTL提供FIFO内存接口,对系统内存和MAC之间的报文进行缓冲和调节,并实现系统时钟域和MAC时钟域之间的数据传输。MTL层有两条数据路径:发送路径和接收路径。
发送过程如下:
1内部DMA:
将以太网数据包从系统内存中读取到相应的队列,DMA根据链表首地址获取内存数据,并将数据传入发送队列;
2当队列达到阈值(阈值模式)或完整的数据包在队列中(存储-转发模式)时,以太网数据包弹出并被传输到MAC。
3 MAC传输:
(1)当MTL推入带有SOP信号的数据时,传输启动。
(2)检测到SOP信号后,MAC接收数据并开始向RMII或MII传输。
(3)EOP信号传输给MAC后,完成正常报文传输,并将传输状态发送给MTL
(4)如果MTL在传输过程中不能连续提供数据,MAC会发出下溢状态。在接收到下一个SOP之前,MAC接受并丢弃所有进一步的数据。
(5) 在从MTL正常传输数据包的过程中,如果MAC收到了一个SOP,而没有得到前一个数据包的EOP,它将忽略该SOP,并将新数据包视为前一个数据包的延续。
接收过程如下:
1. 当MAC收到报文时,识别接收数据的可用性。
2. MAC识别SOP和EOP分隔符。
3.MTL接受数据并将其推入相应的接收队列。
4. 当MAC将EOP传输到MTL接收模块时,MAC还驱动MTL推入的状态字
对应的接收队列。
5. 当数据达到阈值时,MTL将数据从队列中取出,并通过DMA传输至内存。