各位专家:
我们需要您的帮助。
我们的客户希望将12位 ADC 计数(4096)转换为 IQ24格式。 那么、如果我们写入(ADCcounts<<12)或写入_IQ12toIQ (ADCcounts)、这两个运算是否会得出相同的结果?
此致、
Jonathan
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.
各位专家:
我们需要您的帮助。
我们的客户希望将12位 ADC 计数(4096)转换为 IQ24格式。 那么、如果我们写入(ADCcounts<<12)或写入_IQ12toIQ (ADCcounts)、这两个运算是否会得出相同的结果?
此致、
Jonathan
您好 Johnathan、
[引用 userid="470463" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1187694/tms320f280023c-iq-format "]因此,如果我们编写(ADCcounts<<12)或编写_IQ12toIQ (ADCcounts),这两个操作是否会给我们提供相同的结果?这不是 IQ 库的工作方式。 IQ12等不同格式是定点数据类型、 因此需要为小数保留位。 第一条语句(ADCcounts <<12)将起作用、因为 IQ12使用12位作为小数精度。 但是、使用_IQ12toIQ (ADCcounts)将不起作用、因为此函数会将 IQ12定点数据类型(精度为12位)转换为任何全局 IQ 定点精度。 这假设 ADCcounts 值已经是定点格式、从您的问题中、似乎不会出现这种情况。 没有将整数转换为 IQ 的内置函数(IQmath 的用途是在 FPU 之前构建旧代码)。
如果客户希望使用浮点数据类型、并且由于传统原因、他们的代码尚未使用 IQmath 库、我建议仅使用浮点数据类型、因为 F28002x 支持 FPU 的浮点类型。
此致、
Omer Amir
您好、Omer、
我想在这里发布客户的反馈。
我非常感谢这一职位,但我还不能继续进行我的怀疑。 我还有一个关于相同的问题。 如果我能得到答案,我将非常感谢 你。 我在该系列中的下一个问题是、ADC 为12位、因此最大计数将为4096。 但是、我将该值存储在16位变量中、因此将使用哪种 IQ 转换格式将其转换为_IQ24? _IQ12toIQ (ADC_Counts)或_IQ16toIQ (ADC_Counts)?
请帮助详细说明。 非常感谢。
此致、
Jonathan
您好 Johnathan、
所有 IQ 精密数据类型都使用32位长数据类型。 如果客户正在使用 IQmath 库、则应按此方式进行存储。
[引用 userid="470463" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1187694/tms320f280023c-iq-format/4475565 #4475565">但是、我将值存储在16位变量中、因此将使用哪种 IQ 转换格式将其转换为_IQ24? _IQ12toIQ (ADC_Counts)或_IQ16toIQ (ADC_Counts)?[/引用]如前所述 、IQmath 库使用定点数据类型。 这意味着值中的第一部分位保留用于整个数字量、最后一部分保留用于小数量(或精度)。 ADC 结果不是定点的、因此它们不能直接用于任何转换函数、因为它还不是 IQ 值。 前面提到的方法应该足够了、在这里、值被向左移位以考虑精度位的数量。
此致、
Omer Amir