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.

[参考译文] TMS570LS1227:在重新配置 DCAN 消息对象时使用 MsgVal 位

Guru**** 1785650 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/1403224/tms570ls1227-use-of-msgval-bit-in-reconfiguration-of-dcan-message-object

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

工具与软件:

您好!

我一直在查阅技术参考手册、了解初始化后消息对象的重新配置。 第12.7.6节和第12.7.7节指定了在更改消息中某些值的配置之前必须复位 MsgVal 位。

我一直在使用下面由 HALCoGen 生成的代码来更新被配置为接收的报文对象的 ID。 根据手册、如果 MsgVal 位不被复位为无效、则不能更改接收对象的 ID 位、但是根据我对该函数的理解、该函数 在更改 ID 之前不会出现复位 MsgVal 位、但是该函数仍在正确地更新 ID。  

我打算更新手册中列出的一些其他值、因为需要 MsgVal 复位、但 canUpdateID 函数让我对何时需要 MsgVal 复位以及复位的外观感到困惑。

void canUpdateID(canBASE_t *node, uint32 messageBox, uint32 msgBoxArbitVal)
{

    /** - Wait until IF2 is ready for use */
    while ((node->IF2STAT & 0x80U) ==0x80U)
    {
    } /* Wait */

	/** - Configure IF2 for
	*     - Message direction - Read
	*     - Data Read
	*     - Clears NewDat bit in the message object.
	*/
	node->IF2CMD = 0xA0U;
	/* Copy passed value into the arbitration register. */
	node->IF2ARB &= 0x80000000U;
	node->IF2ARB |= (msgBoxArbitVal & 0x7FFFFFFFU);

    /** - Update message box number. */
    /*SAFETYMCUSW 93 S MR: 6.1,6.2,10.1,10.2,10.3,10.4 <APPROVED> "LDRA Tool issue" */
    node->IF2NO = (uint8) messageBox;

    /** - Wait until data are copied into IF2 */
    while ((node->IF2STAT & 0x80U) ==0x80U)
    {
    } /* Wait */

}

请对这一问题作出任何澄清。

此致、

Garrett