at91rm9200_emac.c.bak

来自「一个网卡的应用」· BAK 代码 · 共 41 行

BAK
41
字号
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 + =
减小字号Ctrl + -
显示快捷键?