DSP的AD转换器.ppt
2023/7/5,山东大学控制学院 张东亮,1,第5章 DSP的A/D转换器,本章内容:5.1 F281x的A/D转换器的特点5.2 自动排序器原理5.3 自动排序模式5.4 ADC时钟定标5.5 ADC寄存器5.6 ADC的C语言编程实例,2023/7/5,山东大学控制学院 张东亮,2,5.1 F281x的A/D转换器的特点,TMS320C281x DSP 控制器是一种32位单片机(Microcontroller),即单片解决方案(Single Chip Solution),也是由CPU、存储器、接口等组成。,DSP控制器片内接口部件(也称片内外设)有数字I/O接口、模/数转换模块、事件管理器模块、各种通信模块(包括SCI串行通信接口、SPI串行外设接口、CAN控制器模块、多通道缓冲串口McBSP)等。,2023/7/5,山东大学控制学院 张东亮,3,281x DSP内部有一个12位模/数转换器ADC(Analog to Digital Converter),可有16路模拟输入信号,转换时间可以在80 ns以内。16个结果寄存器ADCRESULT015存储转换结果。,A/D转换器的特点,12位ADC模块,内含采样/保持电路。同时采样或顺序采样模式。模拟输入范围03V。25 MHz的ADC时钟频率,转换时间短。16通道,多路选通输入。可在一次采样中同时实现16路自动转换的自动排序。排序器可以作为两个独立的8通道排序器或一个16通道排序器(即级联模式)。16个结果寄存器存储转换结果,皆可独立寻址。,2023/7/5,山东大学控制学院 张东亮,4,多个触发源可以启动A/D转换。包括软件(S/W,Software)启动、事件管理器A/B(多个触发源)启动、外部引脚触发启动。灵活的中断控制,允许每个排序的结束(EOS,End of Sequence)或每两次EOS申请中断一次。排序器可以工作在启动/停止模式,允许多个时间排序的触发源同步转换。EVA、EVB触发源可以独立工作在双排序器模式。采样保持(S/H)获取时间窗有单独的预分频时钟。,2023/7/5,山东大学控制学院 张东亮,5,8 ADC Inputs,Control Peripherals,Fast&Flexible 12-bit 16-Channel ADC12.5 MSPS throughput(80ns pipeline conversion,200ns single conversion)Dual sample/hold enable simultaneous sampling or sequencing sampling modesAnalog input:0V to 3V16 channel,multiplexed inputsAuto Sequencer supports up to 16 conversions without CPU interventionSequencer can be operated as two independent 8-state sequencers or as one large 16-state sequencerSixteen result registers(individually addressable)to store conversion values,ResultRegisters16 words,AnalogMUX,Prescaler,S/H0,12-bitADCModule,8 ADC Inputs,AnalogMUX,S/H1,SYSCLK,Start of Conversion,Auto Sequencer,ADC,On-Chip 12-bit Analog-to-Digital Converter,2023/7/5,山东大学控制学院 张东亮,6,ADC模块原理框图,2023/7/5,山东大学控制学院 张东亮,7,ADC寄存器,ADC控制寄存器1:ADCTRL1。ADC控制寄存器2:ADCTRL2。ADC控制寄存器3:ADCTRL3。最大通道转换寄存器:ADCMAXCONV。自动排序状态寄存器:ADCASEQSR。ADC状态和标志寄存器:ADCST。ADC输入通道排序寄存器:ADCCHSELSEQ14。ADC转换结果缓冲寄存器:ADCRESULT015。,2023/7/5,山东大学控制学院 张东亮,8,5.2 自动排序器原理,自动排序器可以对模拟通道的转换顺序进行排序。ADC排序器由两个8状态排序器SEQ1和SEQ2组成,也可以级联成一个16状态排序器。这里的状态指排序器中自动转换的数量。排序器有两种工作模式:单排序器即级联模式,双排序器模式。单排序器可以有16个转换通道。双排序器模式为两个独立的8状态(或8通道)转换。,2023/7/5,山东大学控制学院 张东亮,9,单排序器(级联)模式的自动排序ADC框图,2023/7/5,山东大学控制学院 张东亮,10,2023/7/5,山东大学控制学院 张东亮,11,双排序器模式的自动排序的ADC框图,2023/7/5,山东大学控制学院 张东亮,12,2023/7/5,山东大学控制学院 张东亮,13,ADC单操作模式和级联操作模式比较,2023/7/5,山东大学控制学院 张东亮,14,5.3 自动排序模式,不间断的自动排序模式(Uninterrupt Autosequenced Mode)即连续转换模式,在该模式下SEQ1/SEQ2能在一次排序过程中,对多达8个转换通道进行自动排序。,例,采用SEQ1的双排序模式下的转换。设在SEQ1中有7路转换,即 ADCINA2和ADCINA3各两次,ADCINA6、ADCINA7和ADCINB4各1次。则 ADCCHSELSEQ1:0 x3232 ADCCHSELSEQ2:0 x0C76MAXCONV1:6,1.不间断的自动排序模式,2023/7/5,山东大学控制学院 张东亮,15,ADCCHSELSEQn各寄存器数值,2023/7/5,山东大学控制学院 张东亮,16,事件管理器触发排序转换的例子,2.排序器的启动/停止模式,例,排序器的启动/停止操作。要求触发1(定时器下溢)到来时,开始3个自动转换(I1,I2,I3)。触发2(定时器周期匹配)到来时,开始另外3个自动转换(V1,V2,V3)。触发事件1、2在时间上相差25微秒。,2023/7/5,山东大学控制学院 张东亮,17,ADC输入通道选择控制寄存器ADCCHSELSEQn设置,2023/7/5,山东大学控制学院 张东亮,18,ADC结果寄存器,2023/7/5,山东大学控制学院 张东亮,19,3.同时采样模式,ADC有同时采样两路ADCINxx输入的能力,前提为一路输入是ADCINA0ADCINA7,另一路输入是ADCINB0 ADCINB7,而且两路输入的偏移量是对应的,例如ADCINA0 和ADCINB0。,2023/7/5,山东大学控制学院 张东亮,20,4.输入触发描述,不同排序器下的不同触发源,2023/7/5,山东大学控制学院 张东亮,21,排序转换中的中断操作模式,5.排序器转换中的中断操作,有三种情况,两种中断模式。,第一种情况:两次采样的采样数不一样。模式l中断操作(即每次EOS都产生中断)。,第二种情况:两次采样的采样数一样。模式2中断操作(即每2次EOS产生1个中断)。,第三种情况:两次采样的采样数一样(虚读)。模式2中断操作(即每2次EOS产生1个中断)。,2023/7/5,山东大学控制学院 张东亮,22,ADC内核时钟和采样保持时钟,通往ADC的时钟链,5.4 ADC时钟定标,2023/7/5,山东大学控制学院 张东亮,23,5.5 ADC寄存器,ADC控制寄存器1:ADCTRL1。ADC控制寄存器2:ADCTRL2。ADC控制寄存器3:ADCTRL3。ADC最大通道转换寄存器:ADCMAXCONV。自动排序状态寄存器:ADCASEQSR。ADC状态和标志寄存器:ADCST。ADC输入通道排序寄存器:ADCCHSELSEQ14。ADC转换结果缓冲寄存器:ADCRESULT015。,2023/7/5,山东大学控制学院 张东亮,24,ADC控制寄存器1:ADCTRL1,位14 RESET:模数转换模块软件复位位。位1312 SUSMOD1SUSMOD0:仿真悬挂模式。位118 ACQ_PS3ACQ_PS0:采样时间窗宽度位。位7 CPS:内核时钟预分频器。位6 CONT RUN:连续运行位。位5 SEQ OVRD:排序器超越模式位。位4 SEQ CASC:级联排序器工作模式位。,2023/7/5,山东大学控制学院 张东亮,25,ADC控制寄存器2:ADCTRL2,位15 EVB SOC SEQ:级联排序器模式下EVB SOC使能位位14 RST SEQ1:复位排序器1位。位13 SOC SEQ1:开始转换SOC触发排序器1。位11 INT ENA SEQ1:排序器SEQ1的中断使能位。位10 INT MOD SEQ1:排序器SEQ1的中断模式控制位。位8 EVA SOC SEQ1:EVA对SEQ1产生SOC信号的屏蔽位。,2023/7/5,山东大学控制学院 张东亮,26,位7 EXT SOC SEQ1:外部信号启动SEQ1转换位。位6 RST SEQ2:复位排序器2。位5 SOC SEQ2:启动SEQ2转换位。位3 INT ENA SEQ2:SEQ2的中断使能控制位。位2 INT MOD SEQ2:SEQ2的中断模式控制位。位0 EVB SOC SEQ2:EVB对SEQ2产生SOC信号的屏蔽位。,2023/7/5,山东大学控制学院 张东亮,27,ADC控制寄存器3:ADCTRL3,位76 ADCBGRFDN1、ADCBGRFDN0:模数转换内部带隙(Bandgap)和参考电压源电路的电源上电。这两位控制ADC内部参考电压源电路的上电与断电。位5 ADCPWDN:模数转换模块掉电控制位。位0 SMODE_SEL:采样模式选择位。,2023/7/5,山东大学控制学院 张东亮,28,位41 ADCCLKPS30:内核时钟分频器。,ADC时钟分频情况,2023/7/5,山东大学控制学院 张东亮,29,最大通道转换寄存器:ADCMAXCONV,位60 MAX CONVn:定义一次自动转换最多可以转换的通道个数。一次转换的个数为MAX CONVn+1。,2023/7/5,山东大学控制学院 张东亮,30,自动排序状态寄存器:ADCASSR,位118 SEQ CNTR30:排序计数器状态位。在转换排序开始时,SEQ CNTR30初始化为MAX CONV中的值。在一个自动转换排序的每一个转换之后,排序器的计数器减1。位60 是排序器SEQ2和SEQ1的指针。作为TI测试用。,2023/7/5,山东大学控制学院 张东亮,31,ADC状态和标志寄存器:ADCST,位7 EOS BUF2:SEQ2的排序缓冲器结束位。位6 EOS BUF1:SEQ1的排序缓冲器结束位。位5 INT SEQ2 CLR:SEQ2中断清零位。位4 INT SEQ1 CLR:SEQ1中断清零位。位3 SEQ2 BSY:SEQ2忙状态位。位2 SEQ1 BSY:SEQ1忙状态位。位1 INT SEQ2:SEQ2中断标志位。位0 INT SEQ1:SEQ1中断标志位。,2023/7/5,山东大学控制学院 张东亮,32,ADC输入通道排序寄存器:ADCCHSELSEQ14,每4位的CONVnn选择16路模拟输入通道中的一个作为自动排序的转换通道。,2023/7/5,山东大学控制学院 张东亮,33,ADC转换结果缓冲寄存器:ADCRESULT015,寄存器ADCRESULTn中12位转换结果是左对齐的,即存放在16位寄存器的高12位。,2023/7/5,山东大学控制学院 张东亮,34,5.6 ADC的C语言编程实例,例,A/D转换程序。采用双排序器和顺序采样模式,排序器SEQ1对两个模拟输入通道ADCINA0和ADCINA1的电压信号进行自动转换。排序器采用事件管理器EVA(T1)的下溢中断标志作为触发启动信号。使用ADC模块的中断方式,每次排序结束(EOS)都产生中断。在中断服务程序中,读取模拟量的转换结果并存储到两个长度为1024的数组Voltage1和Voltage2中。,2023/7/5,山东大学控制学院 张东亮,35,#include“DSP281x_Device.h”/DSP281x 寄存器头文件interrupt void adc_isr(void);/ADC中断函数声明/Global variables used in this example 全局变量定义 Uint16 ConversionCount;/转换次数计数 Uint16 Voltage11024;/模拟输入ADCINA0的电压转换结果存储数组 Uint16 Voltage21024;/模拟输入ADCINA1的电压转换结果存储数组 main()InitSysCtrl();/初始化PLL,WD,外设时钟 DINT;/关中断 InitPieCtrl();/初始化pie寄存器 IER=0 x0000;/禁止所有的中断 IFR=0 x0000;InitPieVectTable();/初始化pie中断向量表 EALLOW;/使能中断向量表写入,2023/7/5,山东大学控制学院 张东亮,36,PieVectTable.ADCINT=/ADCINA1 as 2nd SEQ1,2023/7/5,山东大学控制学院 张东亮,37,AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;/Enable EVASOC to start SEQ1 AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;/Enable SEQ1 interrupt(every EOS)/Configure EVA/Assumes EVA Clock is already enabled in InitSysCtrl();EvaRegs.T1CMPR=0 x0080;/Setup T1 compare value EvaRegs.T1PR=0 x10;/Setup period register EvaRegs.GPTCONA.bit.T1TOADC=1;/Enable EVASOC in EVA EvaRegs.T1CON.all=0 x1042;/Enable T1 compare(upcount mode)/Wait for ADC interrupt while(1)1;interrupt void adc_isr(void)Voltage1ConversionCount=AdcRegs.ADCRESULT0 4;Voltage2ConversionCount=AdcRegs.ADCRESULT1 4;/If 40 conversions have been logged,start over,2023/7/5,山东大学控制学院 张东亮,38,if(ConversionCount=1023)ConversionCount=0;else ConversionCount+;/Reinitialize for next ADC sequence AdcRegs.ADCTRL2.bit.RST_SEQ1=1;/Reset SEQ1 AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;/Clear INT SEQ1 bit=PIEACK_GROUP1;/Acknowledge interrupt to PIE return;,2023/7/5,山东大学控制学院 张东亮,39,思考题与习题,简述 281x DSP的AD转换器的特点。简述281x自动排序器的原理。281x ADC的时钟是如何确定的?281x A/D转换器有哪些寄存器?如何使用?编程采用双排序器和顺序采样模式,排序器SEQ1对两个模拟输入通道ADCINA5和ADCINA6的电压信号进行自动转换。排序器采用事件管理器EVA(T1)的周期匹配中断标志作为触发启动信号,T1定时50s。使用ADC模块的中断方式,每次排序结束(EOS)都产生中断。在中断服务程序中,读取模拟量的转换结果并存储到两个长度为200的数组Voltage1和Voltage2中。设CPU时钟频率为150MHz。,