| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 以太网学习(1)--简介 -> 正文阅读 |
|
[嵌入式]以太网学习(1)--简介 |
目录 学习教程以STM32F4XX硬件平台进行学习,这一章主要是讲硬件相关部分。 一、以太网简介以太网是一种计算机局域网技术。是目前最广泛的局域网技术,他的传输介质可以是光纤或双绞线,简单来说,以太网就是一种在局域网中,把附近的所有设备都连接起来,使得他们之间可以进行通讯的技术。 以太网的基本特征是多个站点都连接在一个总线上,所有的工作站都在不断地向总线上发出监听信号,但是以太网在同一时刻只能由一个工作站在总线上进行传输,而其他的工作站必须等待其传输完成后才可以进行自己的传输。 以太网分为以下几种类型: 1)标准以太网(10Mbps) 2)快速以太网(100Mbps) 3)千兆以太网 4)万兆以太网 借助STM32以太网MAC内核,可以通过以太网按照IEEE802.3-2002标准进行收发数据。 二、STM32MAC简介1)MAC内核特性 ※ 支持外部PHY接口实现10/100Mbit/s数据传输速率 ※ 通过符合IEEE802.3的MII/RMII接口与外部快速以太网PHY进行通信 ※ 支持全双工和半双工操作 ※ 可编程帧长度,支持最大16KB的巨型帧 ※ 可编程帧间隔 ※ 两组FIFO ※? 支持通过SMI接口配置和管理PHY设备 以太网的框图如下: ? ?MAC通过RMII/MII接口对外部PHY芯片进行数据的传输,通过SMI接口进行PHY芯片的配置和管理。 SMI接口:成为管理接口,程序中可以通过这个接口来访问PHY寄存器,SMI接口有两条线,数据线MDIO和时钟线MDC,该接口支持访问多达32个PHY.应用程序可以从32个PHY中选择一个PHY,然后从任意PHY包含的32个寄存器中选择一个寄存器,发送控制数据或接收状态信息,任意给定时间内只能对一个PHY中的一个寄存器进行寻址。 1)MDC:周期性时钟,提供以最大频率2.5Mhz传输数据时的参考时序,在空闲状态下,SMI管理接口将MDC时钟信号驱动为低电平。 2)MDIO:数据输入/输出比特流,用于通过MDC时钟信号从PHY设备同步传输状态信息。 ?MII接口:介质独立接口(MII)定义了10Mbit/s和100Mbit/s的数据传输速率下AMC子层与PHY之间的互联。 ? ? ?TX_CLK和RX_CLK为发送和接受连续时钟,当速率为10Mbit/s时为2.5Mhz,速率为100Mbit/s时为25Mhz. ? ? ?要生成TX_CLK和RX_CLK时钟,必须向外部PHY提供25Mhz时钟,通常我们使用25Mhz的晶振,也可以用TSM32f407的MCO引脚输出25Mhz的时钟。 RMII:精简介质独立接口,降低了10M/100Mbit/s下微控制器以太网外设与外部PHY间的引脚数,根据IEEE802.3标准,MII包括16个数据和控制信号的引脚,RMII规范将引脚数减少为7个。 不过RMII接口的参考时钟必须是50Mhz!!!! 实现以以太网通讯是基于MAC内核+外部PHY芯片来实现的,PHY芯片选择的是LAN8720芯片,下面来介绍i一下PHY芯片LAN8720. 三、 LAN8720简介? ? ? ?LAN8720是低功耗的10/100M以太网PHY层芯片,I/O引脚电压符合IEEE802.3-2005标准.LAN8720支持通过RMII接口与以太网MAC层通信,内置10-BASE-T/100BASE-TX全双工传输模块,支持10Mbps和100Mbps.LAN8720可以通过自协商的方式与目的主机最佳的连接方式(速度和全双工模式)。支持HP-Auto-MDIX自动翻转功能,无需更换网线即可将连接更改为直连或交叉连接。 ※? 支持RMII接口以减少引脚数 ※?支持全双工和半双工模式 ※?可以使用25M晶振以降低成本 ※?支持SMI串行管理接口 ※?支持MAC接口 1)LAN8720地址设置? ? ?前面说过SMI最多可以控制32个PHY芯片。LAN8720可以通过设置RXER/PHYAD0引脚来设置其PHY地址,默认情况下是0,地址设置如下表所示: ?2)nINT/REFCLKO配置 ? ? ? nINTSEL引脚(2号引脚)用于设置nINT/REFCLKO引脚(14号引脚)的功能。nINTSEL配置如下表所示。我们STM32F407使用的是REF_CLKOUT模式。 ?REF_CLK In模式:当工作在REF_CLK In模式时,50Mhz的外部时钟信号应接到LAN8720的XTAL1/CKIN引脚(5号引脚)和STM32F407的RMII_REF_CLK(PA1)引脚上,如下图所示: ?REF_CLK Out模式:为降低成本,LNA8720可以从外部的25Mhz的晶振中产生REF_CLK时钟。到要使用此功能时应工作在REF_CLK Out模式。 ?3)LAN8720寄存器? ? PHY是由IEEE802.3定义的,一般通过SMI接口对PHY进行管理和控制,也就是读写PHY内部寄存器。PHY寄存器的地址空间为5位,可以定义0~31共32个寄存器,但随着PHY芯片功能的增加,很多PHY芯片采用分页技术来扩展地址空间,定义更多的寄存器。IEEE802.3定义了0-15这16个寄存器的功能,16-31寄存器由芯片制造商自由定义。 ?LAN8720有许多寄存器,在这里我们只介绍几个用到的寄存器(括号内为寄存器地址,此处使用十进制表示):BCR(0),BSR(1),PHY特殊功能寄存器(31)这三个寄存器。 BCR寄存器各个位如下所示 翻译如下: ?BSR寄存器各个位如下图所示 ?翻译如下: ?PHY特殊功能寄存器(31) 翻译如下 ? ? 在特殊功能寄存器中我们关心的是bit2-4这三位,因为这三位表示的连接的状态和速度?。 四、以太网DMA描述符? ? ?F407有一个以太网专用的DMA,DMA可以在CPU完全不干预的情况下,通过描述符有效的将数据从源传送到目标,接收缓冲区和发送缓冲区的数据都可以通过以太网DMA来传送。 ? ? 共有两个描述符:一个用于接收,一个用于发送,描述符是一种链表,最后一个描述符会指回第一个描述符以构成环形结构。描述符列表位于主机的物理存储空间,两个链表的基地址分别写入ETH_DMARDLAR寄存器和ETH_DMATDLAR寄存器中。每个描述符最多可指向两个缓冲区,描述符一共有两种结构:环形结构和链接结构。 在ST提供的以太网驱动库stm32f4x7_eth.c中使用的是链式结构,链式结构如下 ?描述符注意事项: 1、一个以太网数据包可以跨越一个或多个DMA描述符 2、一个DMA描述符只能用于一个以太网数据包 3、DMA描述列表中的最后一个描述符指向第一个,形成链式结构 ? ? 描述符实际上就是一个结构体,在ST的以太网驱动库stm32f4x7_eth中有个结构体ETH_DMADESCTypeDef,这个结构体就是DMA描述符。描述符分为增强描述符和常规描述符,区别在于常规描述符只使用了结构体中前四个成员变量,在编程中通常使用常规描述符,所以只以常规描述符进行讲解。 下图是描述符的结构体组成: ?常规描述符和增强描述符又有发送描述符和接收描述符两种,下图是常规的Tx DMA描述符: 常规Rx DMA描述符结构如下所示: ? ? ?常规发送描述符和接收描述符都是由四个32位字组成,TDES0、TDES1、TDES2、TDES3.分别对应结构体的前四个成员。 具体寄存器中各个位详细说明参照stm32芯片数据手册中以太网相关寄存器说明。 下一章开始讲解以太网相关协议。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:37:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |