W800开发套件鸿蒙系统教程

W800开发套件鸿蒙系统教程


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

<p>本例仍然使用demo固件</p> <p>确保宏定义<code>DEMO_ADC</code>已经打开,在头文件<code>wm_demo.h</code>中设置,如下:</p> <pre><code class="language-c">#define DEMO_CONSOLE DEMO_ON #define DEMO_ADC (DEMO_ON &amp;&amp; DEMO_CONSOLE)</code></pre> <p>固件运行后,串口发送命令:<code>t-adctemp()</code>即可在串口输出窗口打印出ADC转换出的芯片温度值,如下图所示:</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b2c1d056001d928f2b8f7df5f0621b5e&amp;file=file.png" alt="" /></p> <hr /> <p>w800内部集成2路16比特的ADC,最高采样率1KHz。可完成2路模拟信号的采集,采样率通过外部输入时钟控制,可采集输入电压,也可采集芯片温度,支持输入校准和温度补偿校准。而w801则支持4路ADC。</p> <p>ADC温度采集的源码位于文件<code>wm_adc_demo.c</code>中,如下代码片段所示:</p> <pre><code class="language-c">int adc_chip_temperature_demo(void) { char temperature[8] = {0}; int temp; temp = adc_temp(); if (temp &lt; 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; }</code></pre> <p>主要是调用了sdk提供的<code>adc_temp()</code>函数直接获取采集转换结果。该函数源码可在sdk的<code>platform/driver/adc/wm_adc.c</code>文件中了解更底层实现过程。</p>

页面列表

ITEM_HTML