关注+星标公众号,不错过精彩内容
来源 | 瑞萨嵌入式小百科
一
所需引脚定义
图1 RX72M和PHY-LSI连接示例
由于RX72M具备两个ESC端口,因此需要连接两颗PHY芯片。
对于每个PHY芯片,和RX72M连接时用到的引脚如下:
图2 每个PHY芯片和RX72M引脚的连接
注:*的值为0或1。
两个PHY芯片共同连接到RX72M的引脚如下:
图3 两个PHY芯片和RX72M连接时共用的引脚
注:MDIO引脚需增加4.7K上拉电阻。
二
PHY接口模式选择
每个PHY芯片的Power on strapping要求不尽相同,由于RX72M ESC仅支持MII模式,因此引脚配置请参考MII对应的要求(下表中黄色高亮的部分):
图4 PHY芯片 Power on strapping - Mode Config
三
PHY地址配置
对于MCU和PHY芯片通信来说,PHY芯片地址是非常重要的参数。由于RX72M具备两个ESC端口,因此需要通过地址对两颗PHY芯片进行区分。此情况下,00b地址不可用。请从下表中的3种可选项中选取任意两个。
图5 PHY芯片 Power on strapping – Phy Address
由于需要利用两颗LED分别指示PHY芯片的Link和Activity状态,因此将Pin 10 RXD1设定为LED Mode,如下图所示:
图6 PHY芯片 Power on strapping – Wake On LAN Selection
四
系统设计流程
有了前面的基础信息,我们可以按照以下的步骤进行系统设计。
选取板上两颗PHY芯片的Phy Address,由此决定LED/PHYADD0和LED1/PHYADD1的初始电平。
依据Phy Address决定LED的有效驱动电平,设计RJ45接口电路。下图是RJ45的参考设计,保留了充分的冗余设计,可适配不同Phy Address选项。
图7 RJ45部分参考设计
以LED0(Green)表示Link Status,LED1(Yellow)表示Activity Status为例,不同的Phy Address选项下,对应了不同的电阻配置,参考下表中的说明调整RJ45中电阻的焊接/不焊接配置。
图8 Phy Address和电阻设定对照表
对照硬件设计,需要在RX72M Project的Smart Configurator中进行Phy Address和Link Signal Polarity设定,下图以Phy Address分别为2和3时的设定值。注意,Phy Address的低位(bit 0)决定了Link Signal Active Level。具体地说,如果bit 0为0,则表示上电时该引脚电平已为低,则PHY芯片Link起来时,该引脚电平会变高,因此Link Signal Active Level应设定为Active-High。bit 0为1时则刚好相反。
图9 PHY Address和Link Signal Polarity设定方式
五
软件引脚初始化
最后,需要在RX72M代码(r_ecat_setting_rx72m.c中函数esc_init())中增加对PHY芯片初始化的配置,使得PHY芯片按照设定的模式工作。
//配置phy0
write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C0); // EXT 40C0
write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1f, 0x0030);
write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C0);
write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C3); // EXT 40C3
write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1f, 0x0320);
write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C3);
//configuration for phy1
write_phyreg((ECAT_CFG_CH1_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C0); // EXT 40C0
write_phyreg((ECAT_CFG_CH1_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1f, 0x0030);
write_phyreg((ECAT_CFG_CH1_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C0);
write_phyreg((ECAT_CFG_CH1_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C3); // EXT 40C3
write_phyreg((ECAT_CFG_CH1_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1f, 0x0320);
write_phyreg((ECAT_CFG_CH1_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS), 0x1e, 0x40C3);
以上就是单片机RX72M单片机和PHY芯片连接时的注意事项,希望对你平时开发有所帮助。
------------ END ------------
瑞萨RA8系列教程 | RA8输出PWM实现方法
Cortex-M3与M85单片机的SysTick使用上有区别吗?
基于TCP实现文件传输与UDP编程方法