DMA channel x memory address register (DMA_CMARx) (x = 1..7, where x = channel number)
Регистр адреса памяти канала x DMA (x - номер канала = 1..7 / 1..5)
Смещение (Address offset): 0x14 + 0x14 * (x-1)
Reset value: 0x0000'0000
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
MA[31:24] | |||||||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
MA[23:16] | |||||||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
MA[15:8] | |||||||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MA[8:0] | |||||||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 31:0
MA[31:0]
Memory address
Базовый адрес памяти с которым будет производиться обмен данными по каналу в режиме DMA
Запись в этот регистр возможна только при отключенном канале.
Если размер данных со стороны памяти 16 бит (MSIZE[1:0] = 01), бит MA[0] игнорируется, доступ автоматически выравнивается по адресу полуслова.
Если размер данных со стороны памяти 32 бит (MSIZE[1:0] = 10), биты MA[1:0] игнорируются, доступ автоматически выравнивается по адресу слова.
/****************** Bit definition for DMA_CMAR1 register *******************/
#define DMA_CMAR1_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */
Для регистров остальных каналов (CMAR2...CMAR7 для DMA1, CMAR2...CMAR5 для DMA2) изменить цифру в имени соответствующего определения бита (..._CMARx_...)