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.

[参考译文] TMS570LS1224:例如怀疑

Guru**** 2539500 points
Other Parts Discussed in Thread: LAUNCHXL2-TMS57012

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1008399/tms570ls1224-can-example-doubt

器件型号:TMS570LS1224
主题中讨论的其他器件:LAUNCHXL2-TMS57012

我已经在 LAUNCHXL2-TMS57012电路板上执行了 CAN 示例代码。 报文从 CAN1传输到 CAN2。 我在"while (1);"行放置了一个断点、以查看 CAN1和 CAN2寄存器的输出。 但是,我无法在变量屏幕(CCS 调试模式)中找到寄存器。 但是、在 SPI 回送模式下、我能够查看那里的消息。

请告诉我如何检查我是否发送了正确的消息以及是否在 CAN2上接收到该消息。

代码:


/*用户代码开始(0)*/
/*用户代码结束*/
/*包含文件*/
#include "sys_common.h"
#include "system.h"
/*用户代码开始(1)*/
#include "CAN.h"
/*包含 ESM 头文件-系统驱动程序的类型、定义和函数声明*/
#include "ESM.h"
#define D_SIZE 9
uint8 TX_DATA[D_SIZE]={'H''E''R''C''U''L''E''S''0'};
uint8 rx_data[D_size]={0};
uint32 错误= 0;
uint32 checkPackets (uint8 * src_packet、uint8 * dst_packet、uint32 psize);
/*用户代码结束*/
/*用户代码开始(2)*/
/*用户代码结束*/
void main (void)
/*用户代码开始(3)*/
/*初始化 CAN 1和2 */
canInit();/* CAN1 -> CAN2 */
CAN1上的/*发送*/
canTransmit (canREG1、 canMESSAGE_BOX1、TX_DATA);
/*。 等待 CAN2上的消息接收*
while (!canIsRxMessageArrived (canREG2、canMESSAGE_BOX1));
canGetData (canREG2、canMESSAGE_BOX1、Rx_DATA);//在 CAN2上接收*
/*检查接收到的数据模式*/
错误=校验包(&TX_DATA[0]、&Rx_DATA[0]、D_SIZE);
/*... 永久运行*/
while (1);
/*用户代码结束*/
/*用户代码开始(4)*/
uint32 checkPackets (uint8 * src_packet、uint8 * dst_packet、uint32 psize)
uint32 err=0;
uint32 cnt=psize;
while (cnt -)
if ((* src_packet++)!=(* dst_packet++))
ERR++;/*数据错误*/
返回(错误);
/*用户代码结束*/
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您可以在 CCS 存储器浏览器中检查 RX_DATA、并检查 IF2DAT 以查看接收到的数据是否已传输到 IF 数据寄存器。

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

    我在 LAUNCHXL2-TMS57012板的 J10连接器引脚12 (CAN2_RX)和 J10连接器引脚39 (CAN1_TX)之间直接连接了一根物理导线、在我的 Launchpad 中不存在120欧姆电阻。

    在 CAN1存储器的 TX 中、我可以看到数据、但 CAN2的 RX 存储器没有任何数据。

    连接 DSP LaunchPad 并完成调试。 我已从代码中删除断点。

    能否知道为什么我没有在 CAN2 RX 存储器中获取任何数据?

    我哪里出错了?

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

    您无法将 CAN1 TX 连接到 CAN RX 进行通信。  对于 CAN 总线通信、CAN 节点通常需要 CAN 收发器。  必须终止 CAN_H 和 CAN_L。 您应该使用120欧姆电阻器进行端接。 如果在 CAN 网络上放置多个器件、则只有网络末端的器件需要端接电阻器。

    如果 CAN 节点之间的电缆非常短、则可以使用非收发器方式进行 CAN 通信。 请参阅此应用:

    https://www.mikrocontroller.net/attachment/28831/siemens_AP2921.pdf

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

    CAN 节点1 TX ->  CAN 节点2 RX  

    CAN 节点1 RX -> CAN 节点2 TX  

    这是有效的连接吗?  

    我将在同一 Launchpad 上测试 BTW 两个 CAN 节点。 电缆长度较小。  

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

    不、不正确。 请参阅上一帖子中的应用手册。