目录
1 DAC
1.1 DAC简介
(1)数字模拟转换器(Digital to Analog Converter,DAC),可以将数字信号转换为模拟信号。
(2)主要特性:
- 2个DAC:每个DAC对应1个输出通道
- 8位或12位单调输出
- 12位模式下数据左对齐或右对齐(8位只有右对齐)
- 同步更新、噪声波形生成、三角波形生成
- 双DAC通道同时或者分别转换
- 每个通道都有DMA功能
- 外部触发转换(软件触发、硬件触发)
- 输入参考电压VREF+.
1.2 结构框图
- 通过DHRx寄存器间接向DORx寄存器中写入数据
- 硬件触发(TENx=1,设置TSELx选择触发源)、软件触发(TENx=0)
- 输出波形最大频率:250KHz
2 软件配置
DAC 相关库函数在 stm32f10x_dac.c 和 stm32f10x_dac.h 文件中。
(1)使能端口及 DAC 时钟,设置引脚为模拟输入
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入
(2)初始化 DAC,设置 DAC 工作模式
void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
typedef struct
{
uint32_t DAC_Trigger; //DAC 触发选择
uint32_t DAC_WaveGeneration; //DAC 波形发生(噪声波、三角波)
uint32_t DAC_LFSRUnmask_TriangleAmplitude; //屏蔽/幅值选择器(只有使用波形发生器时才使用)
uint32_t DAC_OutputBuffer; //DAC 输出缓存——使用输出缓存可能导致输出无法到0,一般关闭
}DAC_InitTypeDef;
(3)使能 DAC 的输出通道
void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);
(4)设置 DAC 的输出值
DAC_SetChannel1Data(DAC_Align_12b_R, 0);
uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);
3 硬件设计
4 软件设计
4.1 功能描述
通过 KEY_UP 与 KEY1 按键控制 STM32 DAC1输出电压,通过串口将 DAC1 输出的电压值打印显示,DS0 指示灯闪烁提示系统运行。