上面帖子里面有滤波器使用的参考代码,以及功能说明:
CAN1、CAN2如果使用双过滤器设置,可以分别过滤/接收2组CANID数据。
如果个CAN同时使用则最多可以过滤/接收4组CANID数据。
MCU每秒钟从CAN1、CAN2发送一帧固定数据.
收到允许接收的CANID帧数据后,将CAN帧信息、数据通过串口1(P3.0,P3.1)打印出来。
默认波特率500KHz, 用户可自行修改.
下载时, 默认时钟 24MHz (用户可自行修改频率).
- //标准帧,单滤波器
- CanWriteReg(ACR0,(u8)(ACR_ID1>>3));
- CanWriteReg(ACR1,(u8)(ACR_ID1<<5));
- // CanWriteReg(ACR2,(u8)(ACR_ID2>>8)); //过滤数据字节1内容
- // CanWriteReg(ACR3,(u8)(ACR_ID2)); //过滤数据字节2内容
- CanWriteReg(AMR0,0x00); //总线验收屏蔽寄存器
- CanWriteReg(AMR1,0x1F);
- CanWriteReg(AMR2,0xFF); //数据内容不过滤
- CanWriteReg(AMR3,0xFF);
复制代码
- //扩展帧,单滤波器
- CanWriteReg(ACR0,(u8)(ACR_ID5>>21));
- CanWriteReg(ACR1,(u8)(ACR_ID5>>13));
- CanWriteReg(ACR2,(u8)(ACR_ID5>>5));
- CanWriteReg(ACR3,(u8)(ACR_ID5<<3));
- CanWriteReg(AMR0,0x00); //总线验收屏蔽寄存器
- CanWriteReg(AMR1,0x00);
- CanWriteReg(AMR2,0x00);
- CanWriteReg(AMR3,0x07);
复制代码
- //标准帧,双滤波器
- CanWriteReg(ACR0,(u8)(ACR_ID1>>3));
- CanWriteReg(ACR1,(u8)(ACR_ID1<<5));
- CanWriteReg(ACR2,(u8)(ACR_ID2>>3));
- CanWriteReg(ACR3,(u8)(ACR_ID2<<5));
- CanWriteReg(AMR0,0x00); //总线验收屏蔽寄存器
- CanWriteReg(AMR1,0x1F);
- CanWriteReg(AMR2,0x00);
- CanWriteReg(AMR3,0x1F);
复制代码
- //扩展帧,双滤波器
- CanWriteReg(ACR0,(u8)(ACR_ID5>>21));
- CanWriteReg(ACR1,(u8)(ACR_ID5>>13));
- CanWriteReg(ACR2,(u8)(ACR_ID6>>21));
- CanWriteReg(ACR3,(u8)(ACR_ID6>>13));
- CanWriteReg(AMR0,0x00); //总线验收屏蔽寄存器
- CanWriteReg(AMR1,0x00);
- CanWriteReg(AMR2,0x00);
- CanWriteReg(AMR3,0x00);
复制代码
|