W800开发套件鸿蒙系统教程

W800开发套件鸿蒙系统教程


3.9.1 通过内部ADC获取芯片温度

本例仍然使用demo固件

确保宏定义DEMO_ADC已经打开,在头文件wm_demo.h中设置,如下:

#define DEMO_CONSOLE                DEMO_ON

#define DEMO_ADC                    (DEMO_ON && DEMO_CONSOLE)

固件运行后,串口发送命令:t-adctemp()即可在串口输出窗口打印出ADC转换出的芯片温度值,如下图所示:


w800内部集成2路16比特的ADC,最高采样率1KHz。可完成2路模拟信号的采集,采样率通过外部输入时钟控制,可采集输入电压,也可采集芯片温度,支持输入校准和温度补偿校准。而w801则支持4路ADC。

ADC温度采集的源码位于文件wm_adc_demo.c中,如下代码片段所示:

int adc_chip_temperature_demo(void)
{
    char temperature[8] = {0};
    int temp;

    temp = adc_temp();
    if (temp < 0)
    {
        temp = 0 - temp;
        sprintf(temperature, "-%d.%03d", temp/1000, temp%1000);
    }
    else
    {
        sprintf(temperature, "%d.%03d", temp/1000, temp%1000);    
    }
    printf("tem: %s\r\n", temperature);

    return 0;
}

主要是调用了sdk提供的adc_temp()函数直接获取采集转换结果。该函数源码可在sdk的platform/driver/adc/wm_adc.c文件中了解更底层实现过程。

页面列表

ITEM_HTML