摘要:Dallas Semiconductor的以太网链接及传输处理芯片(ELITE)产品线在广域网(WAN)与局域网(LAN)之间构建了一个桥梁。ELITE有几种配置方法,最常用的一种是通过微处理器(µP)控制。此外,为了降低成本,芯片还提供了硬件配置模式或外部EEPROM配置模式。对于硬件配置模式,由于芯片引脚数有限,有些功能的配置会受到限制;而EEPROM配置模式,可对芯片的每个寄存器进行配置,功能配置不受限制。本篇应用笔记针对DS33Z11或DS33Z44的EEPROM配置模式,介绍如何编写它们的EEPROM配置软件。
图1. SPI主机时序图
表1. DS33Z11 EEPROM程序存储器映射
表2. DS33Z44 EEPROM程序存储器映射
以太网的MAC寄存器采用间接寻址,使用µP并口总线模式配置时,需要多条写指令。因为无法把这些间接寻址的寄存器直接映射到EEPROM存储器,使用SPI串行EEPROM模式时,需要采用特殊的编程步骤实现写操作。间接寻址MAC寄存器的写操作采用7字节记录,存放在EEPROM存储器的最后。四个MAC寄存器(SU.MACCR、SU.MACMIID、SU.MACMIIA和SU.MACFCR)可以在EEPROM模式下配置。其余间接寻址MAC寄存器不需要配置,因为它们是MAC状态或状态配置寄存器,不需要初始化。
7字节记录的基础是模拟µP对间接寻址MAC寄存器的写步骤。记录中的前四个字节包含32位数据,将写入以太网MAC数据0至数据3寄存器(SU.MACWD0至SU.MACWD3)。记录中随后的两个字节包含16位地址,将写入以太网MAC的低字节、高字节地址寄存器(SU.MACAWL至SU.MACAWH)。最后,剩余字节写入以太网MAC的读/写命令状态寄存器(SU.MACRWC),这将触发数据到实际指定地址的写操作。DS33Z44含有不同数量的间接写寄存器,DS33Z44的第1路以太网接口与DS33Z11相同,有四个间接写寄存器,而其余三路中,每路只有两个间接写寄存器,原因是只有一个MDIO口管理外部的PHY,通过MAC 1控制。因此,SU.MACMIID和SU.MACMIIA是仅有的有效MAC 1寄存器组。为了通过MAC 1的MDIO口控制多个外部PHY,所有PHY MDIO口都要连接在一起,并配置成同一外部地址。
表3列举一个例子,将0x1018000C写入以太网MAC控制寄存器(SU.MACCR),间接地址为0x0000。如果需要关于DS33Z11/DS33Z44的SPI串口EEPROM编程支持,可通过后续参考文献部分中的链接获得。
表3. DS33Z11间接写指令举例
SPI™串行EEPROM接口
DS33Z11/DS33Z44有一个4线SPI串行接口,因此可以外挂串行EEPROM对其初始化配置,正确设置工作模式控制引脚(HWMODE = 0、MODEC1 = 1、MODEC0 = 0),DS33Z11/DS33Z44可以作为SPI主机,从串行EEPROM读取配置数据。MOSI (主机输出、从机输入)和MISO (主机输入、从机输出)为数据线,SPICK为时钟线,/SPI_CS为片选线,控制对EEPROM的访问。CKPHA引脚用来配置MISO和MOSI信号的采样及更新边沿。MOSI数据可以在SPICK的上升沿或下降沿输出。MISO数据可以在SPICK的上升沿或下降沿采样。SPICK工作频率为8.33MHz,从外部100MHz SYSCLKI分频得到。SPI EEPROM编程步骤
因为DS33Z11/DS33Z44采用的是固定模式SPI存储器读指令,配合DS33Z11/DS33Z44使用的EEPROM必须是16kB (2048 x 8)的SPI串行EEPROM。小于16kB的SPI串行EEPROM需要使用不同的存储器读指令,两种指令是不兼容的。初始上电复位后或/RST引脚触发信号的上升沿之后开启读时序,SPI_/CS信号拉低,从数据线MOSI发出0b00000011 SPI读指令,即可启动一次DS33Z11/DS33Z44的读存储器操作。随后是16位地址为0x0000的二进制地址,然后可以从数据线MISO读取数据,SPI_/CS一直保持低电平,直到读取所有数据并锁存到DS33Z11/DS33Z44。从EEPROM读取的数据长度取决于连接至EEPROM的是DS33Z11还是DS33Z44。图1为DS33Z11/DS33Z44从EEPROM读取数据的时序图。表1为DS33Z11的存储器映射,表2为DS33Z44的存储器映射。图1. SPI主机时序图
表1. DS33Z11 EEPROM程序存储器映射
Functional Block Address | Address Range for EEPROM Data (Hexadecimal) |
Global registers | 000 to 03F |
Arbiter registers | 040 to 07F |
BERT registers | 080 to 0BF |
Serial interface Tx registers | 0C0 to 0FF |
Serial interface Rx registers | 100 to 13F |
Ethernet interface registers | 140 to 17F |
MAC register write 1 (MAC control) | 180 to 186 (7-byte record for MAC indirect write) |
MAC register write 2 (MII data) | 187 to 18D (7-byte record for MAC indirect write) |
MAC register write 3 (MII address) | 18E to 194 (7-byte record for MAC indirect write) |
MAC register write 4 (flow control) | 195 to 19B (7-byte record for MAC indirect write) |
表2. DS33Z44 EEPROM程序存储器映射
Functional Block Address | Address Range for EEPROM Data (Hexadecimal) |
Global registers | 000 to 03F |
Arbiter registers | 040 to 07F |
BERT registers | 080 to 0BF |
Serial interface 1 Tx registers | 0C0 to 0FF |
Serial interface 1 Rx registers | 100 to 13F |
Ethernet interface 1 registers | 140 to 17F |
Serial interface 2 Tx registers | 180 to 1BF |
Serial interface 2 Rx registers | 1C0 to 1FF |
Ethernet interface 2 registers | 200 to 23F |
Serial interface 3 Tx registers | 240 to 27F |
Serial interface 3 Rx registers | 280 to 2BF |
Ethernet interface 3 registers | 2C0 to 2FF |
Serial interface 4 Tx registers | 300 to 33F |
Serial interface 4 Rx registers | 340 to 37F |
Ethernet interface 4 registers | 380 to 3BF |
MAC 1 register write 1 (MAC control) | 3C0 to 3C6 (7-byte record for MAC indirect write) |
MAC 1 register write 2 (MII data) | 3C7 to 3CD (7-byte record for MAC indirect write) |
MAC 1 register write 3 (MII address) | 3CE to 3D4 (7-byte record for MAC indirect write) |
MAC 1 register write 4 (flow control) | 3D5 to 3DB (7-byte record for MAC indirect write) |
MAC 2 register write 1 (MAC control) | 3DC to 3E2 (7-byte record for MAC indirect write) |
MAC 2 register write 4 (flow control) | 3E3 to 3E9 (7-byte record for MAC indirect write) |
MAC 3 register write 1 (MAC control) | 3EA to 3F0 (7-byte record for MAC indirect write) |
MAC 3 register write 4 (flow control) | 3F1 to 3F6 (7-byte record for MAC indirect write) |
MAC 4 register write 1 (MAC control) | 3F7 to 3FD (7-byte record for MAC indirect write) |
MAC 4 register write 4 (flow control) | 3FE to 404 (7-byte record for MAC indirect write) |
以太网的MAC寄存器采用间接寻址,使用µP并口总线模式配置时,需要多条写指令。因为无法把这些间接寻址的寄存器直接映射到EEPROM存储器,使用SPI串行EEPROM模式时,需要采用特殊的编程步骤实现写操作。间接寻址MAC寄存器的写操作采用7字节记录,存放在EEPROM存储器的最后。四个MAC寄存器(SU.MACCR、SU.MACMIID、SU.MACMIIA和SU.MACFCR)可以在EEPROM模式下配置。其余间接寻址MAC寄存器不需要配置,因为它们是MAC状态或状态配置寄存器,不需要初始化。
7字节记录的基础是模拟µP对间接寻址MAC寄存器的写步骤。记录中的前四个字节包含32位数据,将写入以太网MAC数据0至数据3寄存器(SU.MACWD0至SU.MACWD3)。记录中随后的两个字节包含16位地址,将写入以太网MAC的低字节、高字节地址寄存器(SU.MACAWL至SU.MACAWH)。最后,剩余字节写入以太网MAC的读/写命令状态寄存器(SU.MACRWC),这将触发数据到实际指定地址的写操作。DS33Z44含有不同数量的间接写寄存器,DS33Z44的第1路以太网接口与DS33Z11相同,有四个间接写寄存器,而其余三路中,每路只有两个间接写寄存器,原因是只有一个MDIO口管理外部的PHY,通过MAC 1控制。因此,SU.MACMIID和SU.MACMIIA是仅有的有效MAC 1寄存器组。为了通过MAC 1的MDIO口控制多个外部PHY,所有PHY MDIO口都要连接在一起,并配置成同一外部地址。
表3列举一个例子,将0x1018000C写入以太网MAC控制寄存器(SU.MACCR),间接地址为0x0000。如果需要关于DS33Z11/DS33Z44的SPI串口EEPROM编程支持,可通过后续参考文献部分中的链接获得。
表3. DS33Z11间接写指令举例
EEPROM 7-Byte Record | EEPROM Address Base from Table 1 (Hexadecimal) | EEPROM Address (Hexadecimal) | MAC Register Write 1 Used to Initialize SU.MACCR (Hexadecimal) |
MAC data byte 1 | Base + 00 | 180 | 0C - written to SU.MACWD0 |
MAC data byte 2 | Base + 01 | 181 | 00 - written to SU.MACWD1 |
MAC data byte 3 | Base + 02 | 182 | 18 - written to SU.MACWD2 |
MAC data byte 4 | Base + 03 | 183 | 10 - written to SU.MACWD3 |
MAC address low | Base + 04 | 184 | 00 - written to SU.MACAWL |
MAC address high | Base + 05 | 185 | 00 - written to SU.MACAWH |
MAC write command | Base + 06 | 186 | 01 - written to SU.MACRWC |
评论
查看更多