Each peripheral is assigned a fixed block of address space that is minimum 4 KB in size and has at least 1024 registers of 32 bits.
For more information on available peripherals and their location in the address map, see Instantiation.
There is a direct relationship between peripheral ID and base address:
base_address = 0x40000000 + 0x1000 * ID
Example peripheral base addresses:- 0x40000000 is assigned ID=0
- 0x40001000 is assigned ID=1
- 0x4001F000 is assigned ID=31
Peripherals can share the same ID, which has the following limitations:
- Shared registers or common resources
- Limited availability due to mutually exclusive operation; only one peripheral in use at a time
- Enforced peripheral behavior when switching between peripherals (disable the first peripheral before enabling the second)