问题说明:
您好、专家:
如何在地址高于0x001F 的 DP83867中读取/写入寄存器值?
此致
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
问题说明:
您好、专家:
如何在地址高于0x001F 的 DP83867中读取/写入寄存器值?
此致
解决方案:
0x001F 以上的地址位于扩展寄存器组下、并且使用间接寻址通过寄存器 REGCR (0x000D)和 ADDAR (0x000E)访问它们。
REGCR: 寄存器控制寄存器[0x000D]
位 |
位名称 |
默认值 |
该设计的链接 |
15:14 |
停止 |
0、RW |
00 =地址 01 =数据、无后增量 10 =数据、读写后增量 11 =数据、仅写入时的后增量 |
13:5 |
保留 |
0、RO |
保留:写操作被忽略、读为0 |
4:0 |
DEVAD |
0、RW |
器件地址: 位[4:0]、将 ADDAR 寄存器(0x000E)的任何访问定向到适当的 MMD。 DP83867使用特定于供应商的 DEVAD [4:0]=1111来进行访问。 通过寄存器 REGCR 和 ADDAR 进行的所有访问都应使用此 DEVAD。 其他 DEVAD 的事务都会被忽略。 |
ADDAR: 地址或数据寄存器[0x000E]
位 |
位名称 |
默认值 |
该设计的链接 |
15:0 |
地址/数据 |
0、RW |
如果 REGCR 寄存器15:14 = 00、则保存 MMD DEVAD 的地址寄存器、否则保存 MMD DEVAD 的数据寄存器。 |
REGCR 的位设置将 ADDAR 寄存器的工作定义为包含地址值或数据值。
编辑这些寄存器值的步骤:
{例如:将值0x0480分配到地址位置0x0025}
序号 |
步骤 |
各自命令 |
1. |
设置 REGCR = 0x001F |
phytool ethX/0x0/0x000D 0x001F
|
2. |
将 ADDAR 设置为指向目标寄存器的地址= 0x0025 |
phytool ethX/0x0/0x000E 0x0025
|
3. |
设置 REGCR = 0x401F |
phytool ethX/0x0/0x000D 0x401F
|
4. |
将 Addar 设置为要分配给 Addar 先前指向的位置的值
|
phytol ethX/0x0/0x000E 0x0480
|
如需读取扩展寄存器组中寄存器的值:
序号 |
步骤 |
各自命令 |
1. |
设置 REGCR = 0x001F [附加地址模式]
|
phytool ethX/0x0/0x000D 0x001F |
2. |
ADDAR = 0x0025 (指向要读取的寄存器地址) |
phytool ethX/0x0/0x000E 0x0025
|
3. |
设置 REGCR = 0x401F [附加数据模式]
|
phytool ethX/0x0/0x000D 0x401F
|
4. |
读取 ADDAR |
phytool 读取 ethX/0x0/0x000E。
|
谢谢、此致
Rimika