智商数学计算



任何人都可以解释以下对话的工作方式吗?

clarke1.As =_IQ15toIQ((AdcResult.ADCRESULT0<<3)-_IQ15(0.50))<<1;

Piccolo设备具有12位ADC和16位ADC寄存器。AdcResult.ADCRESULT寄存器是Piccolo设备的合理合理的;因此,首先将测量的相电流值换成三个转换为Q15格式(0至1.0),然后在偏移减法后转换为AC数量(±0.5)。最后,将其偏移一个(乘以两个),以将测得的相电流归一化为±1.0 pu。

我不明白。

您发布的讨论在用户方面假定了几件事:

  1. 熟悉ADC测量电路。
  2. 熟悉Ti的IQMATH格式。

我会尝试解释答案,但是如果仍然不清楚某些内容,请在以上两个详细信息中浏览以上两个。

让我们假设您使用Picollo控制器测量 -10A范围。并让我们考虑您通过ADC处的信号调节电路测量I = 5A。此信号调节电路将负责抵消-10A至0V和 10a至3.3V。

即。 -10a在ADC输入时缩放为0-> 3.3V,其中0a值在ADC处读取为1.65V。

这是指i = 5a转换为1.65V (1.65/2)v = 2.475v

等效的12位ADC计数将为=(4095*2.475V/3.3V)= 3071。现在,正如您已经提到的,此12位计数存储在16位寄存器中。另外,如前所述,这是正确的合理。即数字如下存储adcresult.adcresult0 = 0x0bff;

adcresult.adcresult0:0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

现在,您需要将此数字转换为等效 -1 PU值,以进行进一步的处理foc或任何其他算法。这意味着,您需要将ADC结果乘以某个值,并且需要在浮点处的结果。虽然控制器可以直接可以使用,但是仅乘法操作确实会消耗很多处理时间!为了加速此类操作,尤其是对于分数数字,Texas Instruments的C28X处理器在代码中使用IQMATH格式。有关此帖子末尾的链接,有关此信息的更多信息。

首先,将16位ADC结果复制到32位蓄能器" AS-IS"中。

值:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

然后,它被转换为IQ15格式,其中最后15位代表左侧的分数部分。因此,Q值是:

q-value = 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1

是错误的,因为前三位为零,并且我们的信息是从forth bit on-thard中存储的。因此,编码器将值转移到3位以纠正Q值。IQ15值因此,变为:

adcvalue_q15 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0

offset = 0.5被减去2^( - 1)因此,q值为:

offset_q15:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

adcresult_q15 = adcvalue_q15 -offset_q15

adcresult_q15 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0

此值仍然是IQ15,它已转换为全局Q值,我想应该是Q24。

adcresult_q24 = 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

由于,这仅表示电流的一半幅度(由于 - 通过标志位照顾),我们现在应该将其乘以2。这是由代码中的左移来智能地完成的!

result_q24 = 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

如果我只看Q值,该Q值以Q24格式以上Bit-9开始,我会在此处获得ADC操作的结果:

q-value = 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

转换为等效数,符号= 0,int_value = 0;

adc_value_pu = 0*(2^( - 1)) 1*(2^(-2)) 1*(2^(-3)) 1*(2^(-4)) 1*(2^(-5)) 1*(2^( - 6)) 1*(2^(-7)) 1*(2^( - 8)) 1*(2^(2^)(-9)) 1*(2^(-10))

adc_value_pu = 0.499;

是5a的等效PU表示,用于测量ADC -10a。

我希望这可以解释。有关更多信息,请通过以下链接花一天时间来了解iqmath格式:http://processors.wiki.ti.com/images/8/8c/iqmath_fixed_vs_floating.pdf

相关内容

  • 没有找到相关文章

最新更新