chuxuezhe 当前离线
金牌会员
第7章 模数转换(ADC)模块
7.1 模数转换(ADC)模块的特性
1.ADC模块的特性
(1)带有内部采样-保持电路10bit ADC模块
(2)375ns的转换时间。
(3)16个模拟输入通道,每8个通过一个8选1的模拟
多路转换开关。
(4)对16路模拟量进行“ 自动排序”。
(5)两个独立的8状态排序器 (SEQ1和SEQ2),可以独立工作在双排序器模式,或级联为16个状态排序 器模式(SEQ一级联模式)
(6)在给定的排序模式下,4个排序控制器决定通道
TOP
的转换顺序。
(7)16个存放结果的寄存器(RESULT0~RESULT15)
(8)有多个启动ADC转换的触发源如下:
软件立即启动
EVA事件管理器启动
EVB事件管理器启动 ADC 的SOC引脚启动
(9)EVA和EVB可分别独立地触发SEQ1和SEQ2(仅用于双排序器模式)
(10)有单独的预定标的采样/保持时间
2.ADC模块的寄存器
表7-1 (ADC)模块的寄存器
地址 寄存器 名称
70A0h ADCCTRL1 ADC控制寄存器1
70A1h ADCCTRL2 ADC控制寄存器2
70A2h MAXCONV 最大转换通道寄存器
70A3h CHSELSEQ1 通道选择排序控制寄存器1
70A4h CHSELSEQ2 通道选择排序控制寄存器2
70A5h CHSELSEQ3 通道选择排序控制寄存器3
70A6h CHSELSEQ4 通道选择排序控制寄存器4 70A7h AUTO_SEQ_SR 自动排序状态寄存器
一次自动排序中完成的转换数为MAXCONVn+1。
例 使用SEQ1的双排序模式中的A/D转换。
假设SEQ1要完成7个通道的转换(通道2、3、2、3、6
、7和12经过自动排序后转换),则MAXCONV1的值应
该设置为6,且CHSELSEQn寄存器的设置如下: 位15-12 位11-8 位7-4 位3-0
70A3h 3 2 3 2 CHSELSEQ1
70A4h x 12 7 6 CHSELSEQ2
70A5h x x x x CHSELSEQ3
70A6h x x x x CHSELSEQ4
不中断的自动排序流程图如下:
一旦转换启动(SOC)触发器被排序器收到后,转换立即开始。SOC触发器载入在SEQCNTRn位。CHSELSEQn寄存器指定的通道已预先决定的顺序进行转换。每个转换结束后,SEQCNTRn位自动减少1。当SEQCNTRn达到0时,将根据ADCTRL1寄存器的连续运行(CONT RUN)位 状态,发生以下事情:
(1)如果CONT RUN位置1,转换排序自动再次启动(SEQCNTRn重载MAXCONV1中的初始值,且SEQ1状态被置于CONV00)。
在这种情况下,必须确保在下一次转换排序之前读取
结果寄存器。
在ADC模块向结果寄存器写入数据而用户却想从结果寄存器读取数据时,ADC的仲裁逻辑确保结果寄存器不会崩溃。
(2)如果CONT RUN位没有被置位,则排序会停留在过去的状态(例如CONV06),并且SEQCNTRn继续保持0值。
因为每次SEQCNTRn位达到0时,中断标志会被置1。如果需要,用户可使用ADCTRL2寄存器的RSTSEQn位,在中断服务程序(ISR)中手动复位排序器,以便下一
次转换启动时,SEQCNTRn位可以重载MAXCONV1的初始值,且SEQ1状态被设置为CONV00。
这一特性在排序器的启动/停止操作中很有用,本例也可用于SEQ2的级联的16状态排序器SEQ。
7.2.3 排序器的启动/停止模式
除不中断的自动排序模式外,任何一个排序器都可工作在启动/停止模式,在此模式,可实现和多个转换/启动触发器时间上同步。这种模式和上例基本相同,但是排序器完成一个转换序列之后,可以在没有复位到初始状态CONV00情况下,被重触发。因此当一个转换排序结束后,排序器停留在当前的转换状
态。
ADCTRL1寄存器的连续运行位必须设置为0(禁止)。
例 排序器的启动/停止操作
使用触发器1(下溢)启动3个自动转换(V1,V2,V3) 。
触发器1和触发器2时间间隔为25微妙,且由事件管理器A提供,如下图所示。本例只用了SEQ1。
注意:触发器1和2可以是事件管理器A(EVA)的转换启动(SOC)信号、外部引脚或软件。相同的触发器信号源要产生两次,以满足本实例双触发器的要求。
在这种情况下,MAX CONV1的值被设置为2,并且ADC模块的输入通道选择排序控制寄存器(CHSELSEQn)应置1。如表7-4所示。
表7-4
位15-12 位11-8 位7-4 位3-0
70A3h V3 I3 I2 I1 CHSELSEQ1
70A4h x x V2 V1 CHSELSEQ2
复位和初始化之后,SEQ1等待一个触发源信号。第一个触发源到来之后,执行通道选择值为CONV00(I1 )、CONV01(I2 )和CONV02(I3 )的3个转换,然后,SEQ1在当前状态等待另一个触发源信号。当第二个触发
源到来后25为微秒,ADC模块开始另外3个转换,通道选择值为CONV03(V1)、CONV04(V2)和CONV05(V3)。
在两种触发源的情况下,MAX CONV1的值被自动装入到SEQ CNTV1中。如果第二个触发源信号到来时,要求转换的数目和第一个触发源时不一样,则用户必须(在第二个触发源到来之前)通过软件改变MAX CONV1的值,否则重新使用当前的MAX CONV1的值(初始载入的),改变MAX CONV1的值可以在适当的时候由中 断服务程序(ISR)来完成。
在第2个自动转换完成店,ADC的结果寄存器的值如表7- 5所示。
表7-5 ADC的结果寄存器的值
缓冲寄存器 ADC的结果
RESULT0 I1
RESULT1 I2
RESULT2 I3
RESULT3 V1
RESULT4 V2
RESULT5 V3
RESULT6-RESULT15 X
完成第二个触发源转换后,SEQ1在当前状态等待另一个触发源到来。用户可以通过软件复位SEQ1到CONV00,并重复同样的触发源1、2转换操作。
7.2.4 输入触发器描述
每一排序器都有一组能被使能或禁止的触发源。
7.2.5 排序转换期间的中断操作
排序器可以在两种工作方式下产生中断。
7.3 ADC时钟预定标
适应输入信号的阻抗的变化
7.4 ADC校准
校准模式可以计算ADC模块的零、中值和最大值的偏置误差。该偏置误差的二进制补码被载入CALBRATIO