0
1
0
1
0
0
0
1
0
0
0
1
0
1
0
0
0
0
9
8
7
6
5
4
3
2
1
0
0
1
1
1
1
1
1
0
7
6
5
4
3
2
1
0
Returned Value
GPIODATA
0x0C4
ADDR[9:2]
0
1
0
0
1
1
0
0
0
u
1
u
u
0
1
u
u
9
8
7
6
5
4
3
2
1
0
1
1
1
0
0
1
1
1
7
6
5
4
3
2
1
0
GPIODATA
0xEB
0x098
ADDR[9:2]
0
General-Purpose Input/Output (GPIO)
343
SPRUH22I – April 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
General-Purpose Input/Output (GPIO)
4.1.3.2.2 Data Register Operation
To aid in the efficiency of software, the GPIO ports allow for the modification of individual bits in the GPIO
Data (GPIODATA) register by using bits [9:2] of the address bus as a mask. In this manner, software
drivers can modify individual GPIO pins in a single instruction without affecting the state of the other pins.
This method is more efficient than the conventional method of performing a read-modify-write operation to
set or clear an individual GPIO pin. To implement this feature, the GPIODATA register covers 256
locations in the memory map.
During a write, if the address bit associated with that data bit is set, the value of the GPIODATA register is
altered. If the address bit is cleared, the data bit is left unchanged.
For example, writing a value of 0xEB to the address GP 0x098 has the results shown in , where
u indicates that data is unchanged by the write.
Figure 4-2. GPIODATA Write Example
During a read, if the address bit associated with the data bit is set, the value is read. If the address bit
associated with the data bit is cleared, the data bit is read as a zero, regardless of its actual value. For
example, reading address GP 0x0C4 yields as shown in .
Figure 4-3. GPIODATA Read Example