- 本课程为精品课,您可以登录eeworld继续观看:
- (8) - 模拟子系统 ADC DAC CMP SDFM(下)
- 登录
- 课程目录
- 相关资源
- 课程笔记
F2837X除了对ADC的采样机制优化外
还增加了ADC的后处理模块 对ADC采样结果处理
把它叫做PPB模块
此模块有四个功能
第一个是偏移校正功能
主要对ADC的结果寄存器的offset来矫正
第二个是误差矫正功能 可以将单端的ADC采样结果
变成带符号的正负值 并且把它输入到PPBresults寄存器
同时可以读取 然后就是过零点 上下线功能
这个功能是基于上一个误差矫正的功能
可以对这个值进行过零点的判断
进行上下线触发中断的功能
最后一个功能是延迟捕捉功能
主要是一个定时器来判断ADCSOC
从触发到转换是否有延迟 延迟时间多少
这页是这个功能的模块框图
大家看到 SOC的延迟捕捉功能
可以捕捉SOC的延迟时间 然后当SOC的结果寄存器
从这边输入 经过一个ADCPPBxOFFCAL
就会做一个误差矫正 再次把它存入ADC结果寄存器
然后进行单端双端的误差矫正功能
这个功能可以把这个值从无符号数变成有符号的值
也就是一个正负值 用于正负电流采样
然后它还可以输入到这模块 也就是门限比较模块 进行上下限幅
以及过零点的检测 主要是通过检测ADCPPB结果寄存器的符号的正负变换
来实现的
PPB模块可以通过寄存器事件来匹配
是否为零 还可以通过PIE触发一个中断
它的中断向量叫ADCEVTINT 它的事件
每一个PPB模块都会多一个ADCEVT1234
也就是一个ADC 模块 带有四个PPB模块
四个ADC模块 带有16个PPB模块
而每个PPB模块 都可以连接到任何一个ADC结果寄存器
这一页介绍ADC时钟
它从系统时钟分频而来
对于F28377 加入我们把系统时钟设置为200兆赫兹的输出
使能 ADC时钟计数器以后
就可以通过分频设置得到ADC的时钟
需要注意ADC时钟最大50兆赫兹
而SOC采样的大小由系统时钟计算
并不是ADC计算 这一点和转换时间 会不一样
这一页我们看ADC寄存器 分为ADC控制寄存器
CTL1和2
还有ADC的SOC控制寄存器 中断控制寄存器
以及中断控制设置寄存器 包括SOC的优先级设置寄存器
以及burstmode设置寄存器 最后还有ADC的偏移校正寄存器
和常规的ADC结果寄存器
我们先看设置寄存器 在CTL1中
它可以读取ADC当前是否忙碌
以及忙于哪个通道 并且可以启动或者停止ADC供电
以及ADC中断事件触发的设置
ADC的中断时间可以设置为 在SOC事件转换完成后
或者结果寄存器所存前的一个周期
CTL2寄存器主要用于ADC的模式
例如单端和差分
以及设置12位或16位的DC
以及ADC的时钟分频数设置
ADCSOCCTL寄存器主要用于设置SOC的触发源
以及SOC对应的通道
如果是单端采样 就对应一个通道
比如这里的ADC通道0到15
如果是差分采样 对应两个通道
比如这里的ADC0 1
以及ADC每个SOC的采样窗大小
ADC中断寄存器 主要用于触发SOC的中断
用于ADC ping-pong模式中
让ADC中断触发一个序列的ADC采样
SOC优先级设置功能寄存器 主要是读取当前robin指针的地方
即最后一个转换的SOC
地点 以及不想在robin中旋转的SOC
可以设置1到16个SOC跳出robin圈外
ADC burst控制器 寄存器
是新加入的功能 主要用于静止或使能burst mode
以及它的尺寸大小
也就是一次burst事件 对于多少个SOC转换
以及设置burst mode的触发信号
中断寄存器用于选择ADC中断的EOC
可以选择任何一个ECO用于中断触发
可选择单次触发或连续触发的模式
ADC的结果寄存器是一个16位的寄存器 当使用12位模式时
只有第12个有效 而且外部源最大为3伏
单模式下 满足是FFFh 最小分辨率是0.0073V
如果是16位模式 就会需要是一个叉分输入
最小可以分别45uV的压差 需要两个ADC引脚
来采样
同样 需要外部基准源输入
如果在12位模式下使用短板采样
而且输入信号是一个正负信号 那我们需要在这边
增加一个1.5伏的偏置
然后在软件中手动减去硬件的偏置
最终才能变成需要的输入电压的采样
或者使用PPB模块的 OFFREF寄存器
得到一个在ADC result寄存器中的一个正负值
ADC的偏差矫正一般有几种方法来完成
如果是上电矫正 可以在OTP中写入一个矫正程序
或者调用device cal函数来完成
这个函数在系统初始化中默认添加调用
当然也可以调用ADC mode函数来循环矫正
或者 偏置和增益误差产生时
可以调整ADC OFFTRIM寄存器来调整偏移误差
如果是增益误差 就可以通过软件补偿全范围增益内的误差
比如通过另一个ADC模块的输入角
基准源来补偿ADC
具体方法可以参见SPRAAD 8A的应用文档
最后提一下 F2837X的基准源
必须使用外部基准源 可以用一个基准用给4个ADC同时提供
最好在基准输入源角的地方加入稳压电容
发挥基准源的最大精度
看完ADC模块 我们看看比较器模块
F2837X最多有8个比较器模块
其中每个比较器带有两个模拟比较器
两个12位DAC
两个数字滤波器 和1个斜率生成器
其中数字滤波器用于滤除 比较器输入端的干扰信号
而斜率生成器是用于控制电流模式的控制的谐波补偿
它还可以被PWM的同步信号
比如PWMsink所同步
这一页是比较器的一个框图
和PQ上一代产品的区别是
现在的比较器带有两个单端比较器
也就是一个比较器模块带有两个比较器
一个负责设置比较的上限 一个负责设置下限
这样不会因为比较器的输入口的电压在干扰下飘动
导致比较器的误触发 每个比较器带有一个12位DAC
精度比以前的10位有提高
每个比较器有单独的数字滤波器 进行抗干扰
比较器模块中还有三个DAC能输入模拟电压
可以用基准源的输出 比如正弦波 方波模拟信号
是从ADC引脚上输出电压 可以带一定的负载
这就是DAC的框图
内部DAC通过内部运放输出
这样比较器就有了使用ADC的电源电压
和外部基准源作为基准
最后看看SDFM滤波器
是F2837X产品最新的外设
主要在四步控制器中用于ADC隔离采样后
输出数字流的场合进行数字解码
或者和旋转解码器来解码连接
F2837X最多有四个SDFM模块
每个模块可以独立接受数字比特流
可以设置四种速度的滤波模式
并且具有compare滤波器 可以快速检测
过流状态 当然也可以根据设置
调整滤波器来进行自定义处理
简单看看框图
总共4个模块 每个模块有独立的时钟和数字流输入
通过输入控制后 进行compare滤波保护
然后触发中断 或者产生时间读取
同时PWM模块的compareC和D匹配
也可以同步SDFM模块的滤波器
让电流采样和PWM周期同时进行
课程介绍
共计28课时,4小时27分22秒
C2837x入门指南
TI C2000 MCU PWM F2837xD ADC DAC DMA CLA C2837x CMP SDFM CAP QEP c28x
F2837x系列的最新 C2000™ Delfino™ 32 位 F2837xD 微控制器 (MCU),为工业实时控制实现最新创新,并设定了全新性能标准。这些最新 MCU 支持双核 C28x 处理功能与双实时控制加速器(也称为控制律加速器或 CLA),可提供 800 MIPS 浮点性能,从而可帮助设计人员为计算要求严格的控制应用开发低时延系统。此外,设计人员还可通过将多个嵌入式处理器整合在单个 MCU 中以降低复杂性,充分满足高级伺服驱动器、太阳能中央逆变器以及工业不间断电源 (UPS) 等需要实时信号分析的应用需求。
猜你喜欢
换一换
推荐帖子
- 坛里用ADI的DSP的同学多不多
- 说说大家都用TI的还是ADI的? 还有,我是DSP菜鸟,想问下TI和ADI的DSP各有什么样的优势,用的最多的什么型号?主要用在哪里?...
- wanghongyang DSP 与 ARM 处理器
- 关于TMS320C30的外部数据存储器
- 各位高手,请教一个问题,TMS320C30的外部数据存储器必须是32位的还是可以用16位数据宽度!请高手答复,不胜感激!...
- wycemail DSP 与 ARM 处理器
- 还是不能下载程序
- 我用LM3S601或者是LM3S6611芯片,软件是IAR6.3,工具:JLINK V8。 当我程序编译没有错误时,点击下载,出现以下2个错误,究竟是哪配置不对啊? 1:fatal error: Conmunication timed out:Requested 1 bytes,received 0 bytes. 2.failed to load flash loader:安装目录\IAR6...
- feiante 微控制器 MCU
- 恳请版主和各位大哥帮忙!如何在430中使用队列数据结构?
- 各位高手,由于项目需要,须在程序中使用队列,对列的成员是一个结构。写了个测试程序但是新节点总是挂不到队列中去,请各位大侠指点!我的代码如下: struct queueNode { long int data; struct queueNode *nextPtr; }; typedef struct queueNode QUEUENODE; typedef QUE...
- pqwgh 微控制器 MCU