STM32F4 DAC简单操作【使用库函数】
2013-05-28 12:05
316 查看
STM32F4的DAC是一个12位,电压输出的DAC。可被配置为12位或者8位,也能和DMA联合使用。DAC具有两个独立转换通道。在双DAC模式下,DA抓换可被配置成独立模式或者同步工作模式。两路DAC参考电压以及ADC都是VREF。
【主要特性】
1、两路 2、12bit时数据可被配置成左对齐或右对齐 3、具有同步更新能力 4、噪声产生 5、三角波产生 6、两个通道独立转换或同步转换 7、每个通道都有DMA能力 8、DMA出错检测 9、可外部触发
输出电压计算公式:
Vout = VREF×DOR/4095 = 参考电压×DAC数据寄存器值/4095
【实验内容】
利用DAC输出指定的电压,软件触发DAC转换。
【初始化要点】
1、GPIO配置成AIN/AN即模拟功能。记着开时钟
void DAC_GPIO_Config(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
2、DAC触发方式设置为软件触发(DAC_Trigger_Software)
void DAC_Config(void)
{
DAC_GPIO_Config();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init(DAC_Channel_1,&DAC_InitStructure);
DAC_Cmd(DAC_Channel_1,ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R,0x0000);
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}
3、主函数中使用:
向输出寄存器写数据,数据可根据上边公式得到
DAC_SetChannel1Data(DAC_Align_12b_R,0xF0F0);
然后,然间触发
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
这时,在引脚上GPIOA-4上将会有电压输出。
当然也可以设置成定时器触发,TIM6和TIM7 是专公DAC转换用的定时器。初始化也很方便。
【主要特性】
1、两路 2、12bit时数据可被配置成左对齐或右对齐 3、具有同步更新能力 4、噪声产生 5、三角波产生 6、两个通道独立转换或同步转换 7、每个通道都有DMA能力 8、DMA出错检测 9、可外部触发
输出电压计算公式:
Vout = VREF×DOR/4095 = 参考电压×DAC数据寄存器值/4095
【实验内容】
利用DAC输出指定的电压,软件触发DAC转换。
【初始化要点】
1、GPIO配置成AIN/AN即模拟功能。记着开时钟
void DAC_GPIO_Config(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
2、DAC触发方式设置为软件触发(DAC_Trigger_Software)
void DAC_Config(void)
{
DAC_GPIO_Config();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init(DAC_Channel_1,&DAC_InitStructure);
DAC_Cmd(DAC_Channel_1,ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R,0x0000);
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}
3、主函数中使用:
向输出寄存器写数据,数据可根据上边公式得到
DAC_SetChannel1Data(DAC_Align_12b_R,0xF0F0);
然后,然间触发
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
这时,在引脚上GPIOA-4上将会有电压输出。
当然也可以设置成定时器触发,TIM6和TIM7 是专公DAC转换用的定时器。初始化也很方便。
相关文章推荐
- Mac下使用Typora的一些简单操作
- Apache POI工具对excel文件操作的简单使用
- IOS开发笔记-01按钮操作-08.git的简单使用
- 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
- php使用mongoclient简单操作mongodb数据库
- Android 键盘操作及简单使用
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- STM32F4 RTC【使用库函数】
- 使用BeanUtils进行一些简单的操作
- 使用jxl读写excel(jxl操作excel)的简单例子
- 使用JXL实现对Excel文件的简单操作
- STM32F4 SPI2初始化及收发数据【使用库函数】
- 分别使用Jmeter/Loadrunner/SoapUI做Web Service接口测试的简单操作
- 使用ajax技术实现简单登录操作
- Python3-Selenium3使用PO设计模式(Page Object)实现简单的页面登录操作
- Java使用MongoDB简单操作
- PyMongo简单使用以及操作mongodb数据库
- STM32F4 随机数发生器RNG【使用库函数】
- STM32L152 DAC简单使用方法
- 使用Java Api 对HBase进行简单操作