完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
概述
stm32以太网模块支持两种标准接口: 1、 连接到外接的物理层(PHY)模块 2、 IEEE 802.3协议定义的独立于介质的接口(MII)和简化的独立于介质的接口(RMII)。 功能介绍 如果要详细介绍以太网,一天一夜也讲不完,这里只能大概讲讲stm32以太网模块的特点。 站点管理接口(SMI) 站点管理接口(SMI)允许应用程序通过时钟和数据两根线来访问任何的PHY寄存器。这个接口可以支持多达32个PHY。 应用程序可以选择32个PHY中的任意一个,并访问PHY的32个寄存器中的任意一个。但在任意时刻,只能访问一个PHY的一个寄存器。 在控制器内部,MDC时钟线和MDIO数据线都是作为复用(AF)功能的I/O端口: ● MDC:一个周期性的时钟信号,为数据的传输提供时钟,最高频率为2.5MHz。MDC信号的高电平和低电平的最小维持时间为160ns,MDC信号的最小周期为400ns。在空闲状态下,SMI接口将驱动MDC时钟信号保持在低电平状态。 ● MDIO:数据的输入/输出线,在MDC时钟信号的驱动下,向PHY设备传递状态信息。 图 1SMI接口信号 独立于介质的接口:MII 独立于介质的接口(MII)用于MAC子层和PHY之间的互联,允许10M位/s和100M位/s数据传输。 图 2独立于介质的接口(MII)信号线 ● MII_TX_CLK:为传输发送数据而提供连续的时钟信号,对于10M位/s的数据传输,此时钟为2.5MHz,对于100M位/s的数据传输,此时钟为25MHz。 ● MII_RX_CLK:为传输接收数据而提供连续的时钟信号,对于10M位/s的数据传输,此时钟为2.5MHz,对于100M位/s的数据传输,此时钟为25MHz。 ● MII_TX_EN:传输使能信号,表示MAC正在输出要求MII接口传输的数据。此使能信号必需与数据前导符的起始位同步(MII_TX_CLK)出现,并且必需一直保持到所有需要传输的位都传输完毕为止。 ● MII_TXD[3:0]:由MAC子层控制,每次同步地传输4位数据,数据在MII_TX_EN信号有效时有效。MII_TXD[0]是数据的最低位,MII_TXD[3]是最高位。当MII_TX_EN信号无效时,传输的数据对于PHY无效。 ● MII_CRS:载波侦听信号,由PHY控制,当发送或接收的介质非空闲时,使能此信号。当传送和接收的介质都空闲时,PHY会撤消此信号。PHY必须保证MII_CS信号在发生冲突的整个时间段内都保持有效。 不需要此信号与发送/接收的时钟同步。在全双工模式下,此信号的状态对于MAC子层无意义。 ● MII_COL:冲突检测信号,由PHY控制,当检测到介质发生冲突时,使能此信号,并且在整个冲突的持续时间内,保持此信号有效。此信号不需要和发送/接收的时钟同步。在全双工模式下,此信号的状态对于MAC子层无意义。 ● MII_RXD[3:0]:由PHY控制,每次同步地发送4位需要接收的数据,数据在MII_RX_DV信号有效时有效。MII_RXD[0]是数据的最低位,MII_RXD[3]是最高位。当MII_RX_EN无效,而MII_RX_ER有效时,PHY会传送一组特殊的MII_RXD[3:0]数据(请参考表194),来告知一些特殊的信息。 ● MII_RX_DV:接收数据使能信号,由PHY控制,当PHY准备好卸载和解码数据供MII接收时,使能该信号。此信号必需和卸载好的帧数据的首位同步(MII_RX_CLK)出现,并在数据完全传输完毕之前,都保持有效。在传送最后4位数据后的第一个时钟之前,此信号必需变为无效状态。为了正确的接收一个帧,MII_RX_DV信号必需在整个帧传输期间内都保持有效,有效电平不能晚于数据线上的SFD位。 ● MII_RX_ER:接收出错信号,保持一个或多个时钟周期(MII_RX_CLK)的有效状态,指示MAC子层在帧内检测到了错误。错误情况必须配合MII_RX_DV的状态。 如下图所示,为了产生TX_CLK和RX_CLK时钟信号,外接的PHY模块必需有来自外部的25MHz时钟驱动。除了使用外部的25MHz晶体提供这一时钟外,STM32F107xx微控制器也可以通过MCO引脚来提供这一时钟;此时需要合适地配置PLL,将来自外部25MHz晶体的MCU时钟从MCO引脚输出出去。 图 3MII时钟源 精简的独立于介质的接口:RMII 精简的独立于介质接口(RMII)规范减少了与10/100M位/s通信时,STM32F107xx以太网模块和外部以太网之间的引脚数。根据IEEE802.3u标准,MII接口需要16个数据和控制信号引脚,而RMII标准则将引脚数减少到了7个(减少了62.5%的引脚数目)。同时为了保证达到与MII相同的通信速率,时钟信号需要提高到50MHz。 。RMII模块具有以下特性: ● 支持10M位/s和100M位/s的通信速率。 ● 时钟信号需要提高到50MHz。 ● MAC和外部的以太网PHY需要使用同样的时钟源 ● 使用2位宽度的数据收发 图 4精简的独立于介质的接口信号 精确时间协议(IEEE1588 PTP) IEEE1588标准定义了一种协议,该协议允许通过网络通讯,本地计算和分离设备技术实现测量和控制系统精确的时钟同步。协议可以应用于通过本地局域网通讯的系统,网络要求支持多播通信,这个局域网可以是(但不限于)以太网。协议可以用来同步拥有不同精度、分辨率和稳定度时钟的系统。协议支持在占用最少网络和计算资源的情况下,系统时钟同步精度达到亚微秒级。协议名称是PTP(精确时间协议),协议的基础是以UDP/IP为载体的消息传递。整个系统或者网络的各个节点,按照发起和接收时间/时钟信息的角色,可以分为主节点和从节点。协议通过在主从节点之间交换PTP消息来把从节点时钟同步到主节点时钟,该技术如下图。 图 5网络时钟同步 1. 主节点向所有的从节点广播PTP Sync消息。Sync消息包含主节点的时间信息。该消息从主节点发出的时间记为t1。对于以太网端口,应当在MII获取这个时间。 2. 从节点接收到Sync消息,并根据自己的时钟,记录下接收到Sync消息的时间t2。 3. 主节点随后向从节点发送follow_up消息,包含t1的信息,以备后用。 4. 从节点向主节点发送Delay_Req消息,并记录下该消息从MII发出的时间t3。 5. 主节点接收到Delay_Req消息,并记录下接收到的时间t4。 6. 主节点向从节点发送Delay_Resp消息,消息包含了t4的信息。 7. 从节点利用t1、t2、t3和t4,把它的本地时钟与主节点的时钟同步 协议的大部分是通过UDP层之上的软件实现的。不过,由上文所述,需要硬件支持记录PTP包从以太网端口MII发出和收到的准确时间。硬件需要记下该时间信息并将其返回给软件,这样才能正确,高精度地实现PTP时间同步。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1752 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1611 浏览 1 评论
1052 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1666 浏览 2 评论
1926浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
711浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
560浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 13:46 , Processed in 1.089483 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号