主题中讨论的其他器件:HALCOGEN、 TMS570LC4357
你(们)好
我很难理解在将控制器与 Rx FIFO 搭配使用时如何利用硬件掩码来过滤 CAN 消息。
请注意、我在项目中使用的是 Autosar MCAL、但我不确定它如何与 HALCOGEN 配合使用。
下面是我在 DCAN0上的当前设置:
1个 RX 邮箱,在 MCAL 中声明为基本邮箱,有8条信息
-56个 TX MAIbox 配置为满
ECU 连接总线上循环的 CAN 消息的所有 ID 都是标准的(11位长)。
当对 ECU 必须接收的 ID 值进行或运算时、等于0x7F7
邮箱的设置如下:
CAN_MailboxType CANConfigSet_0_CanHardwareObject_0 =
{
1U、/* CanHandleType 0=Full、1=Basic */
0U、/* CanIdType 0=标准1=扩展2=混合*/
0x7FF、//832U、/*扩展 ID 值将设置 MSB */
0U、/* CanObjectId -保留句柄 ID、以便 CAN 用户对指定对象句柄执行 IO *
1U、//硬件对象索引,FIFO*/中的第一个对象
8U、/*=1 =>单个对象、否则 FIFO 从开始 *
0U、/* CanObjectType -邮箱方向、0= Rx 或1= Tx*/
false,/* CanTriggerTransmitEnable -不使用此参数*/
&CANConfigSet_0_CANcontroller_0、/*控制器*/
0U、/* CanHwFilterCode -此参数未使用*/
0x7F7、/* CanHwFilterMask *
8U /*邮箱的长度*/
};
如果掩码设置为0、则接收所有消息。
屏蔽设置为0x7F7时 、不会接收到列表中的任何消息、但会接收到 ID 为0x7F7的虚拟消息。
当掩码设置为列表中的某个 ID 时、仅接收具有此 ID 的消息。
邮箱的运行方式类似于"完整"邮箱类型。
我需要能够滤除一些流量、因为我的 FIFO 大小不足以包含每个处理循环期间接收到的所有消息。
其中一些消息需要被清除、它们会被丢弃、从而导致问题。
提前感谢您的帮助。
此致
SEB