📄 at91rm9200_emac.c.bak
字号:
int eth_init (bd_t * bd) {
int ret;
int i;
p_mac = AT91C_BASE_EMAC;
//配置PIO复用
//使能外设时钟
p_mac->EMAC_CFG |= AT91C_EMAC_CSR; //清除统计寄存器
//初始化发送帧buffer
//设置地址匹配寄存器的值
p_mac->EMAC_RSR &= ~(AT91C_EMAC_RSR_OVR | AT91C_EMAC_REC | AT91C_EMAC_BNA);
p_mac->EMAC_CFG = (p_mac->EMAC_CFG | AT91C_EMAC_CAF | AT91C_EMAC_NBC) & ~AT91C_EMAC_CLK;
p_mac->EMAC_CFG |= AT91C_EMAC_CLK_HCLK_64; //EMAC时钟不能超过2.5M
p_mac->EMAC_CTL |= AT91C_EMAC_TE | AT91C_EMAC_RE;
at91rm9200_GetPhyInterface (& PhyOps);
if (!PhyOps.IsPhyConnected (p_mac))
printf ("PHY not connected!!\n\r");
if (!(p_mac->EMAC_SR & AT91C_EMAC_LINK)) { //如果没有连接,就执行连接
if (!(ret = PhyOps.Init (p_mac))) {
printf ("MAC: error during MII initialization\n");
return 0;
}
} else {
printf ("No link\n\r");
return 0;
}
return 0;
}
void init_ethernet(void) {
/* PIO复用 */
/* 外设时钟 */
/* 初始化发送帧buffer */
/* 设置地址匹配寄存器值 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -