C2837x入门指南(八) — 模拟子系统 ADC DAC CMP SDFM(下)
Loading the player...
将在30s后自动为您播放下一课程
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周期同时进行
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周期同时进行
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。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>