目录

01、以太网简介

02、STM32F207的ETH介绍

03、SMI接口

3.1、站管理接口:SMI

3.2、SMI帧结构

3.3、SMI写操作

3.4、SMI读操作

3.5、SMI时钟选择

04、代码


01、以太网简介

STM32F20X和STM32F21的以太网外设可接受和发送数据按照IEE802.3-2002标准。

以太网提供一个完整的、灵活的外设去满足不同应用和要求。它支持与外部相连(PHY)的两个标准的工业接口:默认情况使用在IEEE802.3规范中定义的独立介质接口(MII)和精简介质独立接口(RMII)。它可以被用于大量的需求,例如开关(交换机)、网络接口卡等等。

以太网满足下列标准:

● IEEE 802.3-2002,用于以太网MAC。

● IEEE 1588-2008 标准,用于规定联网时钟同步的精度。

● AMBA 2.0,用于AHB 主/从端口。

● RMII 联盟的 RMII规范。

关于以太网的TCP/IP协议簇之前也是有讲解的。

《以太网数据包架构》

《5000字“肝”了这篇IP协议》

《1万字30张图说清TCP协议》

《UDP协议详解》

02、STM32F207的ETH介绍

STM32F207支持MII接口和RMII接口。STM32F207以太网外设包括一个MAC802.3(介质访问控制)和一个DMA控制器。它默认情况下支持MII和RMII接口,通过一个选择位进行切换(参考SYSCFG_PMC寄存器)。

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

在MAC内核发送数据之前,数据经过DMA的方式发送到FIFO中缓存。同样的,接收FIFO存储通过线路收到的以太网数据帧,直到这些数据帧通过DMA被传输到系统内存。

以太网外设也包括一个SMI,用于和外部PHY通讯。通过一组寄存器的配置,用户可以选择MAC和DMA控制器的不同模式和功能。

当使用以太网时,AHB时钟必须至少25MHZ。

下面是ETH的框图

关于AHB的连接信息:

区域1:我们称为SMI接口,用于配置外部PHY芯片。

区域2:是数据交换接口,也就是上面我们说的MII接口和RMII接口。

03、SMI接口

3.1、站管理接口:SMI

站管理接口允许任何PHY寄存器请求通过2线时钟和数据线。这个接口支持最多到32个PHY。

应用程序可以从 32个 PHY中选择一个PHY,然后从任意PHY 包含的32 个寄存器中选择一个寄存器,发送控制数据或接收状态信息。任意给定时间内只能对一个PHY 中的一个寄存器进行寻址。

MDC 时钟线和 MDIO数据线在微控制器中均用作复用功能I/O:

MDC:周期性时钟,提供以最大频率2.5 MHz 传输数据时的参考时序。MDC的最短高电平时间和最短低电平时间必须均为160 ns。MDC的最小周期必须为400 ns。在空闲状态下,SMI管理接口将 MDC时钟信号驱动为低电平。

MDIO:数据输入/输出比特流,用于通过MDC 时钟信号向/从PHY 设备同步传输状态信息。

3.2、SMI帧结构

下图给出了读操作和写操作帧结构,位传输必须要求从左到右。

Preamble32bit前导符):每个传输(读或者写)都必须以前导符开始,前导符是MDIO线上连续的32个逻辑’1’信号,和对应MDC线上的32个时钟信号。这部分信号用于和PHY设备建立同步。

Start(起始符):帧的起始符定义为’01’,也就是MDIO线从逻辑’1’降到’0’再回到’1’,以标记传输的。

开始。

Operation(操作符):用于定义操作的类型:读或者写。

PADDRPHY的地址有5位,可以区分32个PHY。高位先被发送和接收。

RADDR寄存器的地址有5位,可以寻址32个独立的寄存器。高位先被发送和接收。

TA2位的转向符,插在RADDR和数据(DATA)之间,用于避免读操作时发生冲突。读操作时,在TA的这2位时间内,MAC控制器保持MDIO线的高阻状态,PHY设备则先保持1位的高阻状态,在第2位时输出’0’信号。写操作时,在TA的这2位时间内,MAC控制器驱动MDIO线输出’10’信号,而PHY设置则保持高阻状态。

DATA(数据)16位的数据域。最先发送和接收的是ETH_MIID寄存器的第15位。

空闲位:MDIO线保持在高阻状态。取消所有的三态驱动,由PHY的上拉电阻保证MDIO线处于逻辑’1’。

3.3、SMI写操作

当应用程序设置了MII写和忙位(以太网MACMII地址寄存器(ETH_MACMIIAR)),SMI接口会向PHY传 送 PHY地 址 和 PHY寄 存 器 地 址 ,然 后 传 输 数 据 (以 太 网 MAC MII 数据 寄 存器(ETH_MACMIIDR))。在SMI接口传输数据的过程中,不能修改MII地址寄存器和MII数据寄存器的内容;在此过程中(忙位为高),对MII地址寄存器或MII数据寄存器的写操作将被忽视,并且不影响整个传输的正确完成。当完成写操作时,SMI接口将清除忙位,告知应用程序。

下图描述了写操作时的帧格式。

3.4、SMI读操作

当程序把以太网MACMII地址寄存器(ETH_MACMIIAR)的MII忙位置为’1’,而保持MII写位为’0’,SMI接口则发送PHY地址和PHY寄存器地址,执行读PHY寄存器的操作。在整个传输过程中,应用程序不能修改MII地址寄存器和MII数据寄存器的内容。在传输过程中(忙位为高),对MII地址寄存器或者MII数据寄存器的写操作将被忽视,并且不影响整个传输的正确完成。在读操作完成后,SMI接口将清除忙位,并把从PHY读回的数据更新到MII数据寄存器中。

下图描述了读操作的帧格式

3.5、SMI时钟选择

MAC 启动管理写/读操作。SMI时钟是一个分频时钟,其时钟源为应用时钟(AHB时钟)。分频系数取决于MII地址寄存器中设置的时钟范围。这里既然说到了时钟,就再次提一下上文提到的内容:当使用以太网时,AHB时钟必须至少25MHZ。

04、代码

STM32的网口的SMI接口初始化是十分简单的。

初始化GPIO。

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA |  RCC_AHB1Periph_GPIOC |RCC_AHB1Periph_GPIOF, ENABLE);/* Enable SYSCFG clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_ETH);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_ETH);

因为SMI接口需要MAC配合,所以需要是使能MAC的时钟。

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC |RCC_AHB1Periph_ETH_MAC_Tx |RCC_AHB1Periph_ETH_MAC_Rx, ENABLE);

SMI接口的读函数和写函数。

uint16_t ETH_ReadPHYRegister(uint16_t PHYAddress, uint16_t PHYReg)
uint32_t ETH_WritePHYRegister(uint16_t PHYAddress, uint16_t PHYReg,uint16_t PHYValue)

点击查看本文所在的专辑,STM32F207网络开发

关注公众号,第一时间收到文章更新

STM32网络之SMI接口相关推荐

  1. STM32网络之MII和RMII接口

    目录 1.MII接口 2.RMII接口 3.两种接口对应的引脚 4.MII和RMII的选择 在上篇文章<STM32网络之SMI接口>中,我们介绍了STM32网络控制器的SMI接口,SMI接 ...

  2. STM32网络电路设计

    目录 01.MII接口方案 02.RMII接口方案 2.1.外部晶振(2个晶振) 2.2.外部晶振(1个晶振) 2.3.需要强力PHY 在之前的推文中<STM32网络之SMI接口>< ...

  3. STM32网络ETH

    芯片是:STM32F207VCT6 本人主要介绍STM32F207VCT6的ETH部分,基本是把ETH部分英文翻译一下,加上自己的理解. 欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转 1 ...

  4. STM32网络之中断

    之前的推文已经将STM32网络的三大件讲完了 ①PHY接口,<STM32网络电路设计> ②MAC控制器,<STM32网络之MAC控制器> ③DMA控制器,<STM32网络 ...

  5. 通信工程师传输与接入ATM网络组成和接口

    9.2  ATM 网 络 9.2.1  ATM网络组成和接口 1.ATM网络组成 1)  ATM交换机 ATM交换技术机是ATM宽带网络中的核心设备,它完成物理层和ATM层的功能.对于物理层,它的主要 ...

  6. GPRS网络组成及接口

    GPRS网络组成及接口 Gb口:SGSN通过Gb口与基站BSS相联,为移动台MS服务.通过逻辑控制协议LLC,建立SGSN与MS之间的连接,提供移动性管理(位置跟踪)和安全管理功能.SGSN完成MS和 ...

  7. 网络音乐api接口,歌词api接口,免费

    网络音乐api接口,歌词api接口,免费 具体请看项目地址 项目地址: http://showdoc.dagoogle.cn/index.php/4 网络音乐api开放接口 所有这些都是为了学习,交流 ...

  8. Marvell交换机芯片SMI接口读写协议

    Marvell的88E6XXX系列交换机芯片基本都提供SMI(Serial Management Interface)接口. SMI接口使用2线串行通信,一个MDC提供时钟,一个MDIO为双向数据引脚 ...

  9. 网络验证 api.php,青柠网络验证webapi接口说明

    青柠网络验证webapi接口于2019/6/5 正式上线 什么是webapi接口? Webapi接口就是不管你是什么编程软件,只要有网页访问的函数,就能使用我们的青柠网络验证的所有功能! 每个api返 ...

最新文章

  1. 一个理想主义者关于爱情和美女、事业与金钱的疯人痴语
  2. python打印小数
  3. TED:如何掌控你的自由时间以及让自己变得更好,这样就能看到爱情应有的样子...
  4. IndexedDB技术简介(一)(转)
  5. Python类的部分
  6. Microsoft Office Backstage(第 1 部分 – 幕后故事)
  7. 学习Java就要掌握Java技术学习线路
  8. 只用ng test命令测试单个单元测试用例的另一种方法
  9. TIOBE 1 月榜单:Python年度语言四连冠,C 语言再次第一
  10. Java中的几种对象(PO、VO、DAO、BO、POJO)
  11. SSH应用之BBS之路-1、项目构设之数据库设计
  12. 机器视觉LED光源的选择及其性能优势
  13. 使用Android OpenGL ES 2.0绘图之一:搭建一个OpenGL ES环境
  14. 刚刚!老干妈发布警方通报:3人伪造印章与腾讯签协议已刑拘,腾讯:辣椒酱不香了...
  15. cannot import name ‘Imputer‘ from ‘sklearn.preprocessing‘
  16. python join函数的作用_Python join()函数原理及使用方法
  17. 发稿猫:5步分析钟薛高、东鹏特饮新品牌如何做营销
  18. ad7606中文资料_AD7606
  19. Serializable接口分析
  20. teamViewer远程连接vnp过程

热门文章

  1. Java 并发编程之线程池 ExecutorService 接口
  2. Java 算法 素数对猜想
  3. 使用Pytorch DataLoader快捷封装训练数据、测试数据的X与Y
  4. 机器翻译学习1:pytorch官方教程与代码逐行详解
  5. 再生龙u盘复制linux,再生龙制作U盘启动盘教程 | 楚盟博客
  6. 利用开放定址法实现散列表的创建、插入、删除、查找操作_散列表和IO
  7. java 重载 大于_详解java重载与覆写的区别
  8. 微服务 数据库耦合_mysql – 与其他服务共享的微服务数据库
  9. android 相机应用程序,2020年最佳Android相机的应用程序
  10. fetch移动端浏览器兼容问题