TMS320F2812之ADC模块的说明及使用步骤
[复制链接]
众所周知,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寄存器详细介绍
Copyright 2019 Deer_kernel.All rights reserved.
(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时钟配置位:1时2分频;
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;//用相应的方法开启排序器
1
以上均是关于ADC模块的基础配置,必须根据实际工程来考虑和判断相应的配置问题,是查询法读值还是中断读值,是软件开启还是中断开启,都需要考虑大局。
五、总结
DSP芯片确实可以给我们带来诸多数字信号处理的运算,但往往不会单片使用;在高端嵌入式系统中,为了充分高效地利用资源,往往不会去使用DSP芯片中相对过剩的控制单元;至于DSP芯片的核心部分,也可以用FPGA 来实现,所以高端嵌入式SOC中一般包含了特定架构的DSP。
但是不可否认的是,高性能DSP单片在某些领域完全可以取代复杂多核心板卡,只需要一个DSP芯片既可以完成复杂的数字信号处理也可以进行简单的实时控制。
|