我有一个 A/D 操作、读取一个值、因此它是一个 IQ12数字。 我使用 TI 库将其转换为 IQ24、因此现在我有一个很长的数字、在 CCS 中、我可以将其转换为 CCS 中的 Q-24数字、这是正确的。 现在、我要将该数据从串行端口发送出去。 我尝试简单地分解成一个字节数组。 我尝试声明一个字节 my_var[4]、然后使用移位运算来分解数字。 但是、似乎未在电机软件中定义字节。 那么、如何通过串行端口获取这些值呢?
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.
我有一个 A/D 操作、读取一个值、因此它是一个 IQ12数字。 我使用 TI 库将其转换为 IQ24、因此现在我有一个很长的数字、在 CCS 中、我可以将其转换为 CCS 中的 Q-24数字、这是正确的。 现在、我要将该数据从串行端口发送出去。 我尝试简单地分解成一个字节数组。 我尝试声明一个字节 my_var[4]、然后使用移位运算来分解数字。 但是、似乎未在电机软件中定义字节。 那么、如何通过串行端口获取这些值呢?
添加更多详细信息、以帮助了解我的错误所在。 我非常不熟悉 IQ 数学。 A/D 操作的结果和对 Q24的调整显示了 一个15654912的值、如果我在 CCS 中右键点击并转换为 Q-24、那么它的读数大约为0.933。 如果您将15654912除以16777216、这将出现在右侧。 如果您将看起来是十进制值15654912的值转换为十六进制值、则为0xEEE000。 这似乎是正确的、因为它是3个字节、Q24应该是3个字节(我认为)。 我尝试通过执行此操作来构建和数组 char[4]。
myarray[0]= value >> 24.
myarray[1]=值>> 16
myarray[2]=值>> 8.
myarray[3]=值
我是预料中的
myarray[0]= 0x00 (0)
myarray[1]= 0xEE (238)
myarray[2]= 0xE0 (224)
myarray[3]= 0x00 (0)
我缺少什么吗?
谢谢