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.

[参考译文] TMS320F28335:接收到 CAN 通信错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1584813/tms320f28335-receiving-can-communication-error

器件型号: TMS320F28335

当某些消息 (MBOX) 发送到 TSM320F28335 时、某些数据无法正确接收。  

示例:  
Mbox 10、ID = 0x110、byte0(控制模式)、byte1 (START)、byte2 和 byte3 (Pot_target)、byte4 和 byte5 (VSC_target)
字节 0、1、2 e 3 发送的值正确、但字节 4-5 发送的值不正确。


Mbox 12、ID = 0x112、 byte0(控制模式)、byte1 (START)、byte2 和 byte3 (vBat1_target)、byte4 和 byte5 (vBat2_target)、Byte6 和 byte7 (VSC_target)
字节 0-1 发送的值正确、字节 2-3 发送的值不正确、字节 4-5 和 6-7 发送的值正确、尽管变量会反转。 示例:发送的值 — 字节 4-5 (vBat2_target)= 150 且字节 6-7 = 200 (VSC_target);接收的值 —  VSC_target = 150 且 vBat2_target = 200。

用于通信的软件是 Busmaster、频率为 250kHz

以下图像来自 CCS 上的 DE 代码、Busmaster 上的配置和进行的测试

CAN 邮箱代码
1.jpeg
eCAN 寄存器
2.jpeg
MBOX ID 配置
3.jpeg
总线主器件配置
4.jpeg

起始字节顺序:Intel(小端字节序)
modo_con、Pot_target 和 VSC_target 字节顺序:motorola(大端字节序)

6_1.jpeg

起始字节顺序:Intel(小端字节序)
modo_con、vBat1_target、vBat2_target 和 VSC_target 字节顺序:motorola(大端字节序)

测试完成
Test.jpg

什么原因可能导致这些错误? 是否需要任何其他配置?

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

    您是否可以将数据写入邮箱而不是使用位字段?

    如果 DBO=1:

    ECanaMbox.MBOX3.MDL.ALL = 0x33221100;
    ECanaMbox.MBOX3.MDH.ALL = 0x77665544;

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

    你好
    我对其进行了测试、结果如下:


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

    接收到的数据是什么?

    您用于发送和接收 CAN 消息的工具(您的 GUI)是什么? 还是您正在通过 CAN 层使用不同的协议?

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

    我使用的是 PEAK PCAN-USB Pro FD。 只有一条现场总线连接、我将用它来发送和接收消息。

    接收到的数据为:

    原始值= 0x77665544
    物理值= 2.0032e+009
    数据字节= 33 22 11 00 77 66 55 44

    发送的图像一样重要

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

    嗨、我跟踪了数据以验证数据是否正确发送到 DSP、这就是我得到的结果



    它会确保正确发送、但当到达表达式时、vBat1_target 会显示错误的值。  vBat1_target 和 vBat2_target 的配置实际上相同。

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

    尊敬的 

    什么是物理值 (160,100 或 200)、它与原始值 (0x640、0x3E8 或 0x700) 有何关联? 如果物理值是原始值的浮点值、如何将其转换为十六进制数 (IEEE-754)?

    我假设配置中的 DBO=0 (CANMC.10)。 如果 DBO=0、CANMDL[31:24]是字节 0、CAMDL[7:0]是字节 3、CAMDH[31:24]是字节 4、CANMDH[7:0]是字节 7。 我绘制一个表格如下:

    VSC_TARGET 应为 0xD007(或 0x07D0)、vBat2_TARGET 应为 0x4006(根据您的定义,为 0r 0x0640)。 这与表中的值不同: