S32K1XX_ADC采集的实现

本文章介绍一种基于软件触发的ADC采集实现方式
如图所示为原理图部分,此处的VCC_MCU为3.3V的电压,ADC0_CH2为ADC采集的通道,ADC2为滑动变阻器,用于控制输入的电压大小,R17与C20搭配,起到限流与滤波的作用,同时VREFH(参考电压高)为3.3,参考电压L(参考电压低)为GND。
在这里插入图片描述
在这里插入图片描述
原理图已经看懂,现在进行引脚与外设的配置:
PIN配置:原理图中已经知道为ADC0_SE2,在PIN配置中选择对应通道即可
在这里插入图片描述
再进行外设的配置:需要注意圈出的几个地方,需要注意此处为ADC0通道,所以需要选择ADC_0,同时选择软件触发,在最下面的输入通道配置中,选择2通道,代表在AD0的2通道。
在这里插入图片描述
软件代码实现:
首先进行ADC的初始化,在while中实现ADC采集,仅供参考

unsigned short int  ad_value= 0;
double ad_value_change = 0;
int main(void)
{
    CLOCK_SYS_Init(g_clockManConfigsArr,   CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
    CLOCK_SYS_UpdateConfiguration(0U, 1);    // 时钟初始化

    PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);      //GPIO初始化

    ADC_DRV_ConfigConverter(0,&ADC0_2);    //ADC0通道2初始化配置  0代表ADC0
    ADC_DRV_AutoCalibration(0);     //启用ADC校准   0代表ADC0

    while(1)
    {
        ADC_DRV_ConfigChan(0,0,&ADC0_SE2);   //软件触发转换 第1个参数为ADC0 第2个参数为外设配置的中序号0, 第3个参数为ADC0内部通道参数
        ADC_DRV_WaitConvDone(0);      //等待ADC0转换完成
        ADC_DRV_GetChanResult(0,0,&ad_value);   //第1个参数为ADC0 第2个参数为外设配置的中序号0,第3个参数为 ad_value为16位变量  传入指针进行赋值 得到AD值 非实际意义的电压值
        ad_value_change = ((double)ad_value*3.3)/(1<<12);  //参考电压3.3V,使用12精度采集,进行转换得到电压值
    }
}

效果:
满偏值:采集有一定误差,接近4096满篇值
在这里插入图片描述

改变电阻大小:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值