6.stm32的ADC模数转换,单通道,多通道采集实验

STM32-ADC模数转换概述

STM32-单通道采集实例

STM32-多通道采集实例

一.ADC转换 的概述

1.ADC的概念    

        Analog-to-Digital Converter的缩写。

        指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。

2. ADC的作用        

        采集传感器的数据,测量输入电压,检查电池电量剩余,监测温湿度等。        

        典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

3.ADC的性能指标

         量程:能测量的电压范围  

        分辨率:ADC的分辨率通常以输出二进制数的位数表示,位数越多,分辨率越高,一般来说分辨率越高,转化时间越长。  

        转化时间:模拟输入电压在允许的最大变化范围内,从转换开始到获得稳定的数字量输出所需要的时间称为转换时间

4.ADC功能框图

 (1)电压输入范围

        V REF-  ≤ V IN ≤ V REF+

        V REF-:连接地. V REF+:连接电源3.3v. V IN:输入的电压

(2)输入通道

        每个ADC 有16个外部通道。另外还有两个内部 ADC 源 和 V BAT 通道挂在 ADC1上

(3)转换顺序

        <1>规则通道组:正常通道组,在main.c的while循环里面运行,中规中矩

        规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中.

        <2>注入通道组:中断

        注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转化的总数应写入ADC_JSQR寄存器的L[1:0]中.

(4)转换时间

        <1>ADC时钟:最大值为36MHZ,但是;连接在84MHZ总线上,所以一般使用4分频或者6分频

        <2>ADC总转换时间:Tconv = 采样时间(最少3个PCLK2周期) + 12个周期(转换时间)

(6)中断类型

        <1>转换结束中断    

        规则通道和注入通道的数据转换结束后,都可以产生中断

        <2>模拟看门狗中断    

        当被 ADC 转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断

         <3>溢出中断    

        如果发生 DMA传输数据丢失,会置位 ADC 状态寄存器 ADC_SR的 OVR位,如果同时使能了溢出中断,那在转换结束后会产生一个溢出中断。

        <4>DMA  请求    

        规则和注入通道转换结束后,除了产生中断外,还可以产生 DMA请求,把转换好的数据直接存储在内存里面。

(7).触发源:软件触发,外部事件触发

5.ADC工作模式

 二.单通道采集实验

1.实验要求:

        利用ADC采集FSM4中电位器的数据

2.cubemx创建工程

(1)ADC接口配置

 

 (2)配置ADC

 

 

 

(3)RCC时钟配置,USART1串口配置

3.步骤<使用普通函数查询数据>:

mian.c的while(1)中

//打开ADC
HAL_ADC_Start(&hadc1);
//轮询判断是否接收到数据
if(HAL_ADC_PollForConversion(&hadc1, 100)==HAL_OK){
    //接收到电压值
	value=HAL_ADC_GetValue(&hadc1);
	printf("电压为:%d\n",value);
}
HAL_Delay(1000);

4.实验现象

补充实验:中断接收数据

1.<cubemx创建同上>

2.mian.c中

(1)全局变量

uint32_t value;

(2)while()循环中 

HAL_ADC_Start_IT(&hadc1);
HAL_Delay(1000);

(3).it.c中找到回调函数,adc.c中重写

extern uint32_t value;
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
	if(hadc->Instance==ADC1){
		value=HAL_ADC_GetValue(&hadc1);
		printf("µçѹΪ:%d",value);
	}
}

实验结果与上面实验一致,但中断使运行效率提高

三.多通道采集实验

1.实验要求

        利用ADC采集电位器及STM32内部温度传感器的数据

2.cubemx创建工程

(1)ADC设置(两个通道同时采集)

(2)RCC,串口

(3)ADC配置

3.步骤:
与上述的实验相似,只是for循环接收消息

uint32_t adc_value = 0;
uint8_t i;

 在while循环里面:

HAL_ADC_Start(&hadc1);
for(i =0; i<2 ; i++){
	if (HAL_ADC_PollForConversion( &hadc1, 100) == HAL_OK){
		adc_value = HAL_ADC_GetValue(& hadc1);
		printf("adc_value = %d\n",adc_value);
        HAL_Delay(300);
    }
}	

4.运行结果

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F103多通道ADC采集是指使用STCubeIDE开发环境对STM32F103系列微控制器进行多通道模拟信号采集STM32F103是一款由STMicroelectronics公司推出的32位ARM Cortex-M3内核的微控制器,具有多个通道ADC模块用于模拟信号的转换。 使用STCubeIDE进行开发可以简化程序的编写和调试过程。首先,需要在STCubeIDE的工程中配置ADC模块,设置采样率、分辨率和输出数据格式等参数。然后,配置每个通道的引脚,选择输入模式(单端或差分模式)和参考电压源。 接下来,可以通过编写代码来实现ADC的初始化和启动。初始化ADC模块后,可以通过启动ADC转换来开始采集模拟信号。同时,还需要设置中断或DMA传输来处理ADC转换完成后的数据。 在多通道ADC采集过程中,需要按照一定的采样顺序依次选择每个通道进行转换。可以使用软件触发或外部触发来控制ADC的转换时间。每次转换完成后,可以通过读取ADC数据寄存器来取转换结果。 最后,可以根据需要对采集的模拟信号进行处理和存储。可以使用滤波算法对数据进行滤波,提高采集精度和稳定性。同时,也可以使用存储器或外部接口将采集的数据保存或传输到其他设备。 总之,STM32F103多通道ADC采集是一种利用STCubeIDE开发环境对STM32F103微控制器进行多通道模拟信号采集的方法。通过合理配置和编写代码,可以实现对多个通道的模拟信号进行高效准确的采集和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值