DSP芯片TMS320F2812之ADC模块的说明及使用步骤

重要前提:DSP芯片最为重要的功能是能够高效完成复杂数字信号处理!切记不要将DSP芯片与MCU和FPGA混为一谈,它与两者之间都存在交集功能,但不能完全等同。具体关系可以参考其他博主的博客:

硬件小白名词解释DSP、MCU、FPGA、IC、CPU、MPU、ROM、RAM

众所周知,ADC模块是进行数字信号处理的重要前提。只有将模拟信号合理正确地采集为数字信号才能进行复杂的处理,最终得到达到要求的信号。TMS320F2812的ADC是一个12位的单转换器,但是有16个输入通道,意味着每一路通道必须有序地进入转换器进行转换,所以ADC模块的配置就是有序规则的制定。

TMS320F2812之ADC模块:

一、ADC模块功能框图

在这里插入图片描述
红色方框:ADC输入通道
橙色方框:采样/保持的采价时间窗口(可以理解为信号处理中对模拟信号每次进行采样时,开关闭合的时间)
黄色方框:12位ADC转换内核
绿色方框:结果寄存器(很好理解,每次转换过后的结果都会有序地存放于此)
蓝色方框:两个可以级联的排序器

二、基本名词解释:

1、排序器:AC模块拥有2个排序器,每个排序器拥有可以8个寄存器,每个寄存器内存放的数据可以理解为某个或两个输入通道的映射。所谓排序,就是哪个寄存器在前面,它所映射的输入通道就会先进行AD采样和转化,后面的将依次进行。
2、级联:级联的意思是将两个排序器合并为一个排序器,排序器1在前,排序器2在后,那么所表示的顺序就可以是0-15,一样,谁在前谁先进行AD采样和转换。
3、双排模式:两个排序器独立工作,但切记并非同时工作,先进行排序器1中寄存器存储数据所映射的输入通道的采样和转换,转换完成后再进行排序器2的操作。
4、单排(级联)模式:两个排序器级联为一个排序器,就没有先后可言,可以看做一个拥有16个寄存器的大排序器。
5、顺序采样模式:意味着排序器中每个寄存器内存放的数据只能映射一个输入通道,要么是A,要么是B。
6、同步采样模式:意味着排序器中每个寄存器内存放的数据映射两个输入通道,且一个是A,一个是B。
注意:那么ADC模块就会有四种工作模式:
(1)双排顺序采样
(2)双排同步采样
(3)单排顺序采样
(4)单排同步采样

三、ADC寄存器详细介绍

(1).ADCTRL1(16bits)
   ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
  |Reserved  |RESST     |SUMOD1    |SUMOD0    |ACQ PS3   |ACQ PS2   |ACQ PS1   |ACQ PS0   |CSP       |CONT RUN  |SEQ1 OVRD |SEQ CASC  |Reserved  |Reserved  |Reserved  |Reserved  |
   ===============================================================================================================================================================================
14:   ADC模块复位
11-8:  ADC模块采样/保持时间配置(可以理解为信号处理中对模拟信号每次进行采样时,开关闭合的时间)
7:    ADC时钟配置位:12分频;
                    0时不分频.
6:    ADC连续采样配置位:1时连续采样模式;当排序计数器递减为0时,在下一次采样之前,排序计数器会重装载最大转换通道寄存器中的值,进行又一次序列采样;
                        0时非连续采样模式;即只单独采样一次序列排序,一次序列采样结束后,会关闭ADC模块.
5.     ADC顺序覆盖功能寄存器:1时排序器中的值可以重复;
                            0时排序器中值不可以重复;
4:    排序器模式选择配置位:1时单排序器模式(级联模式)
                           0时双排序器模式
(2).ADCTRL2(16bits)
   ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
  |EVBSOC SEQ|RST SEQ1  |SOC SEQ1  |Reserved  |NTENA SEQ1|NTMOD SEQ1|Reserved  |EVASOCSEQ1|EXTSOCSEQ1|RST SEQ2  |SOC SEQ2  |Reserved  |NTENA SEQ2|NTMOD SEQ2|Reserved  |EVBSOCSEQ2| 
   ===============================================================================================================================================================================	
14:   排序器1复位控制位
13:   排序器1软件开启位
6:    排序器2复位控制位
5:    排序器2软件开启位
(3).ADCTRL3(16bits)	 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
	|Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |ADCBGRFDN1|ADCBGRFDN0|ADCPWDN   |ADCCLKPS[3:0]                              |SMODE_SEL |
     ===============================================================================================================================================================================
7-6:  ADC模块供电管理
5:    ADC模块上电开启位
补:7-5:一般如下配置:111:ADC上电
                     110:ADC掉电
                     000:ADC关闭
4-1:  ADC模块时钟分频位
0:    采样模式配置位:1时同步采样模式
                     0时顺序采样模式  
(4).ADCMAXCONV(16bits)	 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
    |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |MAXCONV2_2|MAXCONV2_1|MAXCONV2_0|MAXCONV1_3|MAXCONV1_2|MAXCONV1_1|MAXCONV1_0|   
     ===============================================================================================================================================================================	
6-4:  排序器2最大采样次序
3-0:  在双排模式下,2-0为排序器1最大采样次序;
       在单排(级联)模式下,3-0为整个单排的最大采样次序.
(5).ADCASEQSR(16bits)	 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
    |Reserved  |Reserved  |Reserved  |Reserved  |SEQ CNTR3 |SEQ CNTR2 |SEQ CNTR1 |SEQ CNTR0 |Reserved  |SEQ2STATE2|SEQ2STATE1|SEQ2STATE0|SEQ1STATE3|SEQ1STATE2|SEQ1STATE1|SEQ1STATE0|    
     ===============================================================================================================================================================================
11-8: 排序器计数器
7-4:  排序器2状态位
3-0:  排序器1状态位
(6).ADCST(16bits)	 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
    |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |Reserved  |EOS BUF2  |EOS BUF1  |INSEQ2CLR |INSEQ1CLR |SEQ2 BSY  |SEQ1 BSY  |INT SEQ2  |INT SEQ1  |             
     ===============================================================================================================================================================================	
(7).ADCCHSELSEQ1(16bits)	 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
    |CONV03                                     |CONV02                                     |CONV01                                     |CONV00                                     |     
     ===============================================================================================================================================================================
在顺序采样模式下,每4位的最高位来判断A端还是B端(0为A端,1为B端),低3位为管脚号;
在同步采样模式下,每4位的最高位将会变成无效位,低3位为A和B管脚号.
(8).ADCCHSELSEQ2(16bits)	 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
    |CONV07                                     |CONV06                                     |CONV05                                     |CONV04                                     |       
     ===============================================================================================================================================================================	
在顺序采样模式下,每4位的最高位来判断A端还是B端(0为A端,1为B端),低3位为管脚号;
在同步采样模式下,每4位的最高位将会变成无效位,低3位为A和B管脚号.
(9).ADCCHSELSEQ3(16bits)	 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
    |CONV11                                     |CONV10                                     |CONV09                                     |CONV08                                     |               
     ===============================================================================================================================================================================		 
在顺序采样模式下,每4位的最高位来判断A端还是B端(0为A端,1为B端),低3位为管脚号;
在同步采样模式下,每4位的最高位将会变成无效位,低3位为A和B管脚号.
(10).ADCCHSELSEQ4(16bits) 
	 ====15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
    |CONV15                                     |CONV14                                     |CONV13                                     |CONV12                                     |                
   ===============================================================================================================================================================================	
在顺序采样模式下,每4位的最高位来判断A端还是B端(0为A端,1为B端),低3位为管脚号;
在同步采样模式下,每4位的最高位将会变成无效位,低3位为A和B管脚号.
(11).ADCRESULTn(16bits)	 
   ===15====|====14====|====13====|====12====|====11====|====10====|====09====|====08====|====07====|====06====|====05====|====04====|====03====|====02====|====01====|====00====
  |D11      |D10       |D9        |D8        |D7        |D6        |D5        |D4        |D3        |D2        |D1        |D0        |Reserved  |Reserved  |Reserved  |Reserved  |                                                                    
   ===============================================================================================================================================================================
共有16个结果寄存器,注意读取结果时,必须右移4.

   

四、ADC模块配置步骤(TI公司喜欢定义位域结构体)C语言结构体中的冒号用法

步骤一:ADC模块供电管理

   /*ADC供电管理相关寄存器配置,值固相对固定(均省去官方延时操作,实际操作中需加上)*/
	AdcRegs.ADCTRL1.bit.RESET = 1;
	AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;
	AdcRegs.ADCTRL3.bit.ADCPWDN = 1;

步骤二:ADC模块时钟配置

    /*ADC模块时钟配置*/
	AdcRegs.ADCTRL1.bit.CPS = VALUE1;
	AdcRegs.ADCTRL3.bit.ADCCLKPS = VALUE2;	

步骤三:.ADC模块采样/保持时间配置:

    /*ADC模块采样频率配置*/
	AdcRegs.ADCTRL1.bit.ACQ_PS = VALUE3;

步骤四:ADC采样模式配置:

    /*ADC采样模式配置*/
	AdcRegs.ADCTRL1.bit.SEQ_CASC = VALUE4;//单排还是双排
	AdcRegs.ADCTRL3.bit.SMODE_SEL = VALUE5;//顺序还是同步
	AdcRegs.ADCTRL1.bit.CONT_RUN = VALUE6; //连续还是非连续

步骤五:ADC采样通道配置:

    /*ADC采样通道配置*/
	AdcRegs.ADCMAXCONV.all = VALUE7;//排序器次序
	AdcRegs.ADCTRL1.bit.SEQ_OVRD = VALUE8;//排序器可覆盖还是不可覆盖
	//排序器1配置(根据实际情况进行配置)
	//例如AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;     //先A0,后B0
		
	//排序器2配置
	//例如AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x1;      //先A1,后B1

步骤六:ADC模块开启配置:

AdcRegs.ADCTRL2.all = VALUE9;//用相应的方法开启排序器

以上均是关于ADC模块的基础配置,必须根据实际工程来考虑和判断相应的配置问题,是查询法读值还是中断读值,是软件开启还是中断开启,都需要考虑大局。

五、总结

DSP芯片确实可以给我们带来诸多数字信号处理的运算,但现如今的处境也是十分尴尬的,在高端嵌入式系统中,为了充分高效地利用资源,往往不会去使用DSP芯片中相对过剩的控制单元;至于DSP芯片的核心部分,也可以用FPGA 来实现,所以高端嵌入式系统中往往会采取SOC和FPGA的架构,并不会舍弃其中一种去使用DSP。
但是不可否认的是,高性能DSP芯片在某些领域完全可以取代复杂多核心板卡,只需要一个DSP芯片既可以完成复杂的数字信号处理也可以进行实时控制,从而实现TI引以为傲的低功耗。

发布了2 篇原创文章 · 获赞 5 · 访问量 126

猜你喜欢

转载自blog.csdn.net/deer_center/article/details/103308365