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.

[参考译文] TMS320F280039:TI280039 MCAN TX 发送错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1507438/tms320f280039-ti280039-mcan-tx-transmit-error

器件型号:TMS320F280039

工具/软件:

您好、

   我可以使用 MCAN_TXBTO 确认消息发送成功。 应使用哪个寄存器来确认消息发送失败? 如果仅使用 MCAN_TXBTO、则如果未发送消息、则 MCAN_TXBTO 也为0。 因此、MCAN_TXBTO 不能单独使用。 我尝试组合 MCAN_TXBAR 和 MCAN_TXBTO。 作为发送失败的条件、MCAN_TXBAR 不等于0、MCAN_TXBTO 等于0。 但是、测试后发现 MCAN_TXBAR 始终等于0? 请问有哪些计划?

代码的一部分如下:

   if (0U!=(MCAN_getTxBufTransmissionStatus (MCANA_DRIVER_BASE)&(basepos << i)))

u8CANFDMsgTxResult [i]= TX_OK;
}
Else if ((0U!=(HW_RD_REG32 (MCANA_DRIVER_BASE + MCAN_TXBAR)&(basepos << i))&&
(0U ==(MCAN_getTxBufTransmissionStatus (MCANA_DRIVER_BASE)&(basepos << I))))

u8CANFDMsgTxResult [i]= TX_NOT_OK;
}

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

    您好 Liu、

    TXBTO 可单独用于指示 TX 状态。

    TXBAR 通过向 TX 缓冲区的相应位写入"1"来发出 TX 请求。  

    如果没有对 TX 缓冲区发出 TX 请求、则无需检查 TX 状态。

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

    尊敬的 Wang:

       我是否可以使用以下代码来证明已发送请求但未能成功发送:

         ((0U!=(HW_RD_REG32 (MCANA_DRIVER_BASE + MCAN_TXBAR)&(basepos << i)))&&(0U =(MCAN_getTxBufTransmissionStatus (MCANA_DRIVER_BASE)&(basepos << i)));μ s

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

    看起来不错。

    •传输成功:

    相应的 Tx 缓冲区传输已发生位 TXBTO.TOx 被置位。  当成功传输后相应的 TXBRP 位清零时、设置 TXBTO 的位。 当通过向寄存器 TXBAR 的相应位写入‘1"来请求新的传输时、会复位这些位。

    相应的 Tx 缓冲区取消已完成位 TXBCF.CFx 未设置

    •传输成功但被取消:

    相应的 Tx 缓冲区传输已发生位 TXBTO.TOx 被置位

    相应的 Tx 缓冲区取消完成位 TXBCF.CFx 置位

    您还可以使用 TRP 寄存器和取消寄存器:

    每个 Tx 缓冲区都有自己的传输请求待处理位。 这些位通过寄存器 TXBAR 进行设置。 在一个请求的传输完成后或已通过寄存器 TXBCR 取消后、这些位会复位。