TIMx DMA control register (TIMx_DCR)
Регистр управления прямым доступом к памяти таймеров TIM2-TIM5
Смещение (Address offset): 0x48
Reset value: 0x0000
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Reserved | DBL[4:0] | ||||||
--- | --- | --- | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Reserved | DBA[4:0] | ||||||
--- | --- | --- | rw | rw | rw | rw | rw |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Определяет количество транзакций при пакетной передаче в режиме DMA. Диапазон допустимых значений DBL: 0b00000...0b10001, что соответствует количеству транзакций в пакете: n = 1...18 (совпадает с количеством регистров TIMx).
Количество транзакций - количество расположенных друг за другом регистров TIMx с которыми производится обмен в режиме DMA.
Индекс DMA (DMA index) - последовательное аппаратно изменяемое значение от 0 до DBL[4:0].
При обмене с одним регистром (DBL[4:0] = 0, n = DBL[4:0]+1 = 1) - одна транзакция в пакете: регистр TIMx_DMAR всегда сопоставляется с одним из регистров TIMx с которым производится обмен в режиме DMA.
При обмене с двумя регистрами (DBL[4:0] = 1, n = 2) - две транзакции в пакете: регистр TIMx_DMAR сопоставляется по очереди с одним из двух последовательно расположенных регистров. Индекс DMA (DMA index) изменяется циклически от 0 до 1: 0, 1, 0, 1, 0, 1... пока не закончится пакет.
При обмене с тремя регистрами (DBL[4:0] = 2, n = 3) - три транзакции в пакете: регистр TIMx_DMAR сопоставляется по очереди с одним из трёх последовательно расположенных регистров. Индекс DMA (DMA index) изменяется циклически от 0 до 2: 0, 1, 2, 0, 1, 2, 0, 1, 2... пока не закончится пакет.
Содержит индекс смещения адреса при передаче в режиме DMA относительно адреса первого регистра TIMx: TIMx_CR1, индекс смещения которого равен 0.
00000 : 0 - TIMx_CR1
00001 : 1 - TIMx_CR2
00010 : 2 - TIMx_SMCR
00011 : 3 - TIMx_DIER
00100 : 4 - TIMx_SR
00101 : 5 - TIMx_EGR
00110 : 6 - TIMx_CCMR1
00111 : 7 - TIMx_CCMR2
01000 : 8 - TIMx_CCER
01001 : 9 - TIMx_CNT
01010 : 10 - TIMx_PSC
01011 : 11 - TIMx_ARR
01100 : 12 - TIMx_CCR1
01101 : 13 - TIMx_CCR2
01110 : 14 - TIMx_CCR3
01111 : 15 - TIMx_CCR4
10000 : 16 - TIMx_DCR
10001 : 17 - TIMx_DMAR
Например: обмен в режиме DMA с тремя регистрами, начиная с регистра TIMx_CNT, требует таких настроек: DBL[4:0]=2, DBA[4:0]=9
/******************* Bit definition for TIM_DCR register ********************/
#define TIM_DCR_DBA ((uint16_t)0x001F) /* DBA[4:0] bits (DMA Base Address) */
#define TIM_DCR_DBA_0 ((uint16_t)0x0001) /* Bit 0 */
#define TIM_DCR_DBA_1 ((uint16_t)0x0002) /* Bit 1 */
#define TIM_DCR_DBA_2 ((uint16_t)0x0004) /* Bit 2 */
#define TIM_DCR_DBA_3 ((uint16_t)0x0008) /* Bit 3 */
#define TIM_DCR_DBA_4 ((uint16_t)0x0010) /* Bit 4 */
#define TIM_DCR_DBL ((uint16_t)0x1F00) /* DBL[4:0] bits (DMA Burst Length) */
#define TIM_DCR_DBL_0 ((uint16_t)0x0100) /* Bit 0 */
#define TIM_DCR_DBL_1 ((uint16_t)0x0200) /* Bit 1 */
#define TIM_DCR_DBL_2 ((uint16_t)0x0400) /* Bit 2 */
#define TIM_DCR_DBL_3 ((uint16_t)0x0800) /* Bit 3 */
#define TIM_DCR_DBL_4 ((uint16_t)0x1000) /* Bit 4 */