DMA寄存器学习
以下是 DMA1_Channel4 的各个寄存器详细设置说明(基于STM32F1系列):
DMA1_Channel4 寄存器总览
寄存器 | 地址 | 功能描述 | 复位值 |
---|---|---|---|
CCR | 0x40020044 | 通道配置寄存器 | 0x0000 |
CNDTR | 0x40020048 | 通道传输数量寄存器 | 0x0000 |
CPAR | 0x4002004C | 通道外设地址寄存器 | 0x0000 |
CMAR | 0x40020050 | 通道内存地址寄存器 | 0x0000 |
1. 通道配置寄存器 (DMA_CCR) - 0x40020044
位 | 名称 | 功能描述 | 设置值 |
---|---|---|---|
14 | MEM2MEM | 内存到内存模式: 0=禁用 1=启用 | 通常为0 |
13:12 | PL[1:0] | 通道优先级: 00=低 01=中 10=高 11=最高 | 根据需求设置 |
11 | MSIZE[1:0] | 内存数据大小: 00=8位 01=16位 10=32位 | 匹配数据宽度 |
10 | PSIZE[1:0] | 外设数据大小: 00=8位 01=16位 10=32位 | 匹配外设宽度 |
9 | MINC | 内存地址增量模式: 0=固定地址 1=地址递增 | 通常为1 |
8 | PINC | 外设地址增量模式: 0=固定地址 1=地址递增 | 通常为0 |
7 | CIRC | 循环模式: 0=普通模式 1=循环模式 | 接收常用1 |
6 | DIR | 数据传输方向: 0=从外设到内存 1=从内存到外设 | 根据用途设置 |
5 | TEIE | 传输错误中断使能 | 根据需求 |
4 | HTIE | 半传输中断使能 | 根据需求 |
3 | TCIE | 传输完成中断使能 | 根据需求 |
2 | EN | 通道使能 | 最后设置为1 |
2. 通道传输数量寄存器 (DMA_CNDTR) - 0x40020048
位域 | 功能描述 |
---|---|
[15:0] | 指定要传输的数据项数量 |
特性:
- 传输过程中自动递减
- 写入新值前必须先禁用通道
- 循环模式下自动重载
3. 通道外设地址寄存器 (DMA_CPAR) - 0x4002004C
位域 | 功能描述 |
---|---|
[31:0] | 外设数据寄存器地址 |
USART1发送地址:
DMA1_Channel4->CPAR = (uint32_t)&USART1->DR;
4. 通道内存地址寄存器 (DMA_CMAR) - 0x40020050
位域 | 功能描述 |
---|---|
[31:0] | 内存数据缓冲区地址 |
设置示例:
DMA1_Channel4->CMAR = (uint32_t)tx_buffer;