一.DAC介绍
ADC是模数转换器,可以将模拟电压转换位数字信号;DAC是数模转换器,可以将数字信号转换为模拟电压。
STM32F103ZET6内部DAC有2个通道,12位数字输入(也可以配置为8位),可以按要求输出不同的信号波形,其主要特点如下:
2个DAC转换通道
每个通道都有DMA功能
2个通道可以同时转换或者分别转换
输入信号可以是12位或8位
12位输入模式分为:右对齐、左对齐
有同步更新功能
可以生成噪声波形
可以生成三角波形
DAC框图如下:
二.主要寄存器说明
一般使用DAC情况不多,而且使用也就是单纯输出电压,基本用不到STM32输出一些特殊的波形,所以了解一下基本的寄存器就可以配饰DAC了。
DAC 输出是受 DORx 寄存器直接控制的,但是不能直接往 DORx寄存器写入数据,而是通过 DHRx 间接的传给 DORx 寄存器,实现对 DAC 输出的控制。
比如通道1的12位右对齐数据保持寄存器:
控制DAC的就是DAC控制寄存器了:
这种东西,现在查一下参考手册就可以很快掌握。
三.代码及配置
PA4开始设置为模拟输入是为了防止信号干扰,在使能DAC后,PA4会自动与DAC模拟输出相连,所以不必担心。
/* DAC1 PA4 模拟输入 12位右对齐 参考电压3.3V */
void DAC1_Init( void )
{
GPIO_InitTypeDef GPIO_InitStruct;
DAC_InitTypeDef DAC_InitStruct;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );
RCC_APB1PeriphClockCmd( RCC_APB1Periph_DAC, ENABLE );
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;//GPIO引脚模式:模拟输入
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init( GPIOA, &GPIO_InitStruct );
GPIO_SetBits( GPIOA, GPIO_Pin_4 );
DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;//只有波形发生时才使用
DAC_InitStruct.DAC_OutputBuffer = DAC_OutputBuffer_Disable;//不使用输出缓存
DAC_InitStruct.DAC_Trigger = DAC_Trigger_None;//不触发
DAC_InitStruct.DAC_WaveGeneration = DAC_WaveGeneration_None;//不使用波形发生
DAC_Init( DAC_Channel_1, &DAC_InitStruct );
DAC_Cmd( DAC_Channel_1, ENABLE );
DAC_SetChannel1Data( DAC_Align_12b_R, 0 );
}
/* 参考电压3.3V 12位分辨率:0~4095 vol代表输出电压的100倍:0~330 */
void Set_DAC_Vol( uint16_t vol )
{
uint16_t x;
x = (uint16_t)4096*(vol/330);
DAC_SetChannel1Data( DAC_Align_12b_R, x );
}
上一篇:STM32—驱动GY85-IMU模块
下一篇:STM32—PID控制在直流电机中的应用
推荐阅读最新更新时间:2024-10-30 18:36
设计资源 培训 开发板 精华推荐
- 基于海思HI3861模组拓展的四足仿生机械狗
- LT1618、DC/DC 转换器从各种电源驱动 Lumileds 白光 LED
- 涂鸦zigbee温湿度
- EVB-USB2514BC,评估板使用 USB2514B 高速 USB 2.0 多 TT 4 端口集线器,支持电池充电
- 使用 ROHM Semiconductor 的 BA18BC0T 的参考设计
- NCP57152MNADGEVB、1.5A 可调 VLDO 稳压器演示评估板
- ZSR800GTA 8 伏固定正电压稳压器的典型应用
- 使用 Analog Devices 的 LT1303CN8-5 的参考设计
- AD9245BCP-20EB,具有 AD9245 3V、14 位、20 MSPS ADC 的评估板
- LTC4367CDD-1 用于限制浪涌电流的过压电源保护控制器的典型应用