第十章 宝马1768——ADC
开发环境:集成开发环境μVision4 IDE版本4.60.0.0 主机系统:Microsoft Windows XP 开发平台:旺宝NXP LPC1768开发板
10.1 TIME定时器 10.2 硬件描述 10.3 程序说明 10.4 实验现象
1、LPC1768_ADC:LPC1768包含一个ADC模块,12位逐次逼近式模数转换器,由8个引脚复用为模拟输入引脚,200KHz的12位转换频率,测量范围是0~VREFP(通常为3V,不超过VDDA),可选择有输入跳变或者定时器触发等方式启动转换。A/D转换器的基本时钟是由APB时钟提供。A/D转换器包含一个可编程的分频器,它可以讲APB时钟调整为主次逼近转换所需的时钟(最大可达13MHz)。并且,完全满足精度要求的转换需要65个这样的时钟。 2、硬件描述:该例程用到的硬件主要是ADC,其次是辅助硬件串口和LCD屏,主要用作数据的显示。如果使用串口0,则需要把JP6和JP7拔掉。 3、程序说明:首先看主程序,主程序中首先是对LCD和UART0的初始化,如果你没有用到LCD显示或者串口的显示,在主函数中可以注释有关代码,然后是ADC的初始化。在while()中,首先连续采集了8次ADC数据,然后对得到的数据进行处理,转换成要显示的数据。 接下来看ADC的初始化,程序如下图所示: 从程序当中可以看到首先是对IO口进行设置,将IO配置成模拟输入。 然后是对时钟的使能,在功率控制寄存器PCONP中的第12位置1。 对ADC的控制器寄存器进行配置,选择通道,分频,以及使能ADC。 接下来就是对ADC的值的采集, 首先是启动AD转换,对控制寄存器的26:24三个位写0,即是停止转换,写001是立即启动转换。启动转换之后,读取ADGDR寄存器的31位,判断数据转换是否结束,数据转换结束之后,读取其12位的AD值,最后停止转换,完成一次ADC的数据采集。A/D 全局数据寄存器ADGDR包含最近一次A/D 转换的结果,还包含转换过程中出现的状态标志的复件。 有两种方法可以读取 ADC 的转换结果。一种就是利用A/D 全局数据寄存器来读取ADC的全部数据,另一种是读取A/D通道数据寄存器。固定使用一种方法非常关键,否则DONE 和OVERRUN 标志在AD0GDR 和A/D 通道数据寄存器之间就不会同步,还可能会引起错误中断或DMA 操作。 也可以通过读取ADDR0~ADDR7寄存器中对应的通道的值,来获得对应通道的ADC采集值, ADC数据转换结束之后,也是会产生中断的,需要对ADINTEN寄存器中,先使能对应通道的中断。 4、实验现象:如果使用的是串口作为显示,则是下面的实验现象,使用USB线接在USB1接口上,拔掉JP6和JP7,查看枚举出来的COM口,设置串口调试助手波特率是115200。注意要插上JP10,转动可调电阻VR1。实验现象如下图: 如果使用3.2寸屏,则显示如下:
|