主题中讨论的其他器件:HALCOGEN
您好!
我想重新配置 CAN 消息框以进行发送和接收。
问题1:
在 canUpdateID 函数中, node->IF2CMD =0xA0U;的目的是什么?
0xA0仅影响 ID 字段、为什么我们在 ID 字段中写入0xA0?


问题2:
我必须修改 canUpdateID 消息以适应某些寄存器文件更改、我已尝试在 HALCOGEN 生成代码时为寄存器分配值、如下所示。 但它不起作用。 没有传输更新对象 ID 后我要尝试传输的第二条消息。 此外、我看到在调试模式下、值不会写入寄存器。 IF2寄存器是否有写保护设置?
void canUpdateID(canBASE_t *node, bool isTx, uint32 messageBox, uint32 can_id)
{
/** - Wait until IF2 is ready for use */
while((*node).CAN_IF2CMD.bit.Busy)
{
} /* Wait */
/** - Configure IF2 for
* - Message direction - Read
* - Data Read
* - Clears NewDat bit in the message object.
*/
//(*node).CAN_IF2CMD.all = 0xA0U;
//
// Set direction to transmit
//
if(isTx)
{
(*node).CAN_IF2CMD.bit.DIR = 1U;
}
else
{
(*node).CAN_IF2CMD.bit.DIR = 0;
}
(*node).CAN_IF2CMD.bit.TxRqst = 0;
/* Copy passed value into the arbitration register. */
//(*node).CAN_IF2ARB.all &= 0x80000000U;
(*node).CAN_IF2ARB.bit.MsgVal = 1;
//node->CAN_IF2ARB.all |= (msgBoxArbitVal & 0x7FFFFFFFU);
(*node).CAN_IF2ARB.bit.MsgVal = 0;
if(isTx)
{
(*node).CAN_IF2ARB.bit.Dir = 1U;
}
else
{
(*node).CAN_IF2ARB.bit.Dir = 0;
}
(*node).CAN_IF2ARB.bit.ID = can_id << CAN_IF1ARB_STD_ID_S;
/** - 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).CAN_IF2CMD.bit.MSG_NUM = messageBox;
/** - Wait until data are copied into IF2 */
while((*node).CAN_IF2CMD.bit.Busy)
{
} /* Wait */
}
此致、
拉什米塔




