工具/软件:Code Composer Studio
大家好、
为什么 Q14中的 iv.i_target_average 变量?
不可能出现这种情况。
有什么想法吗?
Tom
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.
工具/软件:Code Composer Studio
大家好、
为什么 Q14中的 iv.i_target_average 变量?
不可能出现这种情况。
有什么想法吗?
Tom
我假设您正在讨论以下代码:
iv.i_target_average =((iv.VFF_multiplier >> 5)* proportal_integral (iv.VBUS_target - iv.ADC_avg[VBUS_channel])>> 11; //Q10*Q15>11 = Q14
iv.VFF_multiplier 为 Q15、它会被5移位、因此它是 Q10。 iv.VBUS_target 和 iv.ADC_avg[VBUS_channel]是来自 ADC 的 Q12、但 proportal_integral 会将它们乘以 Q15系数、然后将它们右移12、从而变为 Q15。 因此、当这两者相乘、然后向右移动11时、您得到 Q14。
Q 表示法是相当任意的、我不喜欢单独使用 Q 表示法进行设计。 我更喜欢使用流程的电子表格、在计算中使用的数字旁边显示实际电压和电流的列。
对于中断中的速度、我们将一切都置于 ADC 和 DAC 调节中。 但所有这些都可以转换为电压和电流。 VFF_MULTIER 是一个从电压变为电流的乘法器。 因此、如果您确定所有定点数的转换、您可以查看和查看实际电压和电流的变化、并确保正确。 使用电子表格也有助于正确缩放数据、从而在不溢出的情况下获得良好的动态范围。 当我执行类似的操作时、我几乎总是使用这种技术。