首页 理论教育 单端信号ADC转换例程

单端信号ADC转换例程

时间:2023-11-17 理论教育 版权反馈
【摘要】:①读者可以按上述硬件连接图进行,通过调节电位器来改变ADC的输入电压,从而得到不同的ADC转换值。图4-15单端-单输入信号的ADC转换结果从图4-15中可以看到,万用表实测的VDDC=3.27V,而ADC转换得到数字电压,通过换算后得到的电压值=3V,存在误差。图4-24最后的ADC值已过电压换算后的结果说明:电压换算语句经过上述修改后得出的3.3V模拟输入的ADC转换结果正确。

单端信号ADC转换例程

1)single_ended.c介绍。

978-7-111-51624-8-Chapter04-25.jpg

978-7-111-51624-8-Chapter04-26.jpg

978-7-111-51624-8-Chapter04-27.jpg

978-7-111-51624-8-Chapter04-28.jpg

2)在C:\ti\TivaWare_C_Series-2.0.1.11577\examples\peripherals\adc目录下,导入single_ended.c文件,然后按书中内容修改。

3)创建工程、编译等和上例相同,此处省略。

4)测试。

读者可以按上述硬件连接图进行,通过调节电位器来改变ADC的输入电压,从而得到不同的ADC转换值。如果读者觉得外接电位器比较麻烦,也可直接在EK-TM4C123GXL板上寻找几个已知的电压值,比如VDDC(万用表测得该点的电压为3.27V)和接地信号来测试程序的正确性。电压采集点如图4-14所示。

978-7-111-51624-8-Chapter04-29.jpg

图4-14 VDDC电压的采集接线图(用杜邦线将电压值送到AIN0)

②将编译生成的.out文件下载到LaunchPad板中,单击978-7-111-51624-8-Chapter04-30.jpg运行按钮,其测试结果如图4-15所示。

978-7-111-51624-8-Chapter04-31.jpg

图4-15 单端-单输入信号的ADC转换结果(AIN0=3Vor0v)

从图4-15中可以看到,万用表实测的VDDC=3.27V,而ADC转换得到数字电压,通过换算后得到的电压值=3V,存在误差。下面将进一步验证该误差是由显示控制台程序的显示格式(%d)所致,还是由ADC转换的精度不够所造成?

①在Expressions窗口添加ui32Vol_Value变量,并按下数据连续更新图标978-7-111-51624-8-Chapter04-32.jpg,如图4-16所示。

978-7-111-51624-8-Chapter04-33.jpg

图4-16 添加ui32Vol_Value变量

②在如图4-17所示处设置一个断点

978-7-111-51624-8-Chapter04-34.jpg

图4-17 设置断点

③连续单击程序运行按钮978-7-111-51624-8-Chapter04-35.jpg,直到Expressions窗口中变量ui32Vol_Value的值不再变化为止,如图4-18所示。

978-7-111-51624-8-Chapter04-36.jpg

图4-18 ADC的转换结果

从图4-18可以看到,ADC的转换结果=3V和前面在PuTTY中的显示结果一致,说明误差是由于TM4C123GH6PM的片载ADC转换器精度不够所致。

在读取某点数据值时,也可以不用按下连续更新图标978-7-111-51624-8-Chapter04-37.jpg,而采用通过设置断点属性获得。其步骤如下:

①右键单击所设断点,在弹出的下拉菜单中选择Breakpoint Properties选项。(www.xing528.com)

②单击Breakpoint Properties子菜单,在弹出的下拉菜单中将Action选项设置为Update View,如图4-19所示。

978-7-111-51624-8-Chapter04-38.jpg

图4-19 设置数据连续更新模式

讨论:从上面的介绍可以看出,并非是显示方式造成的误差,那只可能是ADC转换精度或转换程序存在问题。为了做出这个判断,最佳的办法是:观察ADC输出的数字量是否正确,其步骤如下:

①将pui32ADC0Value[0]添加到表达式窗口。

②添加一个观察pui32ADC0Value[0]值的断点,如图4-20所示。

978-7-111-51624-8-Chapter04-39.jpg

图4-20 在图示位置设置一个断点

③单击工具栏上的978-7-111-51624-8-Chapter04-40.jpg图标让程序运行到断点处并单步执行程序,此时在表达式窗口中观察到的pui32ADC0Value[0]值为4095(3.3V/12位的ADC输出为4096),说明ADC输出精度足够。那么产生上述ADC转换结果误差较大的原因是电压换算语句存在问题。即

978-7-111-51624-8-Chapter04-41.jpg

修改这条语句的步骤如下:

①添加浮点类型的变量adcResult,并使能FPULazy堆栈,如图4-21所示。

978-7-111-51624-8-Chapter04-42.jpg

图4-21 添加变量定义及使能FPULazy堆栈

②将电压换算语句修改为:

978-7-111-51624-8-Chapter04-43.jpg

③添加一个观察ADC转换结果的断点,如图4-22所示。

978-7-111-51624-8-Chapter04-44.jpg

图4-22 在图示位置设置观察ADC转换结果的断点

④将ADC转换结果adcResult添加到表达式窗口中,如图4-23所示。

978-7-111-51624-8-Chapter04-45.jpg

图4-23 将变量adcResult添加到表达式窗口中

⑤单击工具栏上的978-7-111-51624-8-Chapter04-46.jpg图标让程序运行到断点处并单步执行程序,此时在表达式窗口观察到的ADC转换结果如图4-24所示。

978-7-111-51624-8-Chapter04-47.jpg

图4-24 最后的ADC值已过电压换算后的结果

说明:电压换算语句经过上述修改后得出的3.3V模拟输入的ADC转换结果正确。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈