TMS320F28xx ADC转换图解
ADC模块框图ADC Module Block Diagram
说明:
- 左上角为ADC的核心模块,实现AD转换功能。
- 左下角为参考电压选择模块
- 右上角为模数封装逻辑。
其中:
- 核心部分为采样保持电路(S/H Circuit)和AD转换器。
- 有16路启动转换(SOC)
- 4路后处理模块(PPB)
- 4路中断模块
信号模式
28002x只支持单端信号模式。
转换结果与参考电压之间的关系为:
启动转换(start-of-conversions,SOC)
说明:
- 最多有16路SOC用于启动转换;
- 每一路SOC需要配置3个信号:采样通道、采样持续时间、触发源;
- 多路SOC同时满足条件时,交给SOC仲裁和控制模块;
触发源可以是:
- 软件触发:ADCSOCFRC1.SOC0
- ADC中断触发:ADCINT1和ADCINT2
- 其他触发源(CPU定时器和PWM事件):具体如下。
触发源:
ADC转换优先级
Round Robin优先级
当同时设置多个 SOC 标志时,两种优先级形式中的一种决定了它们转换的顺序。 默认优先级方法是循环法。 在这个方案中,没有一个 SOC 具有比另一个更高的固有优先级。 优先级取决于循环指针(RRPOINTER)。 ADCSOCPRIORITYCTL 寄存器中反映的RRPOINTER 指向最后转换的SOC。 最高优先级的 SOC 被赋予下一个大于 RRPOINTER 值的值,在 SOC15 之后返回到 SOC0。 复位时该值为 16,因为 0 表示已发生转换。 当 RRPOINTER 等于 16 时,最高优先级被赋予 SOC0。 当 ADCCTL1.RESET 位置位或写入 SOCPRICTL 寄存器时,RRPOINTER 由器件复位复位。
A |
复位后,SOC0 为最高优先级 SOC ; SOC7 收到触发信号; SOC7 配置的通道立即转换。 |
B |
RRPOINTER 更改为指向 SOC 7; SOC8 现在是最高优先级的 SOC。 |
C |
SOC2 & SOC12 同时收到触发信号 ; SOC12 是循环轮上的第一个; SOC12 配置的通道在转换的同时 SOC2 保持待定。 |
D |
RRPOINTER 更改为指向 SOC 12; SOC2 配置的通道现已转换。 |
E |
RRPOINTER 更改为指向 SOC 2; SOC3 现在是最高优先级 SOC 。 |
高优先级SOC
ADCSOCPRIORITYCTL 寄存器中的 SOCPRIORITY 字段可用于将高优先级从单个 SOC 分配给所有 SOC。 当配置为高优先级时,SOC 将在任何当前转换完成后中断循环轮并作为下一个转换插入。 转换完成后,循环轮将在中断的地方继续运行。 如果同时触发两个高优先级 SOC,则编号较低的 SOC 将优先。
高优先级模式首先分配给 SOC0,然后按数字递增的顺序分配。 SOCPRIORITY 字段中写入的值定义了第一个不是高优先级的 SOC。 换句话说,如果将值 4 写入 SOCPRIORITY,则 SOC0、SOC1、SOC2 和 SOC3 被定义为高优先级,其中 SOC0 最高。
其中:
- RRPOINTER指示了当前轮盘处理的SOC编号。(0x10为初始状态,表示还未开始SOC转换,下一个最高优先级为SOC0)。
- SOCPRIORITY表示第一个不是高优先级的SOC。比如,值为4则表示SOC0~SOC3为高优先级,SOC4~SOC15是RR优先级。
- 当高优先级的SOC满足条件时,会中断当前的RR优先级的SOC,处理高优先级的SOC,处理完成后再返回之前的RR优先级。
- 如果同时有多个高优先级的SOC,则编号最小的优先处理。
下图 给出了使用高优先级 SOC 的示例。
A |
复位后,SOC4 在循环轮上为第 1 位; SOC7 收到触发信号; SOC7 配置的通道立即转换。 |
B |
RRPOINTER 更改为指向 SOC 7; SOC8 现在在循环轮上排名第一。 |
C |
SOC2 & SOC12 同时收到触发信号 ; SOC2 中断循环轮, SOC 2 配置的通道被转换,而 SOC 12 保持挂起。 |
D |
RRPOINTER 一直指向 7; SOC12 配置的通道现已转换。 |
E |
RRPOINTER 更改为指向 SOC 12; SOC13 现在在循环轮上排名第一。 |
突发模式(Burst Mode)
突发模式允许单个触发器一次遍历一个或多个循环 SOC。 设置 ADCBURSTCTL 寄存器中的位 BURSTEN 将 ADC 包装器配置为突发模式。 这会导致 TRIGSEL 字段被忽略,但仅适用于为循环操作(非高优先级)配置的 SOC。
所有循环 SOC 均基于 ADCBURSTCTL 寄存器中的 BURSTTRIG 字段而不是 TRIGSEL 字段触发。 收到突发触发后,ADC 包装器不会设置所有要转换的循环 SOC,而只会设置 (ADCBURSTCTL.BURSTSIZE + 1) SOC。 要设置的第一个 SOC 将是基于循环指针的具有最高优先级的 SOC,并且将设置后续 SOC,直到设置了 BURSTSIZE SOC。
其中:
- BURSTEN:是否使能BURST转换
- BURSTSIZE:当BUUST触发时,一次连续转换N+1个SOC。第一个SOC是从RRPOINTER开始。
- BURSTTRIGSEL:BURST转换的触发源,包括CPU定时器、PWM等。
示例:
A |
复位后,循环轮上的SOC4为1; 收到 BURSTRIG 触发; SOC4 & SOC5 设置和配置通道立即转换。 |
B |
RRPOINTER 更改为指向 SOC5; SOC6 现在在循环轮上为 1。 |
C |
BURSTTRIG & SOC1 触发 rcvd。 同时; 设置SOC1、SOC6、SOC7; SOC1 中断循环轮和 SOC1 配置的通道被转换,而 SOC6 和 SOC7 保持挂起。 |
D |
RRPOINTER 一直指向 5; SOC6/SOC7 配置的通道现已转换。 |
E |
RRPOINTER 更改为指向 SOC7; SOC8 现在在循环轮上为 1,等待 BURSTTRIG。 |
ADC转换结束产生中断
说明:
每一个ADC模块有4个可配置的中断。可以选择从16个SOC的EOC标志来触发。
参考文档:
https://www.ti.com.cn/cn/lit/pdf/spruin7
TMS320F28002x Microcontrollers Technical Reference Manual (Rev. A) (英文內容)
Chapter 15
Analog-to-Digital Converter (ADC)
TMS320F28xx ADC转换图解相关推荐
- AVR系列之ADC转换
八月的最后一天 待到现在才开始写总结 显得有点慢了 嘿 这完全是因为早上上了两节课后 便去图书管找几本书 又待到了吃午饭时间 然后一直拖到现在 汗 可真多理由呢 找打 汗 还是说多废话了 就整理一下关 ...
- zigbee cc2530 adc转换
cc2530的通用datasheet上没怎么讲到adc的一些特性, http://download.csdn.net/detail/songqqnew/5132088 而是下面这个文档有较多讲解 ww ...
- STM32 ADC转换实验
摘自:STM32 ADC转换实验 作者:追兮兮 发布时间: 2020-10-29 09:42:24 网址:https://blog.csdn.net/weixin_44234294/article/d ...
- rsa 模数 指数转换 c语言_模数转换,你必须知道的8个经典ADC转换电路方案
模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件.通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号.由于数字信号本身不具有实际意义,仅仅表示一个相对大 ...
- 分享一个stm8s003单片机的ADC转换,附加一个冒泡算法(用于减少误差)
1.先上脚位图,不要问我为什么是stm8f103,stm8f103和stm8s003只有内存的不同. 2.上代码,选用PC4(AIN2)为ADC转换引脚,只提供函数,自己选择调用,不追求精度的话可以不 ...
- NTC热敏电阻温度采集与adc转换
前言: ntc热敏电阻的R值是10k,B值是3950 使用的是STM32F103RCT6的ADC 文章目录 1.电路理论 2. NTC热敏电阻阻值与温度之间的转换 3.NTC热敏电阻温度采集与adc转 ...
- 模数转换,你必须知道的8个经典ADC转换电路方案
模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件.通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号.由于数字信号本身不具有实际意义,仅仅表示一个相对大 ...
- ADC 转换:神舟IV实验
STM32手册中写的很详细:单次转换/连续转换,规则通道/注入通道,扫描模式.很多设置,但是比TIM简单多了感觉.... 双ADC模式还没有看 正点原子的例程网址,给出 http://openedv. ...
- 关于ADC转换设计中的基本问题(82问)
1.如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同步问题? ADC之前的信号调理,最根本的原则就是信号调理引起的噪声和误差要在ADC的1个LSB之内.根据这个原则,可以选择指标合适的 ...
最新文章
- 洛谷 1195 口袋的天空
- 【目标检测】Fast RCNN算法详解
- 明星+本土化,vivo国际化的两大开路先锋
- linux通过I2C地址查看设备名称
- 从框架源码中学习结构型设计模式
- mysql truncate partition_实战mysql分区(PARTITION)
- 《那些年啊,那些事——一个程序员的奋斗史》——107
- 三网物联卡的优缺点有哪些
- 第二次冲刺-个人工作总结05
- Shell脚本中使用awk进行空格分词
- doc,excel,ppt转存pdf并预览
- 计算机网络技术该考什么证,计算机网络工程师证书
- 2022-2028年中国网络直播行业商业模式创新与投资机会深度研究报告
- Impala集群搭建报错,主节点启动成功,但是worker节点的impalad启动失败
- 数独题 HDU - 1426
- 阿里云 Linux云服务器登陆方式(Windows远程登录工具XShell,基于ssh建立会话)
- matlab 创建批量文件夹_如何在Mac上为照片加水印?水印照片怎样批量处理?
- tomcat开启远程调试功能
- iOS 自定义导航栏 NavigationBar
- 【年终盘点之二】2020 区块链创新项目里程碑事件
热门文章
- Windows程序设计--画几何图形
- 第十一章 文件上传应用协议
- 将计算机引入课堂热潮 英语一,浅谈小学英语课堂的计算机辅助教学论文
- manjaro软件源报错 不停看到错误 PackageName: signature from User email@archlinux.org is invalid 的几种解决方法...
- HTML小项目之双色球
- 数据库SQL语言学习--上级练习1(数据查询)
- 微信小程序 - 判断一个经纬度是否在一个多边形区域内
- 面向客户体验的高斯智能服务系统:全方位的智能化辅助提升客户体验 | 百万人学AI评选
- 双臂协作机器人或是机器人管家的雏形,那他还在等什么?
- 优达学城(Udacity)_评估指标mini project