[ BLE4.0 ] 伦茨ST17H66开发-ADC采集电压数据-ADC中断采集-ADC单端输入与差端输入

目录

一、前言

二、采集模式

三、详细步骤

        3.1 引脚选择

        3.2 代码实现

        3.2.1 导入库文件

        3.2.2 模式选择

        3.2.3 bypass模式

        3.2.4 attenuation模式

        3.2.5 代码配置

四、效果展示


一、前言

        使用单片机面对数据采集时,往往设计到模拟量的采集,因此,掌握ADC采集同样可以说是必备技能。那么本文将使用ST17H66进行ADC采集数据的任务,本文涉及的开发所使用的例程依然是基于[ BLE4.0 ] 伦茨ST17H66开发-OSAL系统中添加自己的Task任务文章的工程源码,实现的具体功能为将采集到的ADC数据打印到串口。

二、采集模式

        在ST17H66为我们提供的ADC采集手册中,该芯片支持单端采集和双端采集模式。同时还有采集声音信号的PGA。

        那么单端输入和差分输入的定义是什么?手册中也给出了解释。

        本文所实现任务采用单端输入模式,这基本上满足市面上大多出传感器的采集要求。

三、详细步骤

        3.1 引脚选择

        首先,选择一个引脚作为ADC采集引脚,连接传感器或需要测量的电压点。

        查阅ADC帮助手册,发现官方提供10个引脚可使能ADC。

        其中对单端输入模式、差分输入模式和PGA模式的引脚还有细分。

        此处,我们选择单端输入模式P11引脚。

        3.2 代码实现

        下面,我们打开之前创建的任务例程,开始添加代码。

        3.2.1 导入库文件

        在SimpleBlePeripheral工程中,是没有ADC采集的库的。我们需要导入adc.c和adc.h。导入方式可以参考:Keil5添加.c文件与.h文件的方法-导入支持库-添加导入文件

        导入完成后,准备初始化结构体adc_Cfg_t,配置相关参数。

        3.2.2 模式选择

        经过查阅手册,可以发现adc_Cfg_t有四个属性,分别是通道、工作方式、工作模式和分辨率。

        那么前三个属性比较好理解,那么什么是bypass模式和attenuation模式?

        3.2.3 bypass模式

        该模式适用于面对与高精度的采集,但其采集电压范围为0~0.8V,当采集电压为0.8V内,可以直接使用高精度模式,而如果电压较大,还需要使用高精度模式时,则需要外部分压。具体如下:

        3.2.4 attenuation模式

        该模式量程范围0~3.2V,如果被测电压大于3.2V,那么同样需要外接分压电阻。

        3.2.5 代码配置

        打开工程,在Mytask.c文件中,创建并初始化adc_Cfg_t结构体。注意需要在Mytask.h文件中引入adc.h。

通道定义参考adc.c文件内定义。

        随后我们如果使用ADC,需要在main.c中的hal_init函数中完成对ADC的初始化。

        创建ADC处理函数,对返回的数据进行计算,并打印出电压值。

static void adc_evt(adc_Evt_t* pev)
{
	LOG("\npev->ch%d\n",pev->ch);
	float val = hal_adc_value_cal(ADC_CH1N_P11,pev->data,pev->size,0,0);
	uint8 data[15]={'\0'};
	sprintf((char *)data,"Value=%.3f",val);
	LOG("\n%s\n",data);
	osal_start_timerEx(Mytask_id,MyTask_StartADC_EVT,1000);//再次采集
}

四、效果展示

        将程序烧写进去,可以看到打印的电压值。使用万用表测量真实值后与打印数值比较,误差不超过10mv(非高精度模式)。

        资源:simpleBlePeripheral-NewTask-ADC.zip资源-CSDN文库

  • 22
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西菜鸟

打赏支持获得问题解答机会

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值