SAM4E16C MAC和PHY(ksz8081mnx)初始化

时间:2018-01-22 10:14:38

标签: embedded ethernet atmel atmelstudio

大家好,我有问题是在SAM4E16c上初始化MAC和PHY(ksz8081mnx)。主要目标是看看我是否可以从以太网获取信息,但不幸的是,我不知道如何从以太网读取数据。我是新手,我希望有人可以给我一些提示。

我使用的工具是Atmel Studio IDE和Atmel ICE编程工具。我创建的项目是使用Atmel Software Framework(ASF)。我安装了MAC和PHY所需的所有驱动程序(ksz8081mnx)。我按照GMAC驱动程序"快速入门指南"在这个网站上: http://asf.atmel.com/docs/3.35.1/sam4e/html/gmac_quickstart.html

我上传了草图,我通过查看路由器的客户端列表来测试它,如果我能看到MAC地址,但我没有。我不确定这是否是正确的做法,但我必须尝试。

我不确定我是否应该按原样初始化电路板。我从(sam4e16e xplained pro ASF)中获取了board_init示例。

这些GMAC外设寄存器位于SAM4E16C.H文件中,它们与(ksz8081mnx)芯片相对应,但没有在任何地方使用。 我应该以某种方式在board_init中设置它们还是应该像第一张图片中显示的那样将它们保留? PIO definition for GMAC peripheral

这些图片显示以太网芯片与处理器的连接:

Schematics Ethernet
Schematics µC

谢谢,我期待着您的建议。

:)

1 个答案:

答案 0 :(得分:0)

首先读取所有ENET gmac控制器寄存器,您是否能够访问这些控制器寄存器。

ENET_BASE_ADDR - gmac控制器的基地址。 前val = readl(ENET_BASE_ADDR + offset);

  • 配置负责ENET操作的寄存器。 例如:网络控制,网络配置寄存器,PHY管理寄存器,发送状态寄存器,接收状态寄存器,Tx队列指针,Rx队列指针。
  • 我们需要配置6字节MAC地址的最重要的寄存器。

#define ETHERNET_CONF_ETHADDR0 0x00 #define ETHERNET_CONF_ETHADDR1 0x04

#define ETHERNET_CONF_ETHADDR2 0x25

#define ETHERNET_CONF_ETHADDR3 0x1C

#define ETHERNET_CONF_ETHADDR4 0xA0

#define ETHERNET_CONF_ETHADDR5 0x026

将MAC地址配置到这些寄存器后,然后内存转储这些寄存器以确认MAC地址是否正确配置。

  • 准备DMA tx和rx环缓冲区描述符。如果您提供完整的gmac数据表,我会详细解释。
  • 要访问PHY寄存器,我们需要正确配置ENET GMAC phy管理寄存器。

请提供完整的gmac及其PHY数据表。我将更多地回答关于phy及其操作的问题。