在上篇文章《STM32网络之SMI通达信交易下单接口,接口》中,我们介绍了STM32网络控制器的SMI通达信交易下单接口,接口,SMI通达信交易下单接口,接口主要是用于和外部PHY芯片通信,配置PHY寄存器用的。
真正网络通信的数据流并不是通过SMI通达信交易下单接口,接口传输的,是通过MII通达信交易下单接口,接口或者RMII通信的。
MII通达信交易下单接口,接口
介质独立通达信交易下单接口,接口(MI定义了10Mbit/s和100Mbit/s的数据传输速率下MAC子层与PHY之间的互连。
管脚定义介绍:
MII_TX_CLK:连续时钟信号。该信号提供进行TX数据传输时的参考时序。标称频率为:速率为10Mbit/s时为5MHz;速率为100Mbit/s时为25MHz。MII_TXD[3:0]:数据发送信号。该信号是4个一组的数据信号,由MAC子层同步驱动,在MII_TX_EN信号有效时才为有效信号。MII_TXD[0]为最低有效位,MII_TXD为最高有效位。禁止MII_TX_EN时,发送数据不会对PHY产生任何影响。MII_TX_EN:发送使能信号。该信号表示MAC当前正针对MII发送半字节。该信号必须与报头的前半字节进行同步(MII_TX_CL,并在所有待发送的半字节均发送到MII时必须保持同步。MII_RX_CLK:连续时钟信号。该信号提供进行RX数据传输时的参考时序。标称频率为:速率为10Mbit/s时为5MHz;速率为100Mbit/s时为25MHz。MII_RXD[3:0]:数据接收信号。该信号是4个一组的数据信号,由PHY同步驱动,在MII_RX_DV信号有效时才为有效信号。MII_RXD[0]为最低有效位,MII_RXD为最高有效位。当MII_RX_DV禁止、MII_RX_ER使能时,特定的MII_RXD[3:0]值用于传输来自PHY的特定信息。MII_RX_ER:接收错误信号。该信号必须保持一个或多个周期(MII_RX_CL,从而向MAC子层指示在帧的某处检测到错误。该错误条件必须通过MII_RX_DV验证。MII_RX_DV:接收数据有效信号。该信号表示PHY当前正针对MII接收已恢复并解码的半字节。该信号必须与恢复帧的头半字节进行同步(MII_RX_CL,并且一直保持同步到恢复帧的最后半字节。该信号必须在最后半字节随后的第一个时钟周期之前禁止。为了正确地接收帧,MII_RX_DV信号必须在时间范围上涵盖要接收的帧,其开始时间不得迟于SFD字段出现的时间。MII_CRS:载波侦听信号。当发送或接收介质处于非空闲状态时,由PHY使能该信号。发送和接收介质均处于空闲状态时,由PHY禁止该信号。PHY必须确保MII_CS信号在冲突条件下保持有效状态。该信号无需与TX和RX时钟保持同步。在全双工模式下,该信号没意义。MII_COL:冲突检测信号。检测到介质上存在冲突后,PHY必须立即使能冲突检测信号,并且只要存在冲突条件,冲突检测信号必须保持有效状态。该信号无需与TX和RX时钟保持同步。在全双工模式下,该信号没意义。MDC:MDC信号属于SMI通达信交易下单接口,接口,具体请看《STM32网络之SMI通达信交易下单接口,接口》。MDIO:MDIO信号属于SMI通达信交易下单接口,接口,具体请看《STM32网络之SMI通达信交易下单接口,接口》。
下TX通达信交易下单接口,接口信号编码
下RX通达信交易下单接口,接口信号编码
MII通达信交易下单接口,接口的时钟源
要生成TX_CLK和RX_CLK时钟信号,必须向外部PHY提供25MHz时钟,如所示。除了使用外部25MHz石英晶体提供该时钟,还可以通过STM32F20xx微控制器的MCO引脚输出该信号。这种情况下,必须对PLL倍频进行配置,以通过25MHz外部石英晶体在MCO引脚上获得所需频率。
对应的代码
/* Enable GPIOs clocks */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
/* Enable SYSCFG clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
/* Configure MCO (PA8) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Output HSE clock (25MHz) on MCO pin (PA8) to clock the PHY */
RCC_MCO1Config(RCC_MCO1Source_HSE, RCC_MCO1Div_1);
RMII通达信交易下单接口,接口
Reducedmedia-independentinterface:RMII。精简介质独立通达信交易下单接口,接口(RMI规范降低了10/100Mbit/s下微控制器以太网外设与外部PHY间的引脚数。
根据IEEE803u标准,MII包括16个数据和控制信号的引脚。RMII规范将引脚数减少为7个。引脚的含义参考MII通达信交易下单接口,接口即可。
RMII通达信交易下单接口,接口是MAC和PHY之间的实例化对象。这些有助于MAC的MII通达信交易下单接口,接口转化为RMII通达信交易下单接口,接口。RMII通达信交易下单接口,接口具有以下特点
0-Mbit/s和100-Mbit/s的运行速率参考时钟必须是50MHz相同的参考时钟必须从外部提供给MAC和外部以太网PHY它提供了独立的2位宽的发送和接收数据路径
这里时钟管脚比MII通达信交易下单接口,接口少,有一个非常重要的点,那就是RMII通达信交易下单接口,接口时钟源必须是50MHZ
RMII通达信交易下单接口,接口时钟源
STM32F207xx控制器可以从MCO引脚提供50MHz时钟信号,当然用户需要配置PLL来产生这一时钟。
使用外部50MHz时钟驱动PHY或使用嵌入式PLL生成50MHz频率信号来驱动PHY。
两种通达信交易下单接口,接口对应的引脚
STM32F207VCT6的芯片
Ethernet pins configuration
ETH_MDIO -------------------------> PA2 pin 25
ETH_MDC --------------------------> PC1 pin 16
ETH_PPS_OUT ----------------------> PB5 pin 91
ETH_MII_CRS ----------------------> PA0 pin 23
ETH_MII_COL ----------------------> PA3 pin 26
ETH_MII_RX_ER --------------------> PB10 pin 47
ETH_MII_RXD2 ---------------------> PB0 pin 35
ETH_MII_RXD3 ---------------------> PB1 pin 36
ETH_MII_TX_CLK -------------------> PC3 pin 18
ETH_MII_TXD2 ---------------------> PC2 pin 17
ETH_MII_TXD3 ---------------------> PB8 pin 95
ETH_MII_RX_CLK/ETH_RMII_REF_CLK---> PA1 pin 24
ETH_MII_RX_DV/ETH_RMII_CRS_DV ----> PA7 pin 32
ETH_MII_RXD0/ETH_RMII_RXD0 -------> PC4 pin 33
ETH_MII_RXD1/ETH_RMII_RXD1 -------> PC5 pin 34
ETH_MII_TX_EN/ETH_RMII_TX_EN -----> PB11 pin 48
ETH_MII_TXD0/ETH_RMII_TXD0 -------> PB12 pin 51
ETH_MII_TXD1/ETH_RMII_TXD1 -------> PB13 pin 52
其中ETH_PPS_OUT这个管脚ST官方demo屏蔽,不属于MII通达信交易下单接口,接口也不属于RMII通达信交易下单接口,接口。下面不将其统计进入。
MII共15个通达信交易下单接口,接口加上SMI通达信交易下单接口,接口,共17个引脚。
RMII共7个通达信交易下单接口,接口加上SMI通达信交易下单接口,接口,共9个引脚。
除了上述我自行统计的MII通达信交易下单接口,接口和RMII通达信交易下单接口,接口对应的pin之外,ST官方在参考手册也给出了对应,如下:
MII和RMII的选择
使用SYSCFG_PMC寄存器中的23配置位MII_RMII_SEL选择MII或RMII模式。以太网控制器处于复位模式或使能时钟前,应用程序必须设置MII/RMII模式。
对应的ST库函数为
//函数入参可选以下
//SYSCFG_ETH_MediaInterface_MII: MII mode selected
//SYSCFG_ETH_MediaInterface_RMII: RMII mode selected
void SYSCFG_ETH_MediaInterfaceConfig(uint32_t SYSCFG_ETH_MediaInterface)
MII/RMII内部时钟方案
支持MII和RMII以及10和100Mbit/s运行所需的时钟方案,如下所示。
注意上红框中:HCLK必须大于25MHz,这个问题点,在上一篇文章《STM32网络之SMI通达信交易下单接口,接口》中已经提到了,这里再次提到,如果不满足这个条件,可能会出现奇奇怪怪的问题,不好查找。
在官方手册中,还有一句
要节省引脚,需在同一个GPIO引脚上复用RMII_REF_CK和MII_RX_CLK这两个输入时钟信号。
点击查看本文所在的专辑,STM32F207网络开发
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点