关于新SoC的新数据表,我有一个问题。假设基地址是0x2014_0000
这是页面
那对于0x3fC和0x200是什么意思?
这是否意味着如果我读取寄存器0x2014_0000并且它给出了0x3fc,而不是根据所有相关GPIO的Direction寄存器进行写入或读取操作。如果它读取0x0而不是我无法对数据做任何事情(没有读或写访问)?
每当我必须从寄存器中读取数据时,我只需要阅读相应的位,但这个让我困惑@ _ @
也许有人可以向我解释
THX
答案 0 :(得分:0)
我对this data sheet的解读是PADDR
是地址总线的子集,而位9:2
掩盖了GPIO_DATA
位7:0
的操作。它说:
这样独立的软件驱动程序就可以设置它们的GPIO位 影响单个写操作中的任何其他引脚,即地址总线 用作读/写操作的掩码。数据寄存器 有效覆盖地址空间中的256个位置。八 使用的地址线是PADDR [9:2]。
这意味着您可以在256个地址中的任何一个处写入GPIO_DATA
,并且只会写入与该地址对应的那些位,实际上您显示的表示GPIO_DATA
映射到偏移0x000
- 0x3FC
所以256个位置的步长为4(从地址总线派生的控制位被移位两次以映射到端口位)。
那么对于你的问题"这对于0x3fC
和0x200
是什么意思?"在您显示的图像中对此进行了描述:将数据写入这些地址偏移将影响文本中提到的端口位。在第一种情况下,所有这些,在第二种情况下,只有其中一种。
Address 0x20140200
PADDR 9 0
10000000xx
GPIO_DATA 7 0
Nxxxxxxx
因此只有第7位的值写入GPIO输出,其余的GPIO输出位保留。