打印
[应用相关]

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

[复制链接]
854|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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和对应的模式,通过选择不同的宏
/* Select PHY MII or RMII Mode */
/* #define MII_MODE */
#define RMII_MODE
/* DM9162 Support RMII and MII */
#define DM9162
/* DP83848 Support RMII and MII */
/* #define DP83848 */
/* LAN8720 Support just only support RMII */
/* #define LAN8720 */
/* RTL8201F Support RMII and MII */
/* #define RTL8201F */
/* AR8032 Support RMII */
/* #define AR8032 */
/* YT8512 Support RMII and MII */
/* #define YT8512 */
/* IP101GR Support RMII and MII */
/* #define IP101GR */
/* Support RMII */
/* #define IP179N */
/* Support MII */
/* #define IP175LLF */
/* KSZ8041TL Support RMII and MII */
/* #define KSZ8041TL */
 编译通过之后下载到MAIN BOARD
 网线连接之后,通过PC可以ping 192.168.81.37,测试是否有正常连接。
 调用ethernetif_set_link函数对网络连接状态进行相应的LWIP处理。

#if (LINK_DETECTION > 0)
/* link detection process every 500 ms */
if (localtime - link_timer >= 500)
{
link_timer = localtime;
ethernetif_set_link(&netif);
}
#endif
void ethernetif_set_link(void const *argument)
{
uint16_t regvalue = 0;
struct netif *netif = (struct netif *)argument;
/* read phy_bsr*/
regvalue = link_update();
/* check whether the netif link down and the phy link is up */
if(!netif_is_link_up(netif) && (regvalue))
{
/* network cable is connected */
netif_set_link_up(netif);
}
else if(netif_is_link_up(netif) && (!regvalue))
{
/* network cable is dis-connected */
netif_set_link_down(netif);
}
}





SC0073_AT32F407_437_EMAC_Connected_with_Different_PHY_V2.0.4.zip

34.97 MB

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

424.44 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

150

主题

1733

帖子

24

粉丝