1 代码流程

  1. 使用mhal_adc_open初始化一个gpio为ADC
  2. 使用mhal_adc_read读取信息
  3. 每个系列的模组返回的数据可能不同,需要分别做各自的转换算法,详见本文第2节

2 各模组情况

2.1 汇总

No 芯片 编译命令 submodules 测试数据
submodule commit id
1 TG7100C mdev不支持对此芯片执行-f操作,需要使用其他软件烧录固件
mdev build hal/adc/ emc3020
mxos c2e3d9bb8dbc94778f7cb0dc991efce18e33b05b 1664343008845_E2B8478D-7030-4fa7-8AE4-C1508D5107BC.png

2.2 TG7100C系列模组

  • mhal_adc_read的返回值
    mhal_adc_read的返回值是0~4095,0就是0V,4095是3.3V
  • 注意事项
    • 只测了EMC3020和EMC3029两个模组,看起来都是线性的,但只有各一个模组,多模组间的一致性还是有风险的
    • 测试的时候用裸模组,如果模组在开发板上的话,引脚会被拉高或者拉低,测量会不准。

3 测试数据

mdev-ADC功能测试 - 20220928133409.xlsx

3.1 2022年9月28日测试EMC3020和EMC3029

测试思路

已知正常的ADC测量值与电压是线性关系
所以将3.3V分压取几个关键点测量可以基本证实ADC通道的可用性
用几个等额电阻串联,得到3.3V的几个1/8测量即可
综上,测试方法仅证明ADC通道的可用性,ADC通道的精度、一致性等其他纬度仍需做详细测试

测试方法

分别使用ADC通道测量电路中的3V3、GND以及串联电阻之间的数值
image.png
使用裸模组测试,开发板可能会将模组引脚连到其他地方
IMG_20220928_111743.jpgIMG_20220928_111826.jpg

测试固件

以下五个固件可用于EMC3020和EMC3029
adc.chan0.all.zip
adc.chan1.all.zip
adc.chan2.all.zip
adc.chan4.all.zip
adc.chan10.all.zip

测试结果

mdev-ADC功能测试 - 20220928133409.xlsx