DAC的DMA
功能介绍
DAC+DMA 是高效的波形生成方案。硬件实现:定时器 TRGO 事件触发 DMA 请求,DMA 控制器自动从内存波形表搬运数据到 DAC 数据寄存器,每次定时器更新事件自动输出下一个采样点,整个过程无需 CPU 参与。
DAC+DMA 主要用于:任意波形发生器、函数信号发生器、音频信号输出、数字合成信号、自动化测试设备等。通过配置不同的定时器频率和波形表长度,可输出从 Hz 到 MHz 级的各种波形。
波形生成
uint16_t sine_data[256];
for (int i = 0; i < 256; i++) {
sine_data[i] = 2048 + 2048 * sin(2 * PI * i / 256);
}
// 启动 DMA 传输
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1,
(uint32_t*)sine_data, 256, DAC_ALIGN_12B_R);
// 启动定时器触发定时器触发
配置:定时器 TRGO 触发 DAC 转换
频率:定时器更新事件频率 = 输出波形频率 x 每周期点数
频率:定时器更新事件频率 = 输出波形频率 x 每周期点数
示例
- 输出 1kHz 正弦波
- 每周期 256 个点
- 触发频率 = 1kHz x 256 = 256kHz