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 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供电管理相关寄存器配置,值固相对固定(均省去官方延时操作,实际操作中需加上)*/AdcRegs.ADCTRL1.bit.RESET = 1;AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;AdcRegs.ADCTRL3.bit.ADCPWDN = 1;
/*ADC模块时钟配置*/AdcRegs.ADCTRL1.bit.CPS = VALUE1;AdcRegs.ADCTRL3.bit.ADCCLKPS = VALUE2;
/*ADC模块采样频率配置*/AdcRegs.ADCTRL1.bit.ACQ_PS = VALUE3;
/*ADC采样模式配置*/AdcRegs.ADCTRL1.bit.SEQ_CASC = VALUE4;//单排还是双排AdcRegs.ADCTRL3.bit.SMODE_SEL = VALUE5;//顺序还是同步AdcRegs.ADCTRL1.bit.CONT_RUN = VALUE6; //连续还是非连续
/*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
AdcRegs.ADCTRL2.all = VALUE9;//用相应的方法开启排序器
以上均是关于ADC模块的基础配置,必须根据实际工程来考虑和判断相应的配置问题,是查询法读值还是中断读值,是软件开启还是中断开启,都需要考虑大局。
五、总结
DSP芯片确实可以给我们带来诸多数字信号处理的运算,但往往不会单片使用;在高端嵌入式系统中,为了充分高效地利用资源,往往不会去使用DSP芯片中相对过剩的控制单元;至于DSP芯片的核心部分,也可以用FPGA 来实现,所以高端嵌入式SOC中一般包含了特定架构的DSP。
但是不可否认的是,高性能DSP单片在某些领域完全可以取代复杂多核心板卡,只需要一个DSP芯片既可以完成复杂的数字信号处理也可以进行简单的实时控制。
DSP芯片TMS320F2812之ADC模块的说明及使用步骤相关推荐
- 【DSP】TMS320F28335的ADC模块
一.功能说明 12位内建采样保持的模数转换器 模拟输入电平:0~3V 16个转换通道 最快转换时钟频率12.5MHz(奈奎斯特定则,25MHz最高能采样12.5MHz的信号) 多触发源:软件.ePWM ...
- DSP芯片F2803x系列之PWM模块及高精度PWM使用
DSP芯片F2803x之ePWM模块 文章目录 1 ePWM模块概述 2 ePWM模块构成 3 ePWM各子模块 3.1 TB模块 3.2 CC模块 3.3 AQ模块 3.4 DB模块 3.5 PC模 ...
- 如何利用单片机的ADC模块(或者独立的ADC芯片)得到接入ADC管脚上的实际电压值?
这个问题,是第一次接触ADC时候,大家都会遇到的问题. 会读到什么值 单片机会读到什么值?需要看一个特性,就是几位的ADC,在手册上就会给出,例如,STM32的ADC是12位的.另外,还有8位,10位 ...
- DSP之TMS320F28335学习总结与笔记(二)————ADC模块
F28335 ADC模块 ADC转换模块 A/D转换器(ADC)将模拟量转换为数字量通常要经过四个步骤:采样.保持.量化和编码. 采样:将一个时间上连续变化的模拟量转化为时间上离散变化的模拟量. 保持 ...
- DSP CCS12.00 芯片:TMS320F28335 ADC 的运用
1.AD 转换的四个步骤 实现ad转换需要经过取样.保持.量化.编码四个步骤. 2.AD 的含义 AD 转换 就是把模拟信号转换成数字信号.主要包括积分型.逐次逼近型.并行比较型/串并行型.Σ-Δ调制 ...
- 独立DSP芯片兴衰史:FPGA吹响了丧钟
DSP可以追溯到数字时代的开端,甚至可能更早一些.如果说1946年第一台数字计算机ENIAC的建造标志着1946年数字时代的开始,那么DSP则在两年后出现. IEEE于1998年出版了一本名为< ...
- stm32 adc 连续和扫描_技术分享 | STM32多个ADC模块同时采样转换的应用示例
在STM32家族里,多数系列芯片内含2到3个ADC模块,有的甚至更多,比方G4系列可以有5个ADC模块.其中,通道数因不同的系列或型号多少不等,几个到几十个的都有.有时,我们可能需要多个ADC模块同时 ...
- DSP芯片CSL的使用
CCS V5中使用CSL库的方法 基于TMS320C6455讲解 前言: 芯片支持库(CSL)提供了一个用于配置和控制片上外设的C语言接口.它有各个分立的模块组成,并被编译成为库文件.每 ...
- FIR数字滤波器在DSP芯片C2000上的实现
FIR数字滤波器在DSP芯片C2000上的实现 文章目录 FIR数字滤波器在DSP芯片C2000上的实现 一.DSP是什么? 二.原始信号 三.配置Filter Designer 四.核心算法 五.结 ...
- DSP芯片在实时图像处理系统中的应用
<script language=javascript src="http://www.china-vision.net/technology/GetHits.asp?ArticleI ...
最新文章
- Java中JDK,JRE和JVM之间的关系
- Linux基本操作【作业】
- matlab simulink_简单五步实现 MATLAB/Simulink 锂电池建模
- 用JavaScript语言制作简易版轮播图
- arm-linux-gcc: No such file or directory
- myeclipse自带tomcat
- TCP压测工具 终极 全新版
- Inav Configurator给F4刷固件进入不了DFU
- 打印系统开发(5)——书脊
- 常用分析模型---5W2H分析模型
- 下列python语句的输出结果是_下列Python语句的输出结果是 __________ 。 print(数量%4d,单价%3.3f %(100,285.6)) (3.0分)_学小易找答案...
- 2014年终总结回顾与2015年工作总结
- RStudio打开后空白的解决
- 《智能制造时代的研发智慧:知识工程2.0》一第3章 隐性知识的显性化
- 一篇文章读懂《麦肯锡极简工作法》
- 一个简单的例子解释什么是量子计算机
- 五、vis 右键节点展开菜单
- 最新酒店订房小程序源码系统+前端+后端+完整搭建教程
- 详解 HTTPS、TLS、SSL、HTTP区别和关系
- 笔记本电脑电池显示4%可用(已接通电源),经过清灰又莫名奇妙的可以续航啦,很奇怪!