文章

Timestamped TX

refer to NTCAN Application Developers Manual document charpter

  • 3.9 Timestamps
  • 3.14 Timestamped TX
  • 6.2.4 CMSG_T
  • 4.4.2 canSendT()
  • 8.5 Timestamped TX messages (Classical CAN)

example code

timestamped_tx.c:程序展示如何利用Timestamped TX功能,以相同间隔时间,非常精准地发送CAN消息。

    CMSG_T msgT[10];

    rc = canOpen(0, NTCAN_MODE_TIMESTAMPED_TX, 100, 100, 1000, 1000, &m_hCan);

    for (i = 0; i < len; i++) {
        msgT[i].id = (int32_t)(can_id + i);
        msgT[i].len = NTCAN_DATASIZE_TO_DLC(8);
        msgT[i].timestamp = timestamp;
        strcpy((char *)msgT[i].data, "Hello !!");
        timestamp += timestampFreq / 10; /* Next transmission in 100 ms */
    }

    rc = canSendT(m_hCan, msgT, &len);

执行过程

参照Demo System建立CAN总线,编译运行此程序向总线精准发送CAN消息,同时使用CANreal工具接收此程序发送的消息。参加下图,总共发送10条CAN消息,每条消息之间的间隔都几乎控制在100毫秒,抖动非常小。