首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >102-SLM130(NB-IOT)C-SDK(OpenCPU)学习开发-AD电压,电池电压,CPU温度采集

102-SLM130(NB-IOT)C-SDK(OpenCPU)学习开发-AD电压,电池电压,CPU温度采集

作者头像
杨奉武
发布2022-05-31 10:22:31
发布2022-05-31 10:22:31
9940
举报
文章被收录于专栏:知识分享知识分享

模组上的AD

模组上有两路ADC引脚

测试(ADC采集的AIO2引脚)

代码语言:javascript
复制
static volatile uint32_t adc_aio_value = 0;
static volatile uint32_t adc_vcc_value = 0;
static volatile uint32_t adc_temp_value = 0;
//ADC引脚采集完成中断
void adc_aio_callback(uint32_t result)
{
    adc_aio_value = result;
}
//模组供电电压采集完成中断
void adc_vcc_callback(uint32_t result)
{
    adc_vcc_value = result;
}
//模组温度采集完成中断
void adc_temp_callback(uint32_t result)
{
    adc_temp_value = result;
}
//初始化配置
void adc_init(void)
{
    adc_config_t adcConfig;
    ADC_GetDefaultConfig(&adcConfig);

    adcConfig.channelConfig.aioResDiv = ADC_AioResDivRatio1;//设置分压比例
    ADC_ChannelInit(ADC_ChannelAio2, ADC_UserAPP, &adcConfig, adc_aio_callback);

    adcConfig.channelConfig.vbatResDiv = ADC_VbatResDivRatio3Over16;//设置分压比例
    ADC_ChannelInit(ADC_ChannelVbat, ADC_UserAPP, &adcConfig, adc_vcc_callback);

    adcConfig.channelConfig.thermalInput = ADC_ThermalInputVbat;
    ADC_ChannelInit(ADC_ChannelThermal, ADC_UserAPP, &adcConfig, adc_temp_callback);
}
//启动采集并打印
void adc_collect_printf(void)
{
    ADC_StartConversion(ADC_ChannelAio2, ADC_UserAPP);//启动采集,启动一次采集一次
    ADC_StartConversion(ADC_ChannelVbat, ADC_UserAPP);//启动采集,启动一次采集一次
    ADC_StartConversion(ADC_ChannelThermal, ADC_UserAPP);//启动采集,启动一次采集一次

    printf("adc_aio_value:%d, Voltage:%dmv\r\n", (int)adc_aio_value, (int)HAL_ADC_CalibrateRawCode(adc_aio_value));
    printf("adc_temp_value:%d, Temperature:%d\r\n", (int)adc_temp_value, (int)HAL_ADC_ConvertThermalRawCodeToTemperature(adc_temp_value));
    printf("adc_vcc_value:%d, Voltage:%dmv\r\n", (int)adc_vcc_value, (int)HAL_ADC_CalibrateRawCode(adc_vcc_value) * 16 / 3);
}

把AIO2和BAT引脚连接

ADC采集说明

ADC采集是一个12位的AD, ADC引脚耐压值 0-3.4V

ADC默认是0-1V采集, 对应着 0-4095

上面的AIO2引脚电压超过1V了, 所以打印 4095

如果想采集0-3.3V电压可以设置软件分压

程序可以配置内部分压电阻

把引脚电压设置为5/16分压

把AIO2和BAT引脚连接

程序执行说明

如果想采集AIO1引脚,可以参考AIO2的新增一些程序,或者直接修改

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 模组上的AD
    • 模组上有两路ADC引脚
  • 测试(ADC采集的AIO2引脚)
    • 把AIO2和BAT引脚连接
  • ADC采集说明
    • ADC采集是一个12位的AD, ADC引脚耐压值 0-3.4V
    • ADC默认是0-1V采集, 对应着 0-4095
    • 上面的AIO2引脚电压超过1V了, 所以打印 4095
  • 如果想采集0-3.3V电压可以设置软件分压
    • 程序可以配置内部分压电阻
    • 把引脚电压设置为5/16分压
    • 把AIO2和BAT引脚连接
  • 程序执行说明
  • 如果想采集AIO1引脚,可以参考AIO2的新增一些程序,或者直接修改
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档