DMA channel x number of data register (DMA_CNDTRx) (x = 1..7, where x = channel number)
Регистр количества передаваемых данных по каналу x DMA (x - номер канала = 1..7 / 1..5)
Смещение (Address offset): 0x0C + 0x14 * (x-1)
Reset value: 0x0000'0000
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
Reserved | |||||||
--- | --- | --- | --- | --- | --- | --- | --- |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
Reserved | |||||||
--- | --- | --- | --- | --- | --- | --- | --- |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
NDT[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 |
NDT[8:0] | |||||||
rw | rw | rw | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Запись в этот регистр возможна только при отключенном канале. При включении канала этот регистр доступен только для чтения, указывая количество оставшихся для передачи данных.
При каждой передаче по каналу DMA значение в регистре уменьшается. По окончании передачи значение регистра остаётся или равным нулю, или автоматически загружается ранее заданным значением (для циклического режима (CIRC=1 в регистре DMA_CCRx).
Если значение регистра равно нулю, то передача данных невозможна вне зависимости от того, что канал включен или нет.
/****************** Bit definition for DMA_CNDTR1 register ******************/
#define DMA_CNDTR1_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */
Для регистров остальных каналов (CNDTR2...CNDTR7 для DMA1, CNDTR2...CNDTR5 для DMA2) изменить цифру в имени соответствующего определения бита (..._CNDTRx_...)