本帖最后由 hu9jj 于 2020-5-24 17:22 编辑
今天继续测试ADC,选择是的官方V1.30版压缩包中的ADC_DMA_polling例程,这个例程是从此贴2楼下载获得的,链接:http://www.mm32mcu.com/download.aspx?cid=2564,
其中有多个ADC例程,我选择的是下图的例程:
在这个例程中,是通过开通DMA,重复读取指定通道的20组数据,然后求平均值,再将新取得的数据的30%加上之前数据的70%作为新的转换值,所以又称为“二阶滤波”。
这个例程的原始代码比较粗糙,没有输出任何结果,甚至于主体文件中代码还有错误(详见下载帖子2楼的评论)。我添加了UART串口通讯及LED的相关文件,每个循环结束之后,除了将结果通过串口发送外,四个LED灯还流水闪烁一遍。
我分别测试了通道1、通道4和通道5,均取得了正解的转换结果,调整对应的RV,数值跟随变化。但测试通道10(片内温度)和通道11(内部基准电压)却没有成功,得到的数值为0,由于时间有限,我暂时没有去深究。
原始例程是启用通道0(即PA0),而我们目前的评测板上PA0未连接电位器。
下面分别是三个通道通过串口传送的数据:
这里测试通过后的项目压缩包:
ADC_DMA_polling.rar
(2.72 MB)
通过本次测试,我对mm32的ADC转换有了进一步了解,也初步掌握了开通DMA的步骤。
|