主题中讨论的其他器件:TM4C123
大家好、
我正在尝试详细了解 TM4C123器件中的 CAN 模块、以构建 AUTOSAR CAN 驱动器(这与我的毕业项目相关)。
我想知道如何在离开 CAN 控制器的初始化状态之前配置所有硬件消息对象。 例如、如果 RX 需要16个对象、TX 需要其他16个对象。
我无法理解、因为我只有2个 MNUM 字段(在2个命令 REQ 中)。 寄存器)。 如何使用唯一消息。 每个硬件消息对象的对象编号。
此致、
斯里特
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.
大家好、
我正在尝试详细了解 TM4C123器件中的 CAN 模块、以构建 AUTOSAR CAN 驱动器(这与我的毕业项目相关)。
我想知道如何在离开 CAN 控制器的初始化状态之前配置所有硬件消息对象。 例如、如果 RX 需要16个对象、TX 需要其他16个对象。
我无法理解、因为我只有2个 MNUM 字段(在2个命令 REQ 中)。 寄存器)。 如何使用唯一消息。 每个硬件消息对象的对象编号。
此致、
斯里特
谢谢 Charles、
当然、如果与 AUTOSAR 规范没有冲突、我可以使用一些 TivaWare API。
------------------------------------------------------------------
您是说在 ID、屏蔽、TX 或 RX 等其他寄存器中进行所有配置后... 等等
我应该写入 MNUM 值、这样就会将所有设置分配给我指定的报文对象、我可以对另一个对象重复该过程。
对吗?
此致、
斯里特
萨里特
您的理解是正确的。 请参阅 TivaWare CAN 示例、了解这是如何实现的。 下面是用于设置两个消息目标的代码片段。 您可以在中找到此示例 \examples\peripheral\cAN\multi_TX.c
// //初始化报文对象1以能够发送 CAN 报文1。 这种情况 //消息对象不是共享的,因此只需要初始化一个 //时间,和可用于重复发送相同的消息 ID。 // G_sCANMsgObject1.ui32MsgID = 0x1001; G_sCANMsgObject1.ui32MsgIDMask = 0; G_sCANMsgObject1.ui32Flags = MSG_OBJ_TX_INT_ENABLE; G_sCANMsgObject1.ui32MsgLen = sizeof (g_pui8Msg1); G_sCANMsgObject1.pui8MsgData = g_pui8Msg1; // //初始化报文对象2以便能够发送 CAN 报文2. 这种情况 //消息对象不是共享的,因此只需要初始化一个 //时间,和可用于重复发送相同的消息 ID。 // G_sCANMsgObject2.ui32MsgID = 0x2001; G_sCANMsgObject2.ui32MsgIDMask = 0; G_sCANMsgObject2.ui32Flags = MSG_OBJ_TX_INT_ENABLE; G_sCANMsgObject2.ui32MsgLen = sizeof (g_pui8Msg2); G_sCANMsgObject2.pui8MsgData = g_pui8Msg2;