TMS320LF2407模数转换模块几种触发源的应用
介绍TMS320LF2407模数转换模块及几种触发器,讨论了如何使用不同的启动信号触发该模块来实现模数转换,以及在软件上的实现方法。
关键词:模数转换模块;触发源;数字信号处理器 1工作原理
TMS320LF240x DSP是TI公司的新一代产品,采用哈佛结构,3.3V供电,4级流水线作业,40MIPS的执行速度,指令周期为25ns;32K字的片内FLASH程序存储器,2.5K字的片内RAM,片内集成了2个事件管理模块EVA和EVB,具有16通道10位AD转换器、CAN、SPI、SCI通信模块等多种片内设备,几乎不用外接外设。并且该模块支持多种触发方式。
模数转换(ADC)模块包括2个8状态排序器(SEQ1和SEQ2),这两个排序器也可级联成一个16状态排序器(SEQ)。在这2种工作方式下,ADC模块能对任一转换序列(转换通道次序)进行排序转换;16个通道均可通过模拟输入通道的多路选择器来选择。转换结束后,所选通道的数字量保存在相应的结果寄存器(RESULTn)中,即第1个结果保存在RESULT0中,依此类推。也可对同一通道“过采样”。注意,DSP只有一个A/D转换器,在双排序模式下,该转换器被2个排序器(SEQ1和SEQ2)共享。
一个转换排序中的转换通道个数受MAXCONV寄存器中的某些位控制(详见ADC最大转换通道寄存器MAXCONV),它的值在转换开始时被自动装载到自动排序状态寄存器(AUTO-SEQ-SR)的排序计数器状态域(SEQCNTR3~0)中。MAXCONV域有一个0~15的值,对应转换通道个数(双排序模式下为0~7)。当排序器从状态CONV00开始依次进行时,SEQCNTRn从装载值开始向下计数,直到SEQCNTRn为0,一次自动排序中完成的转换数为MAXCONVn+1。?
TMS320LF2407中与模数转换模块(ADC)有关的寄存器在模数转换过程中起着重要作用。ADC模块中共有25个寄存器。限于篇幅,此处只简单介绍几个重要寄存器的相关位。
(1)ADC控制寄存器ADCTRL1
D12:SEQ1忙状态位。0:SEQ1处于空闲状态;1:SEQ1处于忙状态,一个转换序列正在进行。
D7:外部信号对SEQ1的启动转换位。1:允许一个来自ADCSOC引脚上的信号启动ADC自动转换序列;0:不起作用。
D5:SEQ2的转换启动A/D内部SOC触发器信号,可由多种触发源触发(见下文表1)。
(3)ADC最大转换通道寄存器MAXCONV
级联模式下:D3~D0:SEQ的转换通道个数。
(4)ADC输入通道选择排序控制寄存器CHSELSEQ1~CHSELSEQ4(只介绍CHSELSEQl,其余类似)
(5)ADC转换结果缓冲寄存器RESULT0~RESULT15?
每一个排序器都有一组能够被使能或禁止的触发源,见表1。
由软件向ADCTRL2的位13或位5写1可立即启动片内A/D;在双排序工作模式下位13启动SEQ1,位5启动SEQ2;在级联工作模式下位13启动SEQ,此时,SEQ2的触发信号被忽略。
例如,在级联工作模式下,软件启动SEQ:
3.2事件管理器EVA触发
在EVA中有多个A/D触发源,如定时器上溢、下溢、周期中断和比较中断事件。
事件管理模块EVA有2个通用定时器1和2,其分别包括以下主要模块:
①一个16位定时器比较寄存器TXCMPR(x=(1、2);②一个定时器周期寄存器TXPR(x=1、2);③一个16位定时器控制寄存器TXCON(x=1、2);④全局控制寄存器GPTCONA/B,对不同的定时器事件指定定时器采取的动作;⑤一个16位增/减计数器TXCNT(x=1、2)。
通用定时器的输出模块有启动ADC的功能。
下面以全局控制寄存器GPTCONA(对应定时器1和2)为例,简要介绍一下怎样用定时器启动ADC。
全局控制寄存器GPTCONA:
10:设置周期中断标志启动ADC;即当定时器的计数器值与周期寄存器的值相同时,产生周期事件,如相应的中断使能,置相应的中断标志,启动ADC;
11:设置比较中断标志启动ADC;即当定时器的计数器值与比较寄存器的值相同时,产生比较事件,如相应的中断使能,置相应的中断标志,启动ADC。
D8~7:T1TOADC,与T2TOADC类似。
3.3事件管理器EVB触发
在EVB中有多个事件源,与EVA类似。
3.4外部电平触发
在XINT2/ADCSOC引脚出现电平跳变时,触发外部中断XINT2,同时也触发A/D转换。
引脚XINT2/ADCSOC作为A/D转换的触发源,通过设置外部中断2控制寄存器XINT2CR的位2来选择上升沿(位2=1)或下降沿(=0)产生中断触发ADC。
下面是一段ADSOC启动ADC的部分程序,利用XINT2引脚上升沿产生中断,在中断服务子程序中判断A/D是否转换结束,从而读取数据。
?
(1)启动模数转换之前,要复位ADC;
(2)在XINT2中断程序中,要清除XINT2中断标志,否则只能执行一次中断服务程序。
|