GPIO数据寄存器描述理解
GPIO Data Register description understanding
我对新 SoC 的新数据表有疑问。假设基地址是 0x2014_0000
这是页面
那么 0x3fC 和 0x200 是什么意思?
这是否意味着如果我读取寄存器 0x2014_0000 并且它给我 0x3fc,那么我可以根据所有相关 GPIO 的方向寄存器进行写入或读取操作。如果它读取 0x0,那么我无法对数据执行任何操作(没有读取或写入访问权限)?
每当我不得不从寄存器中读取数据时,我只需要读取相应的位,但是这个让我很困惑@_@
也许有人可以向我解释一下
感谢
我对this data sheet的解读是PADDR
是地址总线的一个子集,位9:2
屏蔽了GPIO_DATA
位7: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 输出位被保留。
我对新 SoC 的新数据表有疑问。假设基地址是 0x2014_0000
这是页面
那么 0x3fC 和 0x200 是什么意思?
这是否意味着如果我读取寄存器 0x2014_0000 并且它给我 0x3fc,那么我可以根据所有相关 GPIO 的方向寄存器进行写入或读取操作。如果它读取 0x0,那么我无法对数据执行任何操作(没有读取或写入访问权限)?
每当我不得不从寄存器中读取数据时,我只需要读取相应的位,但是这个让我很困惑@_@
也许有人可以向我解释一下
感谢
我对this data sheet的解读是PADDR
是地址总线的一个子集,位9:2
屏蔽了GPIO_DATA
位7: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 输出位被保留。