主题中讨论的其他器件:TCAN4550
您好!
我已经尝试了以下滤波机制选项:
- 按照以下步骤设置高优先级消息:
这正常工作
TCAN4x5x_MCAN_SID_Filter SID_ID ={0};
SID_ID.SFT = TCAN4x5x_SID_SFT_Classic; // SFT:标准滤波器类型。 配置为经典滤波器
SID_ID.SFEC = TCAN4x5x_SID_SFEC_PRIORITYSTORERX0; //标准滤波器元件配置,将其作为优先级消息存储在 RX FIFO 0中
SID_ID.SFID1 = 0x055; // SFID1 (经典模式滤波器)
SID_ID.SFID2 = 0x7FF;
//此处,应写入0x0800的字将成为0xA85507FF 设置0x55的高优先级消息
TCAN4x5x_MCAN_WriteSIDFilter (0、&SID_ID); //写入 MRAM
上述语句变为 TCAN4x5x_MCAN_WriteSIDFilter (0、0xA85507FF);
在上面的代码中、我观察到0x55报文被视为高优先级报文、并且被存储在 RXFIF O 和中断寄存器(0x1050)中、我可以看到 HPM 位被设置为1。
2.通过设置以下提及的选项来拒绝特定的消息 ID
这正常工作
TCAN4x5x_MCAN_SID_Filter SID_ID ={0};
SID_ID.SFT = TCAN4x5x_SID_SFT_Classic; // SFT:标准滤波器类型。 配置为经典滤波器
SID_ID.SFEC = TCAN4x5x_SID_SFEC_REJECTMATCH; //标准滤波器元件配置,将其作为优先级消息存储在 RX FIFO 0中
SID_ID.SFID1 = 0x055; // SFID1 (经典模式滤波器)
SID_ID.SFID2 = 0x7FF;
//此处应写入0x0800的字将变为0x985507FF 设置以拒绝0x55消息
TCAN4x5x_MCAN_WriteSIDFilter (0、&SID_ID); //写入 MRAM
上述语句变为 TCAN4x5x_MCAN_WriteSIDFilter (0、0x985507FF);
3.必须通过设置以下选项匹配消息 ID
这正常工作
TCAN4x5x_MCAN_SID_Filter SID_ID ={0};
SID_ID.SFT = TCAN4x5x_SID_SFT_DUALID; // SFT:标准滤波器类型。 配置为经典滤波器
SID_ID.SFEC = TCAN4x5x_SID_SFEC_STORERX0; //标准滤波器元件配置,将其作为优先级消息存储在 RX FIFO 0中
SID_ID.SFID1 = 0x055; // SFID1 (经典模式滤波器)
SID_ID.SFID2 = 0x055;
//此处应写入0x0800的字将变为与 ID 0x55消息匹配的0x48550055设置
TCAN4x5x_MCAN_WriteSIDFilter (0、&SID_ID); //写入 MRAM
上述语句将变为 TCAN4x5x_MCAN_WriteSIDFilter (0、0x48550055);
以下设置对我不起作用:
4. 通过设置以下提及的选项接受 ID 消息的范围
这不能正常工作
TCAN4x5x_MCAN_SID_Filter SID_ID ={0};
SID_ID.SFT = TCAN4x5x_SID_SFT_RANGE; // SFT:标准滤波器类型。 配置为经典滤波器
SID_ID.SFEC = TCAN4x5x_SID_SFEC_STORERX0; //标准滤波器元件配置,将其作为优先级消息存储在 RX FIFO 0中
SID_ID.SFID1 = 0x055; // SFID1 (经典模式滤波器)
SID_ID.SFID2 = 0x055;
//此处,应写入0x0800的字将变为0x08550202设置,以接受0x055到0x202的消息
TCAN4x5x_MCAN_WriteSIDFilter (0、&SID_ID);
上述语句变为 TCAN4x5x_MCAN_WriteSIDFilter (0、0x08550202);
5.仅接受范围0x055 ID 消息,并通过设置以下选项将其存储在 RX FIF 0中
这不能正常工作
TCAN4x5x_MCAN_SID_Filter SID_ID ={0};
SID_ID.SFT = TCAN4x5x_SID_SFT_Classic; // SFT:标准滤波器类型。 配置为经典滤波器
SID_ID.SFEC = TCAN4x5x_SID_SFEC_STORERX0; //标准滤波器元件配置,将其作为优先级消息存储在 RX FIFO 0中
SID_ID.SFID1 = 0x055; // SFID1 (经典模式滤波器)
SID_ID.SFID2 = 0x7FF;
//此处应写入0x0800的字将变为0x885507FF 设置,以仅接受 ID 为0x055的消息
TCAN4x5x_MCAN_WriteSIDFilter (0、&SID_ID);
上述语句变为 TCAN4x5x_MCAN_WriteSIDFilter (0、0x885507FF);
有人能不能告诉我4个和5个测试用例中哪里出错了。
谢谢
Siva