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.

[参考译文] DRV8301-69M-KIT:串行端口数据转换

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035164/drv8301-69m-kit-serial-port-data-translation

器件型号:DRV8301-69M-KIT

我有一个 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)

    我缺少什么吗?

    谢谢

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

    C28x--A char 没有8位字节类型。 这是否说明了问题? 您在 myarray 中看到的实际值是多少? 如果您在写入 myarray 时屏蔽高8位、它会为您提供预期值、还是有其他事情发生?

    惠特尼

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

    嗯,很抱歉,我错过了! 在同一主题上、我要在串行链路上输入的一些数字最好使用 Q24版本、例如在本例中大约为0.93xxx。 是否有一些可用的函数可将其序列化为一系列字符、以便我发送串行链接?

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

    如果是浮点型、我可能会使用 sprintf()来获得很好的可打印字符、尽管我不确定 Q24数字。 我想、如果您只是将一组原始数据记录到文件中、您可以执行一些后处理来转换这些数据。

    惠特尼