STM8L151 DAC

2020-04-21来源: eefocus关键字:STM8L151  DAC  ADC采集

最近在做一个关于ADC采集的,同时使用DAC输出的项目,对于DAC输出0V电压做一下总结。


STM8L151中内嵌1个 Output Buffer其作用可以用来降低输出阻抗,可以在不添加外部运算放大器时直接驱动外部负载,通过 DAC_CHxCR1来控制其使能或失能。


我使用的是PB4 具体的配置代码如下:


/********************************

RI_IOSwitch_13 ---> PB6

RI_IOSwitch_14 ---> PB5

RI_IOSwitch_15 ---> PB4

配置DAC1 通道1 PB4 

********************************/

void DAC_Config(void)

{

GPIO_Init(GPIOB,GPIO_Pin_4,GPIO_Mode_In_FL_No_IT);

CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);

CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE);  //打开比较器

 

  SYSCFG_RIIOSwitchConfig (RI_IOSwitch_15, ENABLE); //打开PB4 DA

DAC_DeInit(); //DAC初始化到默认值

// DAC_OutputBuffer_Disable  可输出 0V电压

DAC_Init( DAC_Channel_1,DAC_Trigger_Software,DAC_OutputBuffer_Disable);//通道 触发 缓冲

 

  DAC_WaveGenerationCmd(DAC_Channel_1, DAC_Wave_Triangle, ENABLE);//三角波

  DAC_SetTriangleWaveAmplitude(DAC_Channel_1, DAC_TriangleAmplitude_4095);//

 

  DAC_Cmd(DAC_Channel_1, ENABLE); 

 

DAC_SetChannel1Data(DAC_Align_12b_R,0);

DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);

}


参考3.3V输出的电压值与实际值的比例关系


/****************************

设置通道1输出电压

vol = 0~3300 mV  

*****************************/

u8 Set_Vol(u16 vol)

{

double temp=vol;

temp=temp*4095/3300;

DAC_SetChannel1Data(DAC_Align_12b_R, temp);  

return 1;

}

关键字:STM8L151  DAC  ADC采集 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic495011.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32之DAC固定电压输出配置
下一篇:STM32 DAC简单介绍

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm8l151低功耗程序架构,调试心得
最近帮医院做了一款体温记录仪,整个硬件方案资源是:stm8L151 + NTC*2 + EEPROM + 锂电池充电保护电路 + 18mAh纽扣电池;软件逻辑是,每隔一分钟,采样两路温度并保存在EEP里;通过USB转TTL,上位机能够读取,展示温度曲线,最大最小平均值等简单的运算;整个方案很简单,但也走了不少弯路......单片机程序框架之伪代码:void main(void){    CLK_Config();    GPIO_Config();    ADC_Config();    USART_Config();   
发表于 2020-04-27
STM8L151系列 (OTA) Bootloader功能的开启 和 关闭
_Extends/blob/master/main.c    optbl = ((uint16_t)FLASH_ReadByte(OPT_BL_ADDR_L) << 8) | FLASH_ReadByte(OPT_BL_ADDR_H);    if (optbl != 0x0000)    {        printf("[OPTBL] dis: 0x%Xrn", optbl);        // OPTBL:  Option Byte 可选的字节 
发表于 2020-04-01
STVD下STM8L151使用官方固件库开发
相信很多朋友在STM8的开发中很多是使用官方的固件库来进行开发的,这样开发速度快,并且程序不易出错。前面的博客讲到了如何在STVD中新建一个新的STM8L151的工程,最后新建成功后,出现下面的工程目录:在STM8_interrupt_vector.c 文件中,代码如下:/* BASIC INTERRUPT VECTOR TABLE FOR STM8 devices * Copyright (c) 2007 STMicroelectronics */ typedef void @far (*interrupt_handler_t)(void); struct interrupt_vector
发表于 2020-03-17
<font color='red'>ST</font>VD下<font color='red'>STM8L151</font>使用官方固件库开发
IAR no definition for
最近在学STM8L151,在编程的时候遇到了一些问题和大家分享下。代码终于打完之后,make一下直接报错:Error[Li005]: no definition for "TIM2_ClearITPendingBit" [referenced from C:UsersAdministratorDesktopble_ ir_emitterDebugObjstm8l15x_it.o] 错误如上,函数未定义或声明,然后我找到目标源文件和头文件,TIM2_ClearITPendingBit函数是库文件 stm8l15x_tim2.h 里面的函数,然后我在stm8l15x_it.c中包含了stm8l
发表于 2020-03-12
stm8l151低功耗程序架构,调试心得
最近帮医院做了一款体温记录仪,整个硬件方案资源是:stm8L151 + NTC*2 + EEPROM + 锂电池充电保护电路 + 18mAh纽扣电池;软件逻辑是,每隔一分钟,采样两路温度并保存在EEP里;通过USB转TTL,上位机能够读取,展示温度曲线,最大最小平均值等简单的运算;整个方案很简单,但也走了不少弯路......单片机程序框架之伪代码:void main(void){    CLK_Config();    GPIO_Config();    ADC_Config();    USART_Config();   
发表于 2020-03-09
STM32CubeMX系列教程8:数模转换(DAC)
1.DAC单次转换本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。PA5管脚配置为DAC输出通道2。 DAC配置为默认配置不需修改。生成报告以及代码,编译程序。在adc.c文件中可以看到ADC初始化函数。在stm32f7xx_hal_dac.h头文件中可以看到DAC的操作函数。01/** @addtogroup DAC_Exported_Functions_Group202  * @{03  */04/* I/O operation functions
发表于 2020-06-23
STM32CubeMX系列教程8:数模转换(<font color='red'>DAC</font>)
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved