UCD3138的数字比较器与模数转换器的应用文档格式.docx
《UCD3138的数字比较器与模数转换器的应用文档格式.docx》由会员分享,可在线阅读,更多相关《UCD3138的数字比较器与模数转换器的应用文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
该误差信号在模数转换后变为数字量,然后输入到数字环路补偿模块(Filter)。
Figure1.UCD3138AFE模块框图
为丰富应用的灵活性,用户设置的参考值(数字量)与EADC的输出值(数字量)相加后生成一个叫做“绝对值量(absolutevalue)”的数字信号,可以表征实际采集到的电压信息(即Vd的值)。
UCD3138的数字比较器就是以数字误差信号(B点值)或绝对值量(C点值)作为一个输入端,参考电压值(用户可以自行设置)为另一个输入端所组成,触发后可以配置其关断任何一路DPWM.
UCD3138中有3个AFE模块,同样地,也有4个数字比较器。
1.2数字比较器涉及的关键寄存器
1.2.1EADC的输出
EADC的输出是参考电压与输入模拟量相减后的值在数字化之后的信息量,即数字误差量,其范围与AFE自身的增益有直接关系。
例如,当增益值设置为1时,其输出范围是+248~-256;
而增益设置为8时,输出范围是+31~-32.
寄存器EADCRAWVALUE的第0~8位(共9bit,名称为RAW_ERROR_VALUE)保存的即为EADC的输出,分辨率为1mV/bit.
1.2.2DAC的输入
DAC的输出即为系统的参考电压。
在UCD3138的实际应用中,用户可以设置DAC的输入值,为数字信号量。
寄存器EADCDAC的第4~13位(共10bit,名称为DAC_VALUE)保存了用户的设置值。
分辨率为1.5625mV/bit.
1.2.3绝对值量
寄存器EADCVALUE的第16~25位(共10bit,名称为ABS_VALUE)保存的就是绝对值量,分辨率为1.5625mV/bit.
上文提到,绝对值量是EADC的输出信息与DAC的输入信息相加得到的,但并不是二者数字量的直接相加,因为其分辨率不同。
事实上,上述三个数字量所各自表征的模拟量存在等式关系。
例如,某条件下,EADC的输出(ERROR_VALUE)为192;
DAC的输入为747;
绝对值量(ABS_VALUE)为624,如下图2所示。
Figure2.MemoryDebugger中读取到的寄存器值
显然,747-624=123≠192.但是,各自的模拟量则满足等式关系,如下:
EADC的输出192对应的模拟量为192×
1mV/bit=192mV;
DAC的输入747对应的模拟量为747×
1.5625mV/bit=1167.1875mV;
绝对值量624对应的模拟量为624×
1.5625mV/bit=975mV;
◎最终,1167.1875-975=192.1875≈192.
或者,三个数字量可以在增加衰减系数后存在如下等式关系:
1.3数字比较器的软件配置
在程序初始化阶段,可以完成对数字比较器的配置。
以配置数字比较器0为例,主要代码如下:
FaultMuxRegs.DCOMPCTRL0.bit.CNT_THRESH=1;
上述代码配置只需触发一次数字比较器就会产生一个fault.
FaultMuxRegs.DCOMPCTRL0.bit.FE_SEL=0;
上述代码配置数字比较器的输入为AFE0的绝对值量。
也可以配置为EADC的输出。
另外,其余两个AFE的绝对值量和EADC的输出也可以配置为数字比较器0的输入。
FaultMuxRegs.DCOMPCTRL0.bit.COMP_POL=1;
上述代码配置为数字比较器的输入高于参考量后才会触发。
FaultMuxRegs.DCOMPCTRL0.bit.THRESH=850;
参考量设置为850.如果输入量选择为绝对值量,则当Vd电压大于850×
1.5625mV/bit=1.33V时便会触发数字比较器。
FaultMuxRegs.DPWM0FLTABDET.bit.DCOMP0_EN=1;
上面代码配置为,数字比较器触发后立即关断DPWM0A和DPWM0B.
1.4数字比较器的实际应用结果
实际调试时,图1的Vd处外接一个可调电压,并由0V慢慢增大。
可以观察到,当电压超过1.33V后,驱动信号便立即被关闭,符合预期,如下图3(CH3为Vd电压,CH2为DPWM0B)。
Figure3.数字比较器触发后关闭DPWM0B
1.5数字比较器的实际应用结果
实际应用中需要注意EADC的饱和问题。
上文1.2节提到,EADC的输出有一定的范围,当输入过大或过小时,EADC的输出会固定在其上限或下限,此时便是EADC处于了饱和状态。
仍以上面提到的实验为背景进行说明,其中AFE的增益设置为1.
当Vd电压为554mV时,绝对值量预计为355(因为554/1.5625≈355),EADC的输出预计为613(参考1.2节最后的等式)。
而实际读取发现,绝对值量为588,EADC的输出为248,这与设想完全不同。
分析原因可知,此时EADC已经处于了正向饱和,输出的上限为248.
Figure4.EADC正向饱和
同样地,当Vd电压为1.64V时,绝对值量预计为1050(因为1640/1.5625≈1050),EADC的输出预计为-473(参考1.2节最后的等式)。
而实际读取发现,绝对值量为911,EADC的输出为-256,这与设想也是完全不同。
分析原因亦可知,此时EADC已经处于负向饱和,输出的下限为-256.
Figure5.EADC负向饱和
综合上面分析可知,在DAC的值固定后,绝对值量存在一个范围,该范围与AFE的增益有直接关系,如下表所示。
Table1.绝对值量范围和AFE增益的关系
可以观察到,如果AFE的增益设置为8,DAC的值为747时,绝对值的范围是727~767.此时,如果计划让数字比较器在Vd为1.33V时触发,则其参考值需要设置为850.然而,数字比较器的另一端(输入为绝对值)最大仅为767,因此数字比较器将没有机会被触发。
实际应用中,设置数字比较器的参考值时需要考虑AFE的增益,以防止因EADC提前饱和导致其输出被钳制而无法触发数字比较器。
2、UCD3138的内部模数转换器ADC15
UCD3138芯片内部共有16个模数转换器,其中ADC15可以在芯片内部连接到AFE模块的EAP或EAN引脚。
实际应用中,ADC15可以用来检测系统的反馈电压,在软件中可以还原出实际的输出电压。
2.1ADC15的配置
UCD3138芯片内部的ADC15可以连接到任意一个AFE模块的EAP或EAN引脚,完成模拟信号的数字化。
在应用时,与其它ADC的配置方式非常相似,唯一的差别是需要配置ADC15到指定的AFE.
下面三行代码是完成ADC15与AFE的关联。
其中,AFE_MUX_CH_SEL为1是指ADC15连接到AFE0;
AFE_VIN_MUX为0是指ADC15连接到EAP引脚。
MiscAnalogRegs.AFECTRL.bit.AFE_MUX_SEL=3;
MiscAnalogRegs.AFECTRL.bit.AFE_VIN_MUX=0;
MiscAnalogRegs.AFECTRL.bit.AFE_MUX_CH_SEL=1;
综合上述配置,ADC15是连接到了AFE0的EAP引脚,即可以检测图1中的Vd电压。
2.2实验结果
如图4,当Vd为554mV时,ADC15的结果(adc_values.Vout)为902.二者近似符合下面的等式:
如图5,当Vd为1.64V时,ADC15的结果(adc_values.Vout)为2681.二者近似符合下面的等式:
上述物理值与数字量之间的差别,主要是测量误差导致。
3、UCD3138的内部模数转换器ADC15
UCD3138芯片内部的数字比较器和模数转换器ADC15都可以用来处理与输出电压相关的工作。
其中,数字比较器配置之后可以实现对输出电压过压或欠压等的快速响应与保护;
ADC15配置之后可以精确的采集输出电压信息,然后借助软件设计同样可以实现对输出电压的故障保护。