TIMx DMA control register (TIMx_DCR)

Регистр управления прямым доступом к памяти таймеров TIM2-TIM5

Смещение (Address offset): 0x48

Reset value: 0x0000

15141312111098
Reserved DBL[4:0]
---------rwrwrwrwrw
00000000
76543210
Reserved DBA[4:0]
---------rwrwrwrwrw
00000000


Bits 15:13
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bits 12:8
DBL[4:0]
DMA burst length
Длина пакета DMA

Определяет количество транзакций при пакетной передаче в режиме 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... пока не закончится пакет.

Bits 7:5
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bits 4:0
DBA[4:0]
DMA base address
Базовый адрес DMA

Содержит индекс смещения адреса при передаче в режиме 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 */