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基准差异。
一、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生成比较阈值,比较器的正端和负端都接外部信号的话,那么就只需要考虑比较器的误差了。
二、比较器滞环
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的阈值则会变成(校准过的值-滞环宽度),如下图所示:
三、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上,使得两者的基准一致。
结论
本文以F28004x,F2807x,F2837x芯片为例,介绍了内置比较器的误差来源及校正方法,同时纠正了比较器滞环的错误理解。对于同一个信号既需要软件保护又需要硬件保护的系统,我们指出了导致软硬件保护阈值可能出现偏差的原因,同时给出了解决办法。正确使用C2000芯片内部比较器可以实现快速软硬件保护,提高系统整体可靠性,同时无需外部基准和比较器,节省PCB空间,是一个非常实用的模块。
References
[1]. TMS320F28377D: CMPSS Module - Tolerances and Calibration
https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/590592
[2]. TMS320F28004x Microcontrollers Technical Reference Manual (SPRUI33C)