首页 > 应用与设计 > 工业应用 > C2837x入门指南 >

电机驱动

最新课程

热门课程

C2837x入门指南(八) — 模拟子系统 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周期同时进行

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周期同时进行

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

C2837x入门指南(八) — 模拟子系统 ADC DAC CMP SDFM(下)

所属课程:C2837x入门指南 发布时间:2016.06.06 视频集数:28 本节视频时长:00:11:32
C2837x概述;芯片架构; 开发环境;外设寄存器操作;复位和中断;系统初始化;模拟子系统 ADC DAC CMP SDFM;控制类外设PWM CAP QEP。
TI培训小程序