不同于F2833x,F2803x的ADC有其自己的特点,例如其采样序列不是基于排序器的,所以有必要对其进行单独解析。

目录

一、ADC 概览

1.1 特点

1.2 ADC框图

二、SOC 操作原则

2.1 SOC 框图

2.2 ADC采集(采样和保持)窗口

2.3 触发操作

2.4 通道选择

三、ONESHOT 单次转换支持

四、ADC 转换优先级

五、同步采样模式 Simultaneous Sampling Mode

六、EOC 和中断操作

七、ADC 上电顺序

八、ADC 校准

8.1 零偏校准

8.2 全量程增益校准和偏置电流校准

8.3 内部参考电压选择

8.4 外部参考电压选择


一、ADC 概览

1.1 特点

2803x 的 ADC 模块是12位循环 ADC。 部分 SAR,部分流水线。其核心是一个12 位的转换器,和两个采样保持器,可同时或顺序采样。

通过多路复用后有最多16 个模拟转换输入通道。

转换器可以配置为与内部带隙基准一起运行,以创建基于真实电压的转换,或者与一对外部电压基准(VREFHI / VREFLO)一起运行,以创建基于比率的转换。

ADC 模块的功能包括:

  • 具有内置双采样保持(S / H)的 12 位 ADC 内核

  • 同时采样或顺序采样模式

  • 全范围模拟输入:0 V 至 3.3 V ,或 VREFHI / VREFLO 比例

  • 多达 16 个通道,多路复用输入

  • 16个启动转换器(SOC),可单独设置触发源,采样窗口和采样通道

  • 16 个存放转换值的结果寄存器(单独寻址)

  • 多个触发源:
    —— S/W - 软件触发
    —— ePWM 1-7 触发
    —— GPIO XINT2 触发
    —— CPU 定时器 0/1/2 触发
    —— ADCINT 1/2 触发

  • 9 个灵活的 PIE 中断,可在任何转换后配置中断请求

1.2 ADC框图

二、SOC 操作原则

2.1 SOC 框图

此 ADC 不是基于排序器进行转换的,而是基于 SOC 进行转换的。SOC 设置单个通道转换单个信号的配置。

SOC可独立配置:开始转换的触发源,转换通道,采样窗口。每个 SOC 是独立配置的,可以配置成触发源、通道和采样窗口大小的任意组合。多个 SOC 可以根据需求配置成同一触发源、通道和/或采集窗口。

触发源通过 ADCSOCxCTL[TRIGSEL] 和 ADCINTSOCSEL1 或 ADCINTSOCSEL2 寄存器中的相应位组合来进行配置。

还可以通过 ADCSOCFRC1 寄存器通过软件强制执行SOC事件。

通过 ADCSOCxCTL 寄存器的 CHSEL 位 和 ACQPS 位可以配置通道和采样窗口大小

比如,要配置当 ePWM3 定时器达到其周期匹配时触发在通道 ADCINA1 上的单次转换,必须首先设置 ePWM3 以在周期匹配时输出SOCA或SOCB信号。

在这种情况下,我们将使用SOCA。 然后,使用其 ADCSOCxCTL 寄存器设置 SOC 之一。无论选择哪个 SOC 都没有影响,我们选择 SOC0。

ADC允许的最快采样窗口为7个周期。7个周期就是此ADC能达到的最快的采样窗口了,将ACQPS 字段设置为 6,则实际窗口就是7个。

为转换的通道选择 ADCINA1 通道,为SOC0 触发器选择 ePWM3,我们分别将 ACQPS 字段设置为 6,将 CHSEL 字段设置为 1,将 TRIGSEL 字段设置为 9。

写入寄存器的结果值为:

ADCSOC0CTL = 4846h; // (ACQPS=6, CHSEL=1, TRIGSEL=9)

这样配置时,将在ePWM3 SOCA事件中启动ADCINA1的单次转换,并将结果值存储在ADCRESULT0寄存器中。

相反,如果ADCINA1需要3倍的过采样,则可以为SOC1,SOC2和SOC3赋予与SOC0相同的配置。

3倍过采样,就把同样几个SOC设置成一样的,然后顺序采集同一个通道,然后结果按顺序存放的结果寄存器中。

ADCSOC1CTL = 4846h;
ADCSOC2CTL = 4846h;
ADCSOC3CTL = 4846h;
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=1, TRIGSEL=9)

如此配置后,将在ePWM3 SOCA事件中串行启动ADCINA1的四次转换,并将结果值存储在ADCRESULT0 – ADCRESULT3寄存器中。

另一个应用程序可能需要从同一触发器中采样3个不同的信号。 这可以通过简单地更改 SOC0-SOC2 的 CHSEL 字段而使 TRIGSEL 字段保持不变来完成。

ADCSOC0CTL = 4846h;
ADCSOC1CTL = 4886h;
ADCSOC2CTL = 48C6h;
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=2, TRIGSEL=9)
// (ACQPS=6, CHSEL=3, TRIGSEL=9)

通过这种方式配置后,将在ePWM3 SOCA事件中串行启动三个转换。 通道ADCINA1上的转换结果将显示在ADCRESULT0中。 通道ADCINA2上的转换结果将显示在ADCRESULT1中。 通道ADCINA3上的转换结果将显示在ADCRESULT2中。

SOC采样哪个通道,由谁触发并不会影响其采样结果保存在哪里,因为结果寄存器与SOC是一一对应的。

即SOC0通道的采样结果,永远存放在ADCRESULT0,以此类推。

2.2 ADC采集(采样和保持)窗口

外部驱动器在快速有效地驱动模拟信号方面的能力各不相同。 一些电路需要更长的时间才能正确地将电荷转移到ADC的采样电容器中。 为了解决这个问题,ADC支持控制每个单独的SOC配置的采样窗口长度。 每个 ADCSOCxCTL 寄存器都有一个 6 位字段 ACQPS用于确定采样和保持(S / H)窗口的大小。 写入该字段的值比该SOC的采样窗口所需的周期数少一个。 因此,该字段中的值15将给出16个时钟周期的采样时间。 允许的最小采样周期数为7(ACQPS = 6) 通过将采样窗口大小与ADC的转换时间(13个ADC时钟)相加,可以得出总采样时间。 下面的中显示了各种采样时间的示例。

2.3 触发操作

每个 SOC 都可以配置为从许多输入触发器之一启动。分别通过三个寄存器控制:

SOC的触发源是三个选项的或逻辑:

1、由ADCSOCxCTL控制来选择触发源

2、由ADCSOCFRC1设置由软件触发

3、由ADCINTSOCSELx设置的由ADC本身的中断再重新触发ADC采样,这种模式可以实现连续不停采样循环。

如果需要,可为同一通道配置多个 SOC。

  • ADC开始转换控制寄存器 【ADCSOCxCTL,x为0~15】:

  • ADC中断重新触发SOC选择1寄存器【ADCINTSOCSEL1】:

ADC中断触发SOC选择2寄存器【ADCINTSOCSEL2】:其描述与上面一样,但其控制的是 SOC8 到 SOC15.

  • ADC软件中断触发选择寄存器【ADCSOCFRC】

向对应的位写1,即为使能软件启动转换,当优先级轮询环到达此SOC时,自动启动转换。

2.4 通道选择

可以将每个 SOC 配置为转换任何可用的 ADCIN 输入通道。将 SOC 配置为顺序采样模式时,ADCSOCxCTL 寄存器的四位 CHSEL 字段定义要转换的通道。 将 SOC 配置为同时采样模式时,CHSEL字段的最高有效位将被丢弃,而较低的三位将确定要转换的通道对。

ADCINA0与VREFHI共享一个输入端口,因此在使用外部基准电压模式时,不能将其用作模拟量输入源。

ADCSOCxCTL[CHSEL]:

三、ONESHOT 单次转换支持

此模式将允许在轮询组中仅对下一个触发的 SOC 执行一次转换。 ONESHOT 模式仅对轮询组中存在的通道有效。

如果采样通道没在轮询调度序列中,则其采样仍按照ADCSOCPRIORITYCTL 寄存器中 SOCPRIORITY 字段的内容设定的优先级进行采样。

ONESHOT 模式对顺序模式和同时模式的影响将在下面说明。

顺序采样模式:仅允许在 RR 模式下的下一个优先级最高的 SOC激活; 其他 SOC的触发器将被忽略。

同步采样模式:在这种情况下, 在下一个优先级最高的SOC被触发后,RR的指针降增加2,这是因为同步采样模式将对SOCx和SOCx + 1进行采样,SOCx + 1永远不会被用户触发。则下一次,RR指针会跳到SOCx+2。

注意:由于上述原因,ONESHOT = 1 且 SOCPRIORITY = 10h 不是有效的组合。 在任何情况下,这都不应该是用户期望的操作模式。 上面的限制是下一个SOC必须最终被触发,否则ADC将不会为其他乱序触发生成新的SOC。

SOC 优先级控制寄存器【SOCPRICTL】:

四、ADC 转换优先级

当同时设置多个 SOC 标志时,具有两种优先级排列方式。

默认优先级方法是罗宾环(Round Robin)。 在此方案中,没有SOC具有固有的更高优先级。 优先级取决于循环指针(RRPOINTER)。 反映在 SOCPRICTL寄存器中的 RRPOINTER 指向最后转换的SOC。 最高优先级 SOC 被赋予大于 RRPOINTER 值的下一个值,并在 SOC15 之后回绕到 SOC0。

复位时RRPOINTER 的值为16,因为 0 表示已经发生转换。 当 RRPOINTER 等于16 时,最高优先级被赋予 SOC0。 当 ADCCTL1.RESET 位置 1 或写 SOCPRICTL 寄存器时,RRPOINTER 通过器件复位复位。

第一种模式:罗宾环优先级例子

第二种模式:设定某些SOC具有较高优先级

SOCPRICTL 寄存器中的 SOCPRIORITY 字段可用于将某一个或几个通道设置为高优先级模式。这些高优先级的SOC可以打断轮询环,待高优先级SOC处理完后
再从刚才打断的地方恢复轮询环的操作。

如果高优先级的SOC不只一个,那SOCx的x越小,优先级越高。

五、同步采样模式 Simultaneous Sampling Mode

在某些应用中,保持两个信号采样之间的延迟最小是很重要的。 ADC 包含双采样/保持电路,以允许同时采样两个不同的通道。 通过 ADCSAMPLEMODE 寄存器为一对 SOCx 配置了同步采样模式。 偶数号的 SOCx 和随后的奇数号的 SOCx(如 SOC0 和 SOC1)通过一个使能位(SOC0 和 SOC1 为SIMULEN0)耦合在一起。 耦合行为如下:

  • SOCx 的任何一个触发器都将启动一对转换。
  • 转换的通道对将由与触发的 SOCx 的 CHSEL 字段的值相对应的 A 通道和 B 通道组成。 该模式下的有效值为 0 - 7。
  • 两个通道将同时采样。
  • A 通道将始终首先转换,因为转换器只有一个。
  • 偶数 EOCx 脉冲将基于 A 通道转换生成,奇数 EOCx 脉冲将基于B通道转换生成。 
  • A 通道转换的结果放在偶数 ADCRESULTx 寄存器中,而 B 通道转换的结果写到奇数 ADCRESULTx 寄存器中。

比如,如果 ADCSAMPLEMODE.SIMULEN0 位置 1,并且SOC0的配置如下:

  • CHSEL = 2 (ADCINA2/ADCINB2 pair)
  • TRIGSEL = 5 (ADCTRIG5 = ePWM1.ADCSOCA)

当 ePWM1 发出 ADCSOCA 触发信号时,将同时采样 ADCINA2 和 ADCINB2。 之后,将立即转换 ADCINA2 通道,并将其值存储在 ADCRESULT0 寄存器中。通过 ADCCTL1.INTPULSEPOS 可设置当 ADCINA2 的转换开始时刻或完成时刻,发出 EOC0 脉冲

然后,继续转换 ADCINB2 通道并将其值存储在 ADCRESULT1 寄存器中。 通过 ADCCTL1.INTPULSEPOS 设置,当 ADCINB2 的转换开始时刻或完成时刻,发生 EOC1 脉冲

通常,推荐使用偶数SOCx的触发源来同时触发两个通道即可,当然也可以设置为使用奇数SOCx的触发源,或奇数偶数SOC的触发源同时使用,但要注意,可能会出现转换结果被覆盖的情况。

顺序采样模式的时序示例 / Late Interrupt Pulse :

顺序采样模式的时序示例 / Early Interrupt Pulse

同步采样模式的时序示例 / Late Interrupt Pulse :

六、EOC 和中断操作

就像有 16 个独立的 SOCx 配置集一样,EOCx 脉冲也有 16 个。

在顺序采样模式下,EOCx 直接与 SOCx 相关联。 在同时采样模式下,偶数号和随后的奇数号的 EOCx 对与偶数号和随后的奇数号的 SOCx 对相关联。 根据 ADCCTL1.INTPULSEPOS 的设置,EOCx 脉冲将在转换开始或结束时发生。

ADC 包含 9 个可标记为 和/或 的中断传递到PIE。 这些中断中的每一个可以配置为接受任何可用的 EOCx 信号作为其信号中断源。 可操作 INTSELxNy 寄存器中完成了以 EOCx 作为中断源的配置。 此外,可以将 ADCINT1 和 ADCINT2 信号配置为生成 SOCx 触发信号。 这有利于创建连续的转化流。

七、ADC 上电顺序

ADC 复位后是关闭状态。在对 ADC 的任何寄存器进行写操作前,必须将 ADCENCLK.PCKCR0 置位,使能时钟。

ADC 的启动顺序为:

  1. 如果使用外部参考源,需操作 ADCCTL1 寄存器的 ADCREFSEL 位进行使能
  2. 在ADCCTL1寄存器(5-7 位 ADCPWDN, ADCBGPWD, ADCREFPWD)中启动参考源、带隙和模拟电路。
  3. 通过设置 ADCCTL1.ADCENABLE 使能ADC。
  4. 在首次转换之前,需要延时 1 ms

关断ADC电源时,可以同时清除步骤 2 中的所有三个位。 ADC 功率电平必须通过软件进行控制,并且与设备功率模式的状态无关。

八、ADC 校准

在制造和测试过程中,德州仪器(TI)会校准几个内部振荡器设置来校准 ADC。 这些设置作为名为 Device_cal() 的 C 调用函数的一部分嵌入到 TI 保留的 OTP 存储器中。 在boot ROM 引导启动过程中调用此函数会将工厂设置写入其各自的活动寄存器中,在此之前,ADC和内部振荡器将不遵守其指定参数。

如果在仿真过程中跳过了启动过程,则用户必须确保将调整设置写入各自的寄存器,以确保ADC和内部振荡器满足数据手册中的规格。 可以通过手动调用此函数或在应用程序本身中调用此函数,也可以通过 CCS 直接写入来完成。 为目标 MCU 创建适当的 .ccxml 文件时,CCS 中将包含用于设备校准的 gel 函数。

8.1 零偏校准

零点偏移误差被定义为转换一个VREFLO电压时得到的结果。这个基本误差会影响ADC的所有转换,包括满刻度的增益和线性度指标,决定了转换器的直流精度。零点偏移误差可能是正的,或者是负的,正的意味着转换VREFLO时得到一个正的结果。负的意味着转换一个高于VREFLO的电压结果仍会是0。为了更正这种错误,两种误差的补码都会被写入ADCOFFTRIM寄存器。这个寄存器的值在AD转换结果保存到ADC结果寄存器之前会被用到。此操作被完全包含在ADC内核,所以结果的定时将不会受到影响,ADC能够保持全动态范围通过修改微调值。

调用Device_cal()把厂家校正的零点偏移写到ADCOFFTRIM寄存器,用户能够修改ADCOFFTRIM的值以减少环境造成偏移误差。这个可以通过设置ADCCTRL1的VREFLOCONV位实现,不需要任何一个ADC通道。

也可以手动对ADC进行重新校准,其步骤已写入自带函数AdcOffsetSelfCal()函数中。

8.2 全量程增益校准和偏置电流校准

调用Device_cal()。

8.3 内部参考电压选择

8.4 外部参考电压选择

F28033之ADC相关推荐

  1. F28033之ePWM

    一.F28033的ePWM与F28035的区别 F28033的ePWM模块为TYPE1型,F28035的ePWM模块为TYPE0型.TYPE1是兼容TYPE0的,并在此基础上有以下增强: 死区控制精度 ...

  2. 现代传感器的接口:中断驱动的ADC驱动程序

    现代传感器的接口:中断驱动的ADC驱动程序 Interfacing with modern sensors: Interrupt driven ADC drivers 研究了如何编写一个阻塞的模数转换 ...

  3. 与现代传感器的接口:轮询ADC驱动程序

    与现代传感器的接口:轮询ADC驱动程序 Interfacing with modern sensors: Polled ADC drivers 我们研究了在现代嵌入式应用程序中,开发人员应该如何创建一 ...

  4. ADC中宽带巴伦的使用

    大多数高速ADC使用差分输入结构. 这样会具有良好的共模噪声抑制,但是常常需要在ADC输入端将单端信号转换为差分信号. 这一转换过程,主要选择无源巴伦或变压器及有源放大器来实现. 虽然有很多高性能的组 ...

  5. k64 datasheet学习笔记35---Analog-to-Digital Converter (ADC)

    0.前言 本文主要介绍K64的ADC部分的特性,内部架构,信号描述及操作接口等 1.简介 1.1.ADC模块特性 线性逐次逼近算法,达16bit分辨率 达到4对差分和24个单端模拟量输入 输出模式 差 ...

  6. adc 接收cube_官方的stm32cube软件教程实例ADC操作代码(官方自带的,可以无视

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 官方的stm32cube软件教程实例ADC操作代码(官方自带的,可以无视),看不懂怎么用的可以等本贴吧更新图片教程,现在就是凑帖子数量,完成转职的,请谅解 ...

  7. adc采样的值跳动_嵌入式er必知:模数采样知多少(最全总结)

    [导读]  生活环境周围信号万万千,对于一个嵌入式er.我们利用技术去了解世界.改变世界.而一个产品要与外界物理环境打交道,一个至关重要的触角就是采样真实模拟世界的信号,翻译成芯片可理解的数字信号,进 ...

  8. 核磁共振影像数据处理-2-DWI实践:计算ADC (MD) map、Li‘s have a solution and plan.

    操作视频内容请移步Bilibili: https://space.bilibili.com/542601735 今日代码 dicom到nifti格式转换(afni) dcm2niix_afni -o ...

  9. adc参考电压是直流交流_无位置传感器无刷直流电机换相误差校正的新方法

    针对无位置传感器无刷直流电机运行时存在换相误差的问题,哈尔滨工程大学自动化学院的研究人员姚绪梁.林浩.鲁光旭.王景芳.赵继成,在2019年第22期<电工技术学报>上撰文,提出一种基于线电压 ...

最新文章

  1. python 奇偶链表
  2. 对单片机C语言的一些误用和总结
  3. 哈希表 HashTable对象 c#
  4. 深度学习(十七)基于改进Coarse-to-fine CNN网络的人脸特征点定位
  5. ASP.NET Core 基于SignalR实时通讯的前后端分离技术
  6. Spring boot 内部服务调用 (FeignClient)
  7. soar ddl审核规范_SQL Server审核功能– DDL事件审核示例
  8. 提供高速信号接口认证测试 GRL上海实验室成立
  9. 【dos命令--教程】批量修改文件后缀
  10. 工程测量学学习 详细
  11. android中截屏快捷键是什么,安卓手机怎么截屏?安卓手机截图快捷键功能图文详解...
  12. 自我觉察的心理测试软件,认识自己、洞察人心,心理咨询师专用的自我觉察方法...
  13. Html基本标签(斜体em、空格nbsp、段落p、标题h1、换行br、大于号gt、小于号lt、引号quot、版权符号copy、图片img、水平线hr)
  14. 11. 深度学习实践:实践方法论
  15. chromebook 笔记本 TrueNas 设置 wifi 连网
  16. ZYJ7型转辙设备安装调试工法
  17. 针对网站被劫持,我们应该如何处理
  18. fiilt1左耳连不上_FIIL T1完美解决真无线耳机的痛点:更快更稳更自由
  19. 《原则》瑞·达利欧 --(五万字手敲笔记)
  20. Python编写函数,计算某个员工的奖金发放额度,要求输入员工的营业额,输出对应的奖金总额

热门文章

  1. nodejs爬虫与python爬虫_爬虫知多少-(NodeJS 爬虫)
  2. mysql workbench批量导出导入sql文件
  3. Vmware虚拟机设置静态IP地址(windows)
  4. SQL入门之第九讲——DELETE删除语句
  5. Android 滴滴打车,打车软件客户端实现小车在地图上平滑移动的实现;基于高德地图V4.1.1+
  6. opengl曲面贴图
  7. 商品sku算法php,笛卡尔乘积-电商网站商品sku组合算法应用
  8. React学习打卡Day1
  9. 流水账——申请服务器
  10. 特征提取网络之Densnet