ZHCAF96 April   2025 MSPM0G3506 , MSPM0G3507 , MSPM0G3518 , MSPM0G3519

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
    1. 1.1 MCAN 特性
  5. 2MCAN 模块的 Sysconfig 配置
    1. 2.1 MCAN 时钟频率
    2. 2.2 MCAN 基本配置
      1. 2.2.1 发送器延迟补偿 (TDC)
      2. 2.2.2 位时序参数
      3. 2.2.3 消息 RAM 配置
        1. 2.2.3.1 标准和扩展 ID 滤波器配置
          1. 2.2.3.1.1 如何添加更多滤波器
        2. 2.2.3.2 TX MSG RAM
        3. 2.2.3.3 RX MSG RAM
    3. 2.3 高级配置
    4. 2.4 保留配置
    5. 2.5 中断
    6. 2.6 引脚配置和 PinMux
  6. 3演示项目说明
    1. 3.1 TX 缓冲模式
    2. 3.2 TX FIFO 模式
    3. 3.3 RX 缓冲模式
    4. 3.4 RX FIFO 模式
  7. 4解决/避免 CAN 通信问题的调试和设计提示
    1. 4.1 所需的最少节点数
    2. 4.2 为何需要收发器
    3. 4.3 总线关闭状态
    4. 4.4 在低功耗模式下使用 MCAN
    5. 4.5 调试检查清单
      1. 4.5.1 编程问题
      2. 4.5.2 物理层问题
      3. 4.5.3 硬件调试提示
  8. 5总结
  9. 6参考资料

TX 缓冲模式

在 SDK 中,TX 在当前演示项目中配置为缓冲模式。下述讨论了如何在缓冲器模式下使用 TX。


                    DL_MCAN_TxBufElement txMsg;
                    /* Initialize message to transmit. */
                    /* Identifier Value. */
                    txMsg.id = ((uint32_t)(0x4)) << 18U;
                    /* Transmit data frame. */
                    txMsg.rtr = 0U;
                    /* 11-bit standard identifier. */
                    txMsg.xtd = 0U;
                    /* ESI bit in CAN FD format depends only on error passive flag. */
                    txMsg.esi = 0U;
                    /* Transmitting 4 bytes. */
                    txMsg.dlc = 1U;
                    /* CAN FD frames transmitted with bit rate switching. */
                    txMsg.brs = 1U;
                    /* Frame transmitted in CAN FD format. */
                    txMsg.fdf = 1U;
                    /* Store Tx events. */
                    txMsg.efc = 1U;
                    /* Message Marker. */
                    txMsg.mm = 0xAAU;
                    /* Data bytes. */
                    txMsg.data[0] = LED_STATUS_ON;
                    
                    /* Write Tx Message to the Message RAM. */
                    DL_MCAN_writeMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_BUF, 0U, &txMsg);
                    
                    /* Add request for transmission. */
                    DL_MCAN_TXBufAddReq(MCAN0_INST, 0U);

首先,通过调用 DL_MCAN_writeMsgRam(),将 TX 消息以缓冲区类型与缓冲区编号保存到消息 RAM 中。然后,使用添加请求通过调用 DL_MCAN_TXBufAddReq() 与此消息的缓冲区编号信息一起传输。