打印
[PIC®/AVR®/dsPIC®产品]

【CuriosityNano测评报告】12.ADC实验

[复制链接]
801|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hu9jj|  楼主 | 2021-4-28 15:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创#

    用了几天时间来做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日历模块的读取。


使用特权

评论回复
沙发
hu9jj|  楼主 | 2021-4-28 21:14 | 只看该作者
经过分析和测试证实,之前转换数值变化很大且超过4095的原因是没有将左对齐的选项去掉,将这个选项勾去掉之后,数据就正常了。

使用特权

评论回复
板凳
hu9jj|  楼主 | 2021-4-29 06:26 | 只看该作者
    测试返回的数值远大于4095的真正原因找到了,数据左对齐固然是原因之一,但另一个重要原因是差模转换中的积累设置,我设置为4试验,得到的最大数值为16380,正好是4095的4倍。由此证明系统只累计,不会转换成平均数。

使用特权

评论回复
地板
hu9jj|  楼主 | 2021-4-29 20:13 | 只看该作者
测试中还发现一个原因,当选择了差模转换时,测得的结果是累积数而不是我之前以为的平均数,例如当我设置累积为4个结果时,测得的最大值为16380,实际上就是4095*4。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:Microchip
简介:让我们来为您提供帮助。我们可提供各种资源来帮助您解决一切问题。是否需要与我们的客户支持团队联系?您可以通过电话、在线聊天功能或电子邮件与他们联系。

144

主题

1031

帖子

11

粉丝