一.stm32上ADC,DAC的应用说明

本文介绍了STM32中ADC(模数转换器)和DAC(数模转换器)的应用。ADC将模拟信号转换为数字信号,常用于传感器数据采集;DAC则相反,用于数字信号到模拟信号的转换。STM32的ADC包含多个通道,如ADC123的_IN1。在配置过程中,可结合DMA使用以提高效率。文章还提到了ADC输入电压范围的设定,并给出了模拟电压与转换数值的关系公式,为配置DAC输出不同频率的波形提供依据。
摘要由CSDN通过智能技术生成

一.stm32上ADC,DAC的应用说明:

1.首先ADC是将模拟信号转成数字信号,DAC则相反。

(模拟信号可以简单的理解为温度,光照,压力等,数字信号则可以是电压等),

2.一般某些传感器上会标出AO,DO,AI,DI。

其中AO叫做模拟量输出,DO数字信号输出。AI,DI则对应着输入。
(未知)AO–>转化–>DI(对应的数字信号)。
进一步解读:可以看成AO是模拟信号采集以后输出给数字信号DI接收后经过数据处理就得到了对应的电压数值,而这些电压数字一般和模拟量之间存在这一些数学转换公式,此过程就是ADC采集数据。
(已知)DO->处理->AI(对应的模拟量)。
此处解读:可以看成是通过改变数字信号(电压)DO输出给模拟信号AI接受后使模拟量发生改变,对应DAC。

3.认识ADC在引脚上的位置

在这里插入图片描述
此处ADC123,指该芯片上的三个ADC,
_IN1,指通道1。

在这里插入图片描述
stm32fxxadc.h中主要有两个结构体需注意。


typedef struct 
{
   
	 uint32_t ADC_Resolution; //ADC 分辨率选择
	 FunctionalState ADC_ScanConvMode; //ADC 扫描选择
	 FunctionalState ADC_ContinuousConvMode; //ADC 连续转换模式选择
	 uint32_t ADC_ExternalTrigConvEdge; //ADC 外部触发极性
	 uint32_t ADC_ExternalTrigConv; //ADC 外部触发选择
	 uint32_t ADC_DataAlign; //输出数据对齐方式
	 uint8_t ADC_NbrOfChannel; //转换通道数目
 } ADC_InitTypeDef;



 typedef struct
  {
   
	 uint32_t ADC_Mode; //ADC 模式选择
	 uint32_t ADC_Prescaler; //ADC 分频系数
	 uint32_t ADC_DMAAccessMode; //DMA 模式配置
	 uint32_t ADC_TwoSamplingDelay; //采样延迟
 } ADC_CommonInitTypeDef;


不使用dma时adc初始化函数:


static void _ADC_Mode_Config(void)
 {
   
 ADC_InitTypeDef ADC_InitStructure;
 ADC_CommonInitTypeDef ADC_CommonInitStructure;
 // 开启 ADC 时钟
 RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADCx , ENABLE);

// -------------------ADC Common 结构体 参数 初始化--------------------
 // 独立 ADC 模式
 ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
 // 时钟为 fpclk x 分频 (ADC输入时钟fpck=HCLK/分频系数,此处的HCLK就是设置的系统时钟:fpck=hack/4=168/4=42Mhz)
 ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
 // 禁止 DMA 直接访问模式
 ADC_CommonInitStructure.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled;
 // 采样时间间隔  周期=1/42=0.023  T=5+12=17(周期)=17*0.023= 0.4us 采集一次 
 ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_20Cycles;
 ADC_CommonInit(&ADC_CommonInitStructure);
 
 // ---------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值