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.

[参考译文] TMS570LS0432:CAN 通信持续数据传输问题。

Guru**** 2763585 points

Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/834497/tms570ls0432-can-communication-continuous-data-transmission-problem

器件型号:TMS570LS0432
主题中讨论的其他器件:HALCOGEN

CAN 通信连续数据传输 问题。

我们使用的是 TMS570LS470。因为 我们正在尝试与其他开发板进行 CAN 通信。

我们面临的问题是:

 成功传输第一个字节 CAN 数据后、 当我们尝试 从 调试器更改值时、无法传输数据、而是无法传输 CAN.c 文件中的 CANTransmit 函数 、始终以黄色突出显示的函数为单位

如何复位 TXRQx 寄存器值以实现数据的连续传输。

uint32 canTransmit (canBASE-t *节点、uint32 MessageBox、const uint8 *数据)


   uint32 i;
   uint32成功 = 0U;
   uint32 regIndex =(MessageBox - 1U)>> 5U;
   uint32 bitIndex = 1U <<(MessageBox - 1U)和0x1FU);

/*用户代码开始(7)*/
/*用户代码结束*/


   /**-检查待处理消息:
   *    -待处理消息、返回0
   *    -无待处理消息、开始新传输  
   *
   if ((node->TXRQx[regIndex]& bitIndex)!= 0U)
   {
       成功= 0U;
   }

   其他
   {
   /**-等待 IF1准备就绪可供使用*/
   /*SAFETYMCUSW 28 D MR:NA "找到可能无限的循环-执行序列的硬件状态检查"*/
   while ((node->IF1STAT & 0x80U)=0x80U)
   {  
   }/*等待*/

   /**-为配置 IF1
   *    -消息方向-写入
   *    -数据更新
   *    -开始传输
   *    
   NOD->IF1CMD = 0x87U;
   
   /**-将 TX 数据复制到 IF1中*/
   对于(I = 0U;I < 8U;I++)
   {
#if ((__little_endian__= 1)||(__little_ENDIAN__= 1)
       /*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
       NODE->IF1DATx[i]=*数据;
       /*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
       /*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/
      Data++;
其他
       /*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
       NODE->IF1DATx[s_canByteOrder[i]=*数据;
       /*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
       /*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/
      Data++;
#endif
   }

   /**-将 TX 数据复制到消息框中*/
   /*SAFETYMCUSW 93 S MR:6.1、6.2、10.1、10.2、10.3、10.4 "LDRA 工具问题"*/
   NOode->IF1NO =(uint8) MessageBox;

   成功= 1U;  
   }
   /**  @请注意,必须先调用函数 canInit,然后才能使用此函数。\n
   *          用户负责初始化消息框。
   *

/*用户代码开始(8)*/
/*用户代码结束*/

   返回成功;

让我们知道从一个处理器连续传输 CAN 数据的分辨率。  

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

    您好!

    一个 CAN 消息的最大有效载荷为8字节(DLC 字段)。 可以为 不同的有效载荷设置不同的消息框。 您可以发送多少条消息没有限制。 您可以在 HALCoGen 示例(帮助主题->示例)中找到如何使用 CAN 模块的示例。

    此致、
    米罗

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

    您好!

    如果您希望定期发送消息、可使用 RTI 模块来确定时间段。

    此致、
    米罗