跟老王一起学习如何使用MicroPython读取ADC数值

发布于 2019-08-31 21:18:32

今天有用户反馈搭载RT-Thread的601开发板在MicroPython下无法正常使用ADC功能,我实测后确实无法使用,下面请各位同学跟随我一起进行调试分析,看看到底是哪里出了问题。

相关的源码文件为:

RT-Thread_W60X_SDK\drivers\drv_adc.c
RT-Thread_W60X_SDK\rt-thread\components\drivers\misc\adc.c
RT-Thread_W60X_SDK\examples\15_component_micropython\packages\micropython-v1.10.1\port\modules\machine\machine_adc.c

通过浏览这3个文件,我们可以分析出ADC代码依赖以下几个宏定义

BSP_USING_ADC
USING_ADC_CH(1~8)
MICROPYTHON_USING_MACHINE_ADC

使用env工具,输入menuconfig,开启硬件ADC和8通道:

image.png

image.png

查找MicroPython中的相关硬件配置是否有ADC模块
image.png

并没有找到,因此我们只能先通过手动修改 rtconfig.h ,添加如下信息:
image.png

此时重新编译运行,发现依然报错
image.png

通过分析下面代码可知,需要注册的是adc(x)这样形式的 rt_adc_device
image.png

我们顺藤摸瓜,查找到drv_adc.c中的驱动注册信息为 wm_adc,此格式并不符合上述要求
image.png

因此需要调整为下方格式:
image.png

再次重新编译并烧录运行,输出就正常了
image.png

好了,搞定啦~

1 条评论

发布
问题