赞
踩
笔者前代数字采集板采用的 PHY 芯片是博通 Boardcom 的 B50610,其仅支持 0 ∼ 7 0 ∘ C 0\sim70^\circ C 0∼70∘C 的工作温度,不符合预期的工作环境温度范围,且没有可直接替换的低温版本。因此在新一版采集板设计中须更换 PHY 芯片,拟采用瑞昱 Realtek 的 RTL8211FS,其工业版本 FSI 版本的可支持 − 4 0 ∘ C -40^\circ C −40∘C 的低温工作环境。首先做一个小的测试板,验证其电路及功能是否可行,本文即对此进行一个工作记录。
RTL8211FSI 的接口如下图
RGMII 接口
SMI 接口
SerDes 接口 (不使用,设计中直接悬空即可)
MDI 接口 (不多介绍,连接 RJ45 水晶头)
CLK
Hard Reset
PHYRSTB,即 Reset_n 引脚,硬复位,复位至少要保持 10ms 低电平。
PHYADDR
PHYAD[2:0],上电/硬复位后检测其引脚电平,决定 PHYADDR 的地址。
PWR
CFG 端口
INTB/PMEB/GPIO1
该引脚的功能可以配置为中断 INTB 或电源管理 PMEB 功能,RTL8211FS(I)-VS 版本下,则还可作为 PTP_GPIO1;作为 PMEB 功能时,应接 4.7 k Ω 4.7k\Omega 4.7kΩ 到 3.3V;不使用时应浮空。
LED
LED[2:0] 默认分别表示 1000BASE、100BASE、10BASE,通过寄存器配置的介绍见后文
不过注意下 LED2、LED1 引脚的极性,LED2 应当采用共阴接法,LED1 则采用共阳接法。
PHYADDR[4:3]='b00,PHYADDR[2:0]=PHYAD[2:0],由上电时 PHYAD[2:0] 引脚的上下拉状态决定,拥有 0x00 到 0x07 共 8 个可用地址。
注意,RTL8211FS 默认将地址 0x00 视为广播地址,所有 RTL8211FS 都会响应,可通过配置 PHYCR1 (Page 0xa43, Reg24 (0x18), Bit13 = 0) 来禁用广播功能。 如 PHYAD[2:0]='b000,RTL8211FS 默认会自动记住第一个非零地址,可以通过配置 PHYCR1, Bit6 = 1 来启用该功能。
因此,在设计中最好避开 0x00 这个地址,免去不必要的麻烦。
RTL8211FS 寄存器较多,因此除 RegAddr 外,还有不同的 Page。一个确切的寄存器声明如下:PAGE 0x0XXX, REG 0xXX, BIT[M:N]。
Page 可通过对 PAGSR(Page 0xa43, Reg 31 (0x1F), bit[11:0]) 寄存器进行配置。配置 Reg 31 值为 0x0000 或 0x0a42 将切换回 IEEE 标准寄存器。(略有疑问,PAGSR 寄存器应该是在 Page Any, Reg 31 都可以访问,而不仅在 Page 0xa43;后经过上板验证发现确实如此)
控制 LED 的官方参考设计如下(左,共阳接法;右,共阴接法)
RTL8211FS 的 LED 控制没有太花哨的功能,基本就是每个 LED 管脚对应一个速度。LCR (Page 0xD04, Reg 0x10) 寄存器用于配置 LED 的工作模式,以 LED2 管脚的默认值为例,LED2_ACT、LED2_LINK_1000 为 1,因此在连接 1000BASE 时,LED2 会亮起,当处于 1000BASE 活动状态时,则 LED2 闪烁。(这个默认配置就挺好用的,不需要再另行配置了,将 LED2/LED1 管脚接到 RJ45 的两个灯就可以了;注意极性)
BMCR (Page 0x0, Reg 0), Bit 12 为自动协商使能,默认为 1 (on)。
当关闭自动协商时,BMCR Bit 6、Bit 13 决定本 PHY 芯片工作在何种速度,{Bit6, Bit13} = 10: 1000BASE,01: 100BASE,00: 10BASE。BMCR Bit 8 决定全双工/半双工模式,仅在关闭自动协商时起作用。
PHYSR (Page 0xa43, Reg 0x1A) 寄存器可以查看连接状态,Bit 2 指示是否连接,Bit5:4 指示速度,Bit 3 指示全半双工模式。
Page 0x0, Reg 0, Bit 15 设为 1 将触发软复位,复位后自动清零。
RTL8211FS 上电顺序如图
3.3V 供电的上升时间应大于 0.5ms,否则可能永久损坏内部电压调节器。
(暂略)
打板回来后进行了测试,然而发现只能自动协商到 100BASE,进一步测试发现,十兆和百兆均可以正常建立连接,而千兆会协商失败,从而自动降速到了百兆。进一步通过 MDIO 关闭自协商,并强制规定到千兆,电脑就无法识别到这个设备了,读取 PHYSR (Page 0xa43,Reg 0x1A)寄存器,也发现 bit2=0 (Link not OK)。测量 3.3V 供电、 1.0V 核压以及 25M 晶振输出,均正常,其中 1.0V 输出有 70mV 纹波。
(咳,本菜鸟画的第一块 PCB,各种修正方案都尝试了一遍,但还是无法解决千兆连接的问题,是否有大佬可以指点一二,万分感激)
(2024-07-22更新)
应该是布线问题导致的无法连通千兆,重新画了一版,走线做了 1mil 等长,即成功建立千兆连接。
(完)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。