打印
[资料分享]

C2000内置比较器误差来源及校正方法--F28004x, F2807x, F2837x

[复制链接]
250|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xyz549040622|  楼主 | 2020-10-14 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C2000系列芯片在数字电源和电机控制中有着广泛的应用,在这些应用中,过流过压保护是必不可少的。TI 的Picollo系列芯片从F2802x开始,就已经集成了带DAC的片内比较器,通过DAC设定阈值,与采样信号分别送到片内比较器的正负输入端做比较,生成保护信号给到PWM模块封锁PWM输出,从而实现过流过压保护,响应速度快,无需额外再加比较器和基准电压。
C2000系列芯片的内置比较器主要可以分为如下两类:

比较器类型

特点

覆盖芯片

Comparator module(COMP) type0

每个COMP内部有1个10bit DAC,1个比较器

2802x, 2803x, 2806x M35x, M36x

Comparator subsystem(CMPSS) type0

每个CMPSS内部有2个12bit DAC,2个比较器

F2807x, F2837xD, F2837xS, F28004x


不管是以上哪种类型的比较器,其输入正端都是直接连到ADC采样口(这个口用来采样需要监控的信息比如电压或电流),输入负端则可以选择连到内部的DAC输出或者另一个ADC采样口。本文将以比较器负端连到内部DAC输出为例(这也是最常见的一种用法),介绍内部比较器可能的误差来源及其矫正方法。
误差来源:
  • static offset error,静态失调误差。
  • 比较器滞环
  • ADC基准和比较器内部DAC基准差异。

使用特权

评论回复

相关帖子

沙发
xyz549040622|  楼主 | 2020-10-14 22:05 | 只看该作者
一、static offset error静态失调误差
现在假设我们希望的比较阈值为1.5V,当比较器正端输入电压大于1.5V时,比较器输出为1(高电平);输入电压小于1.5V时,比较器输出0(低电平)。如果内部DAC的基准为3V,那么我们需要把DACVAL设定为2048使得DAC输出1.5V。在上面描述的这种情况下有两个地方会引入误差,一个是内部DAC的误差(offset error),另一个是比较器的误差(input referred offset error),这两个误差总称为static offset error,静态失调误差。
对于F28004x, F2807x,F2837x系列芯片,其规格书上都有static offset error这个参数,为±25mV。也就是说,虽然理论上DACVAL=2048可以得到1.5V的阈值,但是因为static offset error,比较器发生翻转时负端的电压可能在1.475V到1.525V之间,而这个值是多少你并不知道,所以就需要校准。校准方法就是,在比较器正端接上一个你需要的阈值电平,在关掉内部比较器滞环的条件下,让比较器的DACVAL从0逐渐增大到4095,再逐渐减小到0,这样比较器输出会有两次翻转,将这两次翻转时的DACVAL的值作平均,就是校正后的阈值电压对应的DACVAL的值。
如果不用内部的DAC生成比较阈值,比较器的正端和负端都接外部信号的话,那么就只需要考虑比较器的误差了。

使用特权

评论回复
板凳
xyz549040622|  楼主 | 2020-10-14 22:05 | 只看该作者
二、比较器滞环
C2000比较器的滞环是可以设定的,COMPHYSCTL的COMPHYS位可以设定滞环的环宽,当环宽设定为0时也就意味着没有滞环。注意在规格书中,滞环的单位是LSB,所以它和CMPSS模块内部的DAC的参考有关。如果内部DAC的参考电压是3V,1LSB对应3V/4096=0.7mV。以F28004x,F2807x, F2837x为例,其滞环可以在12LSB, 24LSB, 36LSB, 48LSB中选择。
需要指出的是,加入滞环后,比较器从0翻转到1的阈值依然是之前校准过的值,而不会变成(校准过的值+1/2*滞环宽度),而从1翻转回0的阈值则会变成(校准过的值-滞环宽度),如下图所示:

使用特权

评论回复
地板
xyz549040622|  楼主 | 2020-10-14 22:06 | 只看该作者
三、ADC基准和比较器内部DAC基准的差异
在实际系统中,除了用比较器做硬件保护,通过AD采样来做软件保护也很常见。对于同一个电压或者电流信号,在考虑了前述静态失调误差和滞环后,有时候我们会发现ADC采样得到的值根本没到比较器DAC输出的阈值,但是比较器依然翻转了,这其中甚至会差到200个LSB。这是因为芯片ADC的基准电压和比较器内部DAC的基准电压不同导致的。
以F28004x,F2807x, F2837x为例,比较器内部DAC的基准默认来自于VDDA,可以配置成VDAC,而ADC的基准来自于VREFHI,VDDA默认供电是3V,而我们常用的内部ADC基准VREFHI是3.3V,这样,如果我们的比较器DACVAL设定为2048,那么比较器会在1.5V翻转,而此时ADC采样的值只有1.5V/3.3V*4096=1862。这就是因为ADC基准和比较器内部DAC基准的不同带来的差异,对于既需要做硬件保护,又需要做软件保护的信号,这一点需要特别注意。最简便的解决办法就是,将比较器内部的DAC基准配置为VDAC,同时将VDAC连到VREFHI上,使得两者的基准一致。

使用特权

评论回复
5
xyz549040622|  楼主 | 2020-10-14 22:06 | 只看该作者
结论
本文以F28004x,F2807x,F2837x芯片为例,介绍了内置比较器的误差来源及校正方法,同时纠正了比较器滞环的错误理解。对于同一个信号既需要软件保护又需要硬件保护的系统,我们指出了导致软硬件保护阈值可能出现偏差的原因,同时给出了解决办法。正确使用C2000芯片内部比较器可以实现快速软硬件保护,提高系统整体可靠性,同时无需外部基准和比较器,节省PCB空间,是一个非常实用的模块。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2810

主题

19297

帖子

104

粉丝