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.
您好!
感谢您的评分
抱歉、 我错误地关闭了问题答案。。。
让我再提一个问题。
e2e.ti.com/.../msp430f6769a-regarding-improving-accuracy-of- a-d-conversion/4952023#4952023
此页面的内容列在 URL 的末尾。 请参阅。
您回答过、需要一个不同的 IQ 值来防止溢出、但如果 N 值需要、例如24、这是否意味着在发生溢出时需要更改 N 值?
由于 MSPF6769A 的 AD 转换位数为24位、我需要 IQ24数据、但如果这会导致溢出、是否可以更改 N 的值?
同样、在偏移二进制状态下、该值大约为964827590。
为了避免这种情况、通过查看数据表、您认为将该值乘以系数2或更大的_iq6或更小、即小于16777216的一半是正确的吗?
我认为我的想法是错误的,所以我会感激,如果你能启发我。
感谢您的理解。
俊晴
您好!
我不能完全理解你的观点。
还包括如何防止溢出。 我展示了以下示例、介绍如何定义操作结果的 IQ 类型以 防止溢出。
IQ23 DATA_A = IQ24 DATA_B + IQ24 DATA_C。
IQ16 DATA_A = IQ9 DATA_B * IQ7 DATA_C。
IQ2 DATA_A = IQ9 DATA_B / IQ7 DATA_C。
此致、
现金豪
嗨、Cash
对不起,我省略了我之前问的很多问题(URL 在第一句)。
…MSP430F6769A:关于提高 A/D 转换的精度- MSP 低功耗微控制器论坛- MSP 低功耗微控制器- TI E2E 支持论坛
为了更详细地进行说明、我目前正在尝试使用 MSPF6769A 的内置 AD 转换器来获得高分辨率。
因此、现在我想使用 IQmathlib 来提高分辨率。
电流设置为偏移二进制法、OSR=1024、外部电源电压和外部基准。
该程序根据 Resource Explorer 中的 msp430f677×a_sd24b_06.c 更改 CPU 设置。
我想使用 IQmathlib 函数来提高这里的分辨率。
MSP430F6769A 的分辨率为 δΣ24bit μ A、因此我想从它获得更高的性能。
这是第一句的内容。
目前方案的产出价值约为964827590。
在第一句 URL 的回复中、
"更好的方法是将您的比例因子应用于 ADC 结果、然后切换到 IQ24。 实际上可以一步完成。 假设您具有 IQ24格式的换算系数、只需乘法即可。 无需使用 IQmath 函数、只需进行常规乘法即可。
由于您以零小数位数和24作为起始值、结果将为24、因此为 IQ24格式。 假设换算系数不会导致整数部分溢出、则效果很好。 如果它确实溢出、您需要不同的 IQ 格式。"
它说。 这意味着、如果您设置 IQ24并尝试获取该值、24bit=16777216、因此如果您将964827590乘以2等等、它将溢出。 现在我不知道如何设置 IQN。
由于 MSP430F6769A 的最大性能为24位、我认为 IQN 应该被设定为 N=24、但是我认为没有特别的规则、你应该只输入一个适当的 N。
但是、我不知道 N 的正确值。
我认为、如果 AD 转换获得的结果为 IQN (Result)、则会转换为 IQ 值、但我不知道单靠该值是否会提高分辨率精度或者提高分辨率精度。
既然我不知道、您能给我一些建议吗?
CCS 版本为12.5.0。
感谢您的理解。
俊晴
尊敬的俊晴:
现在我想使用 IQmathlib 来提高分辨率。
我认为使用 IQ 格式不会提高您情况下的分辨率。 IQ 格式用于通过 定点数据表示浮点数据。 因为 MSP430不包含 FPU。 因此、定点算法对 MSP430 MCU 更加友好。 例如、将浮点数据转换为 IQ24和 IQ30格式。
_IQ24 (0.5243)= 0.5243*2^24 ~= 8,962,388.8 = 0x88 C155
_IQ30 (0.5243)= 0.5243*2^30 μ~= 562,962,838.3 = 0x218E 2196
然后转换回浮点格式并检查这两种格式之间的错误。
_IQ24: 0x88 C155/2^24 μ~= 0.524299979。 误差为0.524299979-0.5243 = 0.00000002
_IQ30: 0x218E 2196/2^30 μ~= 0.524299999。 误差为0.524299999 - 0.5243 = 0.000000001
总之、在这种情况下、使用 IQ30来表示浮点数据产生的误差小于 IQ24。 错误是由于忽略转换期间的数据的十进制部分所致。 但另一方面、IQ30格式的范围小于 IQ24格式。 您只能使用 IQ30格式来表示-2至 1.999 999 999之间的浮点数据。 对于 IQ24格式、范围为-128至 127.999 940。
因此、如果您有一个浮点数据101.2345并要将其转换为 IQ 格式、它需要使用至少 IQ24格式或更低的格式来表示该数据。
此致、
现金豪
嗨、Cash
感谢您的回答!
我认为使用 IQ 格式不会提高您案例的分辨率。
了解无法使用 IQmath 计算所需结果是否正确? 我们需要24位分辨率、因此我们需要浮点数而不是定点数。
当我问他有关他的故事时、了解 IQmath 对于获取即使是定点数也可以接受的答案很有用、而且 IQmath 不适合需要浮点数的答案吗?
如果是这样、请考虑使用其他方法而不使用 IQmath 来提高分辨率的方法。
很抱歉、如果这意味着我无法使用它。
期待您的答复。
谢谢你。
俊晴
您好!
明白我所寻找的结果无法使用 IQmath 计算是否正确? 由于我们需要24位的分辨率,因此我们需要浮点数而不是定点数。
浮点和定点格式均可获得24位分辨率。 所以我们为什么更喜欢在 MSP430 MCU 中使用定点数据。 这是因为 MSP430没有集成的浮点处理单元。 如果大量计算都是浮点数据、则首选将浮点数据转换为定点数据、然后进行计算。 它将在 MSP430平台上节省大量时间和功耗。 使用定点数据无助于提高分辨率。
当我问他有关他的故事时,是否正确地理解 IQmath 对于获得即使是定点数字也可以接受的答案是有用的,而且 IQmath 不适合需要浮点数的答案?
不可以、IQmath 也适用于需要浮点数的答案。 您可以使用定点数据进行计算、然后将最终的定点结果转换回浮点数。
此致、
现金豪
嗨、Cash
感谢您的回答!
使用定点数据对提高分辨率没有帮助。
我明白了。
这意味着、即使将其转换为定点数并执行计算、从一开始就不适合提高分辨率。
使用 IQmath 提高精度和使用 FPU 提高精度不同于对待相同的想法。
在任何情况下、由于 MSP430没有 FPU、因此预计高精度浮点运算会很困难、所以我想详细了解这一点。
我认为我可能误解了上述内容,但如果你能向我提供进一步的指导,我会非常感激。
非常感谢。
此致、
俊晴
尊敬的俊晴:
这意味着即使您将其转换为定点数并执行计算,它也不适合用于提高分辨率的目的。
可以。 关于"高精度浮点运算"、我没有太多可分享的内容。 通常使用定点格式来替换浮点计算。 但是、它有一些限制。 每种 IQ 格式的范围都有限制。 因此、这种方法可能不适合您的应用。
此致、
现金豪
嗨、Cash
感谢您的回答!
我对使用 IQmathlib 无法提高分辨率感到非常失望。 不过、我能够获得有关 IQmath 的知识。 我认为当您必须开始工作时、它会派上用场。
非常感谢您的指导!
俊晴