您好!
我有一个电源转换器、它根据特定条件以两种不同的开关频率运行。 为了控制它、我读取了一些采样率随开关频率变化的模拟传感器。
我使用 SOC 1-6来获取这些值、而根据器件勘误表、SOC0用作虚拟读取。 我遇到的问题是、根据采样率、我观察到来自同一传感器的不同读数。 例如、在较低的采样率下、我在较高的频率下读取900和910。
我已经检查了电源和电压基准、在所有情况下、它们都是稳定的相同值。 我还尝试不同的采样窗口、但读数差异仍然存在。
是否有人会提示可能发生什么情况?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我有一个电源转换器、它根据特定条件以两种不同的开关频率运行。 为了控制它、我读取了一些采样率随开关频率变化的模拟传感器。
我使用 SOC 1-6来获取这些值、而根据器件勘误表、SOC0用作虚拟读取。 我遇到的问题是、根据采样率、我观察到来自同一传感器的不同读数。 例如、在较低的采样率下、我在较高的频率下读取900和910。
我已经检查了电源和电压基准、在所有情况下、它们都是稳定的相同值。 我还尝试不同的采样窗口、但读数差异仍然存在。
是否有人会提示可能发生什么情况?
我将使用通道 A1、A2、A4和 A6以及两个 CPU 计时器来控制采样。
第一个计时器设置为25Hz、第二个计时器设置为50kHz。 ADCINT 设置为转换结束。
在第一种模式下、所有4个通道都由第一个计时器触发:
AdcRegs.ADCSOC0CTL.all = (0xD<<6) + 63 + (0x1<<11); // Dummy reading. Discarded AdcRegs.ADCSOC1CTL.all = (0x4<<6) + 63 + (0x1<<11); // Sensor 1 - Timer 0 AdcRegs.ADCSOC2CTL.all = (0x6<<6) + 63 + (0x1<<11); // Sensor 2 - Timer 0 AdcRegs.ADCSOC3CTL.all = (0x1<<6) + 63 + (0x1<<11); // Sensor 3 - Timer 0 AdcRegs.ADCSOC4CTL.all = (0x2<<6) + 63 + (0x1<<11); // Sensor 4 - Timer 0
在第二种模式下、一个通道由第二个计时器触发、其余通道由第一个计时器触发:
AdcRegs.ADCSOC0CTL.all = (0xD<<6) + 63 + (0x2<<11); // Dummy reading. Discarded AdcRegs.ADCSOC1CTL.all = (0x6<<6) + 63 + (0x2<<11); // Sensor 1 - Timer 1 AdcRegs.ADCSOC2CTL.all = (0xD<<6) + 63 + (0x2<<11); // Dummy reading. Discarded AdcRegs.ADCSOC3CTL.all = (0x4<<6) + 63 + (0x2<<11); // Sensor 2 - Timer 1 AdcRegs.ADCSOC4CTL.all = (0x1<<6) + 63 + (0x1<<11); // Sensor 3 - Timer 1 AdcRegs.ADCSOC5CTL.all = (0x2<<6) + 63 + (0x1<<11); // Sensor 4 - Timer 1
显然、问题与通道本身无关。 如果我更改 SOC 配置中通道的顺序、问题会转移到其他通道。
我注意到、通常虚拟采样后读取的第一个传感器会受到影响、而其他传感器不会受到影响、但有时、根据参数、其他传感器也会受到影响。
如果我在采样频率变化时更改采样窗口、我可以减小或增大两个结果之间的差值、但绝不能使它们相等。
我已经尝试移除这个虚拟采样、或者让它与第一个真实传感器的通道采样、但结果相同。