GPIO数据寄存器描述理解

GPIO Data Register description understanding

我对新 SoC 的新数据表有疑问。假设基地址是 0x2014_0000

这是页面

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

这是否意味着如果我读取寄存器 0x2014_0000 并且它给我 0x3fc,那么我可以根据所有相关 GPIO 的方向寄存器进行写入或读取操作。如果它读取 0x0,那么我无法对数据执行任何操作(没有读取或写入访问权限)?

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

也许有人可以向我解释一下

感谢

我对this data sheet的解读是PADDR是地址总线的一个子集,位9:2屏蔽了GPIO_DATA7:0的操作.它说:

So that independent software drivers can set their GPIO bits without affecting any other pins in a single write operation, the address bus is used as a mask on read/write operations. The data register effectively covers 256 locations in the address space. The eight address lines used are PADDR [9:2].

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

所以对于你的问题"what does that mean with the 0x3fC and 0x200?" 这在你显示的图像中有描述:将数据写入这些地址偏移量将影响文本中提到的端口位。第一种情况,全部,第二种情况,只有一个。

Address     0x20140200

PADDR       9        0
            10000000xx

GPIO_DATA   7      0
            Nxxxxxxx

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