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.

[参考译文] CCS/LAUNCHXL2-570LC43:如何在两个 CAN 总线信号之间提示延迟。

Guru**** 2473270 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/683467/ccs-launchxl2-570lc43-how-to-instert-delay-between-two-can-bus-signals

器件型号:LAUNCHXL2-570LC43
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

您好、TI、

有人能不能帮助我如何在 Hercules TMS570LC43x Launchpad 的两个 CAN 信号之间提供一秒的延迟。

在使用 Halcogen 时、没有提供周期时间的选项、而在使用中断时、它也不起作用。

如果有人可以给我一段使用中断的代码、让 CAN 信号间隔一秒、那就很好了。  

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

    您好 Rashmi、

    没有硬件机制在每次传输之间插入延迟。 您可以使用 SW 添加延迟:

    使用 RTI 计数器

    2.传输一个空的 CAN 帧(数据长度= 0)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    王您好、感谢您的回复。 您能给我一段代码来写空的 CAN 信号还是给 RTI 中断吗?否则、您能给我建议任何我可以了解它的页面吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是使用 RTI 计时器生成延迟的示例:

    #define TIMER_LOAD_VAL 0xFFFF
    #define READ_TIMER (0xFFFFFFFF -*(易失性 ulong *)(0xFFFFFF00 + 0x10)
    #define CFG_Hz (以 Hz 为单位的 vclk)/*例如80000000 (80MHz),*/

    //usec 为微秒、TMO 为时钟周期
    空延迟(unsigned int usec)

       无符号 int tmo、tmp;
       if (usec >= 1000){
         TMO = usec/1000;
         TMO *= CFG_Hz;
         TMO /= 1000;
       }否则{
         TMO = usec * CFG_Hz;
         TMO /=(1000*1000);
       }
       tmp = get_timer_masked_masked();   /*获取当前时间戳*/
       if ((TMO + tmp + 1)< tmp){
        lastdec = read_timer;  
        时间戳= 0;
       }
       其他
        TMO += tmp;
       while (get_timer_masked_masked ()< TMO)  /*循环至事件*/

    Ulong get_timer_masked (空)

       unsigned int now = read_timer;  //当前节拍值*/

       if (lastdec >= now){
        /*正常模式*/
        timestamp += lastdec -现在;
       }否则{
        TIMESTAMP+= lastdec + timer_load_VAL -现在;
       }
        lastdec =现在;
        返回时间戳;