历史上的今天
今天是:2025年01月26日(星期日)
2019年01月26日 | STM8L15x系列DAC的使用
2019-01-26 来源:eefocus
在项目中偶尔会使用DA转换器,我使用的MCU是STM8L151G6U6。我是用的是PB4作为DA输出管脚,查阅该芯片的Reference manual手册可知,PB4是属于DAC_OUT1,即DAC通道一。
再查阅PB4输入输出控制,PB4对应的是开关15。
下面是我用软件触发模式使用的DAC配置代码。
dac.h头文件代码如下:
#ifndef __DAC_H__
#define __DAC_H__
#ifdef __cplusplus
extern "C"{
#endif
#include "stm8l15x.h"
/* DAC_OUT ---> PB4(DAC_OUT) */
#define DAC_OUT_PORT (GPIOB)
#define DAC_OUT_PIN (GPIO_Pin_4)
/* Function prototype */
void DAC_Init(void);
#ifdef __cplusplus
}
#endif
#endif /* End define macro __DAC_H__ */
dac.c源文件代码如下:
#include "dac.h"
/*
** @ Brief: Init DAC
** @ Parameter: None
** @ Return: None
**/
void DAC_Init(void)
{
/* Configure DAC GPIO pin */
GPIO_Init(DAC_OUT_PORT, DAC_OUT_PIN, GPIO_Mode_In_FL_No_IT);
/* Enable comparator clock */
CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE);
/* Enable DAC Clock */
CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);
/* Enable PB4 input output switch */
SYSCFG_RIIOSwitchConfig(RI_IOSwitch_15, ENABLE);
/* Init DAC channel 1 output and enable output buffer */
DAC_DeInit();
DAC_Init(DAC_Channel_1, DAC_Trigger_Software, DAC_OutputBuffer_Enable);
/* Enable the selected DAC channel wave generation */
DAC_WaveGenerationCmd(DAC_Channel_1, DAC_Wave_Triangle, ENABLE);
/* Select DAC Triangle Wave Generation Amplitude according to the specified parameters */
DAC_SetTriangleWaveAmplitude(DAC_Channel_1, DAC_TriangleAmplitude_4095);
/* Enables the specified DAC channel. */
DAC_Cmd(DAC_Channel_1, ENABLE);
}
在main.c中,使用DAC转换器的代码如下;
#include "dac.h"
void main(void)
{
uint16_t DACData = 0;
DAC_Init();
while(1)
{
for(DACData = 0; DACData < 4096; DACData++)
{
DAC_SetChannel1Data(DAC_Align_12b_R, DACData);
DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
}
}
}
用示波器测量PB4会发现,电压值从小到大循环往复。转换关系为:
输出电压 = DACData * 参考电压 / 4096;
其中4096为DAC触发振幅,由初始化参数DAC_TriangleAmplitude_4095设定,可以更改;DACData为输入的需要转换的值,范围0~触发振幅(这里为4096);参考电压一般为板子工作的所需的正常电压,我的为3.3V。
上一篇:STM8->EXTI
下一篇:STC单片机硬件PWM的使用分析
史海拾趣
|
芯惠通的JetCard1404的每个串口的IO地址和中断在哪能找到? 打电话问客服,说是在BIOS里面有,具体的哪儿也不知道 我在设备管理器里面找,由多串口卡扩展出来的4个串口都没有“资源“这一项! 请问到底怎么找啊?因为要用C语言在TC里面编程,找 ...… 查看全部问答> |
|
我发现在2410init.s中的“拷贝nand中内容到SDRAM”的这个代码是有问题的。理由如下: 我们知道nand中存在坏块的,但是第一个block肯定是好块,这个可以确认。 如果我我烧录的bin文件是低于steppingstone 4KB大小,那么 ...… 查看全部问答> |
|
各位大虾, 我现在在做usb host端程序,处理的设备有两种配置,1。U盘,2,hid+audio, 现在默认配置是u盘功能,现在我想要在设备插入时,枚举过程中,选择配置2,hid+audio, 该怎样的命令流程,希望大虾们能指点一下,谢谢! PS:现在固定的枚举 ...… 查看全部问答> |
|
RT 谁做个这方面的 能否提供点思路 或者源码 PC上关于这方面的代码都挺多的,在Wince上没有找到相关的资料,迷茫 据我分析 PC上的方法在Wince上面都无法实现的 PC上的方法: 1. 通过IP Helper Function中的几个未公开的函数实现 All ...… 查看全部问答> |




