#申请原创#
用了几天时间来做ADC转换的实验,由于不熟悉,也没有找到可供参考的资料,所以走了一点弯路,但最终还是成功了。下面详细叙述本次实验的过程:
首先进入MCC进行代码配置,我选用PE3引脚作ADC的检测输入,下面是配置时的界面截图:
我的初始设置:
在选择“差模转换”时我开始选择了开启,并选择了“累积4个结果”(如上图),我的理解是系统会自动采集4次,然后返回平均值。但从实验过程看,开启了差模转换后,返回的数值跳动较大,返回的值甚至可以达到5位数(参见下面的动画,左上角的小数字就是ADC转换的值),而12位ADC转换的结果按理最大不会超过4095。
通过MCC配置并生成代码之后,我就在ADC0.c文件中查看如何使用这些函数,首先是ADC0_Initialize(),这个函数已经在MCC的初始化函数中调用了,我们可以不用管它,我们应在main函数开始时启用ADC0,如下图:
之后在主循环中获得ADC的转换数值:
在开始转换的函数中需要通道参数,为了获得这个参数,我又费了不少周折,包括查阅数据手册、网上搜索等,最后还是在MCC配置界面中找到PE3对应的ADC通道号:
如前所述,测试中ADC转换的数值跳动很大,有时竟然会有5位数,我反复测试不同的差模转换数值,累积2、4、8、16等参数都测试过,结果并不理想,最后关闭掉差模转换,返回的数值终于趋于正常,电压最高时固定在4095,电压低时初始有波动,但几秒之后便趋于稳定,如下图为低电压时实验照片:
这是电压最高时的实验照片:
至此,ADC实验室基本完成,但在测试时又出现了新问题:DS1307日历模块又读不出数据了,我将项目恢复到ADC实验之前的版本,能够正常使用DS1307,看来是ADC测试中的代码或设置影响到了DS1307日历模块的读取。
|