主题中讨论的其他器件: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 */ }
此致、
拉什米塔