历史上的今天
今天是:2025年04月23日(星期三)
2020年04月23日 | STM32DAC讲解及代码示例
2020-04-23 来源:eefocus
DAC转换
STM32的DAC模块主要特点有:
① 2个DAC转换器:每个转换器对应1个输出通道
② 8位或者12位单调输出
③ 12位模式下数据左对齐或者右对齐
④ 同步更新功能
⑤ 噪声波形生成
⑥ 三角波形生成
⑦ 双DAC通道同时或者分别转换
⑧ 每个通道都有DMA功能
DAC_OUT1 ->PA4
DAC_OUT2 ->PA5

DAC配置步骤



程序代码示例:
//DAC通道1输出初始化
void Dac1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitType;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //使能PORTA通道时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //使能DAC通道时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; // 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_4) ;//PA.4 输出高
DAC_InitType.DAC_Trigger=DAC_Trigger_None; //不使用触发功能 TEN1=0
DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波形发生
DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽、幅值设置
DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC1输出缓存关闭 BOFF1=1
DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化DAC通道1
DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC1
DAC_SetChannel1Data(DAC_Align_12b_R, 0); //12位右对齐数据格式设置DAC值
}
//设置通道1输出电压
//vol:0~3300,代表0~3.3V
void Dac1_Set_Vol(u16 vol)
{
float temp=vol;
temp/=1000;
temp=temp*4096/3.3;
DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右对齐数据格式设置DAC值
}
史海拾趣
|
作者:韩洁琼 曾碧 余永权 李 泰 来源:单片机及嵌入式系统应用 发表时间:2007-07-19 摘要 详细介绍有关电路板的PCB设计过程以及应注意的问题。在设计过程中针对普通元器件及一些特殊元器件采用不同的布局原则;比较手工布线、自 ...… 查看全部问答> |
|
一个CAB安装包能不能实现安装完后接着自动运行一个EXE文件啊? 请问一个CAB安装包能不能实现安装完后接着自动运行一个EXE文件啊?EXE文件是外部调用的,比如是和CAB文件同一目录里… 查看全部问答> |
|
本人初学单片机,很多东西不懂,望大侠们帮我解答以下几个问题,多谢. 1.请问什么软件能把用ICCAVR写好的程序烧录进EEPROM ? 2.板子上有一个6针脚的长方形接口,估计就是传说中的USART(串口)吧,烧录前是不是用串口线连接电脑的串口和板子上的这个 US ...… 查看全部问答> |
|
我用evc做了一个基于对话框的程序,其中用到了自己编的一个图形控件。用模拟器运行,在对话框切换的时候(模式对话框DoModal()),有控件的地方还是显示上一个对话框的内容,请问哪位大虾遇到过这种情况?是不是所编控件的原因?如何把上一个对话框 ...… 查看全部问答> |
|
1 文件过滤驱动捕获文件操作之后,如何能够从驱动立刻通知应用程序知道呢? 比如,杀毒软件得实施监控,能够立刻让界面之后某个程序被用户打开了 我想让我得驱动捕获到读和写得时候立刻通知应用程序知道 2 文件过滤驱动,捕获到写请求得时候 应用 ...… 查看全部问答> |
|
代朋友咨询这个问题。 他把RIL的mdd代码从public移到自己bsp的driver下面,然后把PDD也移植过来,然后编译生成了rilgsm.dll,然后修改了platform.bib和platform.reg文件,然后把此两个文件拷贝到OSDesigns\\......\\release 目录下,然后makeimg, ...… 查看全部问答> |




