STC32G12K/STC32G8K系列2组CAN同时使用当1组CAN使用,最多有4组过滤器
CAN 要【3 ~ 4组 过滤器/筛选器】STC32G12K128 的2组CAN, 每个独立的 CAN,其 过滤器/筛选器,有单滤波、双滤波两种模式。
STC32G8K64 的2组CAN, 每个独立的 CAN,其 过滤器/筛选器,有单滤波、双滤波两种模式。
STC32G144K246 的2组CAN-FD, 每个独立的 CAN-FD,都最大支持16组 过滤器/筛选器 !
===CAN-FD 支持 CAN.
但 STC32G12K128 / STC32G8K64 已过车规认证,已大批量生产
如何 让 STC32G12K128 / STC32G8K64 的CAN 支持【3 ~ 4组 过滤器/筛选器】
===只能 2组 CAN 当 1组 CAN 使用,这样就可以支持 【3~4 组 过滤器/筛选器】
使用双滤波模式一组CAN可以设置2个滤波器,
如果需要设置只接受 3~4个 CANID 数据的话,
可以同时开启两组CAN模块并联接到CAN总线。
附件例子的几种过滤器设置:
//定义过滤器接收的标准帧ID
#define ACR_ID1 0x123
#define ACR_ID2 0x125
//定义过滤器接收的扩展帧ID
#define ACR_ID5 0x12305678UL
#define ACR_ID6 0x1234567aUL
//标准帧,单滤波器
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);
CAN1每秒钟发送一帧报文,CANID从0x342~0x348;CAN2每秒钟发送一帧报文,CANID从0x120~0x125
CAN1只会接收ID=0x123, 0x125的报文,CAN2只会接收ID=0x345, 0x348的报文:
STC32G12K128每个CAN只有2组过虑器是吗?只能设置 接收2个外部的ID对吗? lhj 发表于 2026-1-28 11:41
STC32G12K128每个CAN只有2组过虑器是吗?只能设置 接收2个外部的ID对吗?
STC32G12K128每个CAN的过滤器可以设置成单滤波模式或者双滤波模式。
设置双滤波模式时可以设置2个ID过滤规则。 有例程和应用吗?
页:
[1]