1 代码流程
- 使用mhal_adc_open初始化一个gpio为ADC
- 使用mhal_adc_read读取信息
- 每个系列的模组返回的数据可能不同,需要分别做各自的转换算法,详见本文第2节
2 各模组情况
2.1 汇总
No | 芯片 | 编译命令 | submodules | 测试数据 | |
---|---|---|---|---|---|
submodule | commit id | ||||
1 | TG7100C | mdev不支持对此芯片执行-f 操作,需要使用其他软件烧录固件mdev build hal/adc/ emc3020 |
mxos | c2e3d9bb8dbc94778f7cb0dc991efce18e33b05b | ![]() |
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以及串联电阻之间的数值
使用裸模组测试,开发板可能会将模组引脚连到其他地方
测试固件
以下五个固件可用于EMC3020和EMC3029
adc.chan0.all.zip
adc.chan1.all.zip
adc.chan2.all.zip
adc.chan4.all.zip
adc.chan10.all.zip