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.

[参考译文] UCD3138A:为什么"前馈增益"乘以0x7ffff 会成为 Q30、为什么不乘以0x4000 0000?

Guru**** 2539500 points
Other Parts Discussed in Thread: UCD3138A

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/863773/ucd3138a-why-does-the-feed-forward-gain-multiply-by-0x7fffffff-become-q30-and-why-not-multiply-by-0x4000-0000

器件型号:UCD3138A

在 TI 官方提供的 ucd3138a PFC 代码中、有一个用于计算"前馈增益"的宏定义。 为什么"前馈增益"乘以0x7fff 成为 Q30、为什么不乘以0x4000 0000?

代码为:

//前馈增益
#define K_FEED _Forward (((uint32)(0.5 * VAC_MIN_OFF * 1.414 * VAC_VOLTGE_DEV_DEVIDER * 0x7FFFFFFF))//Q30

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通常、希望避免32或64位数溢出、并提供尽可能多的分辨率。  有时会有一些回旋余地。  

    我发现 Q30的命名在内部与任何编写代码的人的整数数学原理一致、但有时这对我来说毫无意义。  我不会太担心、但只需确保它不会溢出、结果就会得到正确缩放。   

    我总是需要使用电子表格来计算它。  也许在开始时乘以.5会将其降至0x4000 0000。  我不确定。