失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > DSP芯片TMS320F2812之ADC模块的说明及使用步骤

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

时间:2023-01-28 14:37:42

相关推荐

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寄存器详细介绍

Copyright 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;//用相应的方法开启排序器

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

五、总结

DSP芯片确实可以给我们带来诸多数字信号处理的运算,但往往不会单片使用;在高端嵌入式系统中,为了充分高效地利用资源,往往不会去使用DSP芯片中相对过剩的控制单元;至于DSP芯片的核心部分,也可以用FPGA 来实现,所以高端嵌入式SOC中一般包含了特定架构的DSP。

但是不可否认的是,高性能DSP单片在某些领域完全可以取代复杂多核心板卡,只需要一个DSP芯片既可以完成复杂的数字信号处理也可以进行简单的实时控制。

如果觉得《DSP芯片TMS320F2812之ADC模块的说明及使用步骤》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。