[应用相关] AT32F407/437 EMAC接不同PHY配置方法

[复制链接]
 楼主| muyichuan2012 发表于 2024-3-25 10:34 | 显示全部楼层 |阅读模式
本帖最后由 muyichuan2012 于 2024-3-25 14:31 编辑

SC0073 AT32F407/437 EMAC接不同PHY配置方法


示例目的
演示AT32F407/437 EMAC接不同PHY配置方法使用方法。
EMAC支持MII和RMII模式,可根据代码里面配置进行选择,同时PHY开发板上要对应选择RMII或者MII。另外部分型号的PHY仅支持RMII或者MII,需要根据PHY的文档进行选择。另外PHY的原理图请参考Ethernet SUB BOARD对应的原理图。

支持型号列表:
AT32F407 系列
AT32F437 系列
主要使用外设列表:
主要使用外设
EMAC
支持PHY列表:
PHY
DM9162
DP83848C
LAN8720A
AR8032
IP101GR
RTL8201F
YT8512
IP175LL
IP179N
KSZ8041TL

1 快速使用方法
1.1 硬件资源
1) Ethernet Main Board开发板(AT32F407/AT32F437)
2) Ethernet Sub board (DM9162,DP83848C,LAN8720A,…)
3) 将Main Board 和 Sub board 连接
4) 选择对应的MII或者RMII模式
5) 选择对应的时钟来源(建议直接使用晶振给PHY供时钟,使用PLL通过MCO输出的时钟可能达不到PHY的要求)
注意1:LAN8720A仅支持RMII模式
注意2:DP83848在RMII模式下,建议直接给PHY给50MHz晶振,不建议使用PLL输出50MHz给PHY

1.2 软件资源
SourceCode包含两个demo:
 at32f407_emac_phy_demo (AT32F407对应EMAC Demo)
工程路径:utilities\emac_phy_demo
 at32f437_emac_phy_demo (AT32F437对应EMAC Demo)
工程路径:utilities\emac_phy_demo

1.3 示例使用
软件使用:
打开对应的emac_phy_demo工程, project\at_start_f4xx\examples\emac\emac_phy_demo
 在at32_emac.h 中选择对应的PHY和对应的模式,通过选择不同的宏
  1. /* Select PHY MII or RMII Mode */
  2. /* #define MII_MODE */
  3. #define RMII_MODE
  4. /* DM9162 Support RMII and MII */
  5. #define DM9162
  6. /* DP83848 Support RMII and MII */
  7. /* #define DP83848 */
  8. /* LAN8720 Support just only support RMII */
  9. /* #define LAN8720 */
  10. /* RTL8201F Support RMII and MII */
  11. /* #define RTL8201F */
  12. /* AR8032 Support RMII */
  13. /* #define AR8032 */
  14. /* YT8512 Support RMII and MII */
  15. /* #define YT8512 */
  16. /* IP101GR Support RMII and MII */
  17. /* #define IP101GR */
  18. /* Support RMII */
  19. /* #define IP179N */
  20. /* Support MII */
  21. /* #define IP175LLF */
  22. /* KSZ8041TL Support RMII and MII */
  23. /* #define KSZ8041TL */
 编译通过之后下载到MAIN BOARD
 网线连接之后,通过PC可以ping 192.168.81.37,测试是否有正常连接。
 调用ethernetif_set_link函数对网络连接状态进行相应的LWIP处理。

  1. #if (LINK_DETECTION > 0)
  2. /* link detection process every 500 ms */
  3. if (localtime - link_timer >= 500)
  4. {
  5. link_timer = localtime;
  6. ethernetif_set_link(&netif);
  7. }
  8. #endif
  9. void ethernetif_set_link(void const *argument)
  10. {
  11. uint16_t regvalue = 0;
  12. struct netif *netif = (struct netif *)argument;
  13. /* read phy_bsr*/
  14. regvalue = link_update();
  15. /* check whether the netif link down and the phy link is up */
  16. if(!netif_is_link_up(netif) && (regvalue))
  17. {
  18. /* network cable is connected */
  19. netif_set_link_up(netif);
  20. }
  21. else if(netif_is_link_up(netif) && (!regvalue))
  22. {
  23. /* network cable is dis-connected */
  24. netif_set_link_down(netif);
  25. }
  26. }





SC0073_AT32F407_437_EMAC接不同PHY配置方法_ZH_V2.0.4.pdf

424.44 KB, 下载次数: 44

SC0073_AT32F407_437_EMAC_Connected_with_Different_PHY_V2.0.4.zip

34.97 MB, 下载次数: 69

gwl518 发表于 2024-5-28 15:55 | 显示全部楼层
正需要。
Jekele 发表于 2025-3-17 22:23 | 显示全部楼层
请教一下,为什么2.05版本的demo不在支持dm9162以太网模块了吗?

评论

因为我们这个SC0073案例配套的板子没有把DM9162做上去 , 我们的AT START 407/437配套的就是DM9162,可以参考那块板子,官方BSP里有对应代码。  发表于 2025-3-18 14:30
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

2065

帖子

37

粉丝
快速回复 在线客服 返回列表 返回顶部

215

主题

2065

帖子

37

粉丝
快速回复 在线客服 返回列表 返回顶部