乘风飞扬 发表于 2026-1-15 18:06:20

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的报文:

lhj 发表于 2026-1-28 11:41:55

STC32G12K128每个CAN只有2组过虑器是吗?只能设置 接收2个外部的ID对吗?

乘风飞扬 发表于 2026-1-28 15:00:25

lhj 发表于 2026-1-28 11:41
STC32G12K128每个CAN只有2组过虑器是吗?只能设置 接收2个外部的ID对吗?

STC32G12K128每个CAN的过滤器可以设置成单滤波模式或者双滤波模式。
设置双滤波模式时可以设置2个ID过滤规则。

lhj 发表于 2026-1-29 14:40:29

有例程和应用吗?

页: [1]
查看完整版本: STC32G12K/STC32G8K系列2组CAN同时使用当1组CAN使用,最多有4组过滤器