GPIO数据寄存器描述理解

时间:2016-10-27 14:55:03

标签: microcontroller gpio

关于新SoC的新数据表,我有一个问题。假设基地址是0x2014_0000

这是页面

enter image description here

那对于0x3fC和0x200是什么意思?

这是否意味着如果我读取寄存器0x2014_0000并且它给出了0x3fc,而不是根据所有相关GPIO的Direction寄存器进行写入或读取操作。如果它读取0x0而不是我无法对数据做任何事情(没有读或写访问)?

每当我必须从寄存器中读取数据时,我只需要阅读相应的位,但这个让我困惑@ _ @

也许有人可以向我解释

THX

1 个答案:

答案 0 :(得分:0)

我对this data sheet的解读是PADDR是地址总线的子集,而位9:2掩盖了GPIO_DATA7:0的操作。它说:

  

这样独立的软件驱动程序就可以设置它们的GPIO位   影响单个写操作中的任何其他引脚,即地址总线   用作读/写操作的掩码。数据寄存器   有效覆盖地址空间中的256个位置。八   使用的地址线是PADDR [9:2]。

这意味着您可以在256个地址中的任何一个处写入GPIO_DATA,并且只会写入与该地址对应的那些位,实际上您显示的表示GPIO_DATA映射到偏移0x000 - 0x3FC所以256个位置的步长为4(从地址总线派生的控制位被移位两次以映射到端口位)。

那么对于你的问题"这对于0x3fC0x200是什么意思?"在您显示的图像中对此进行了描述:将数据写入这些地址偏移将影响文本中提到的端口位。在第一种情况下,所有这些,在第二种情况下,只有其中一种。

Address     0x20140200

PADDR       9        0
            10000000xx

GPIO_DATA   7      0
            Nxxxxxxx

因此只有第7位的值写入GPIO输出,其余的GPIO输出位保留。