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.

[参考译文] TMS570LS0914:接收具有有符号值类型的 CAN 数据库(DBC)信号时出现问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1285926/tms570ls0914-issue-while-receiving-can-database-dbc-signals-with-signed-value-type

器件型号:TMS570LS0914

我正在处理 CAN 通信、遇到了一个 CAN 数据库(.dbc)文件、其中包含 具有"有符号"值类型和长度的信号、如下面的 SNAP 所示:

现在、在测试时、我已经 在 CAN 总线分析软件、即总线主控(请参考下面的 SNAP)上将信号的物理值设置为-10、并且我正在检查 我是否正在微控制器端接收准确的数据。

但是、如上图所示、对于相同的物理值、原始值正在改变对信号数据长度的贬低、因此我在微控制器端收到了错误的物理值。 传输"有符号"值类型的信号时没有问题。

那么、如何在微控制器端处理"有符号"值类型的信号呢?  如果您 有的话、请分享示例代码/代码片段。

请提供帮助。 提前感谢!

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

    Harshal、您好!

    [报价 userid="516661" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1285926/tms570ls0914-issue-while-receiving-can-database-dbc-signals-with-signed-value-type ]但是如上表所示,原始值正在改变对相同物理值信号数据长度的计量,因此我在微控制器端收到了错误的物理值。 传输"有符号"值类型信号时没有问题。

    原始值不会更改、因为物理值为负数、所以原始值仅显示相应数据的二进制补码值。

    10的二进制      = 0000 0000 1010

    1的补码 = 1111 1111 0101

    二进制补码 = 1111 1111 0110 (1补码+ 1)

    因此、 -10将表示为 = 1111 1111 0110 = 0xFFF6。

    在我的控制器端、您只需声明一个"signed short"变量即可对相应的数据进行操作。

    只需查看以下代码即可了解:

    --
    谢谢。此致、
    Jagadish。