随着物联网的快速发展,嵌入式设备终端联网已经是常态了,众多MCU厂商已经考虑到这个问题,因此很多MCU都集成了以太网 (ETH)控制器。
终端设备需要联网,仅MCU集成以太网控制器还不能联网,在应用时需搭配外部的以太网PHY芯片。
本文以瑞萨高性能32位RX72M系列单片机为例,给大家讲述一下单片机和PHY芯片连接时的注意事项。
一、所需引脚定义
首先,RX72M和PHY芯片整体的连接关系如下图所示:
图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
四、系统设计流程
有了前面的基础信息,我们可以按照以下的步骤进行系统设计。
01、选取板上两颗PHY芯片的Phy Address,由此决定LED/PHYADD0和LED1/PHYADD1的初始电平。
02、依据Phy Address决定LED的有效驱动电平,设计RJ45接口电路。下图是RJ45的参考设计,保留了充分的冗余设计,可适配不同Phy Address选项。
图7 RJ45部分参考设计
03、以LED0(Green)表示Link Status,LED1(Yellow)表示Activity Status为例,不同的Phy Address选项下,对应了不同的电阻配置,参考下表中的说明调整RJ45中电阻的焊接/不焊接配置。
图8 Phy Address和电阻设定对照表
04、对照硬件设计,需要在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芯片连接时的注意事项,希望对你平时开发有所帮助。
来源:瑞萨嵌入式小百科
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。