找回密码
 立即注册
查看: 284|回复: 4

STC32G12K/STC32G8K系列2组CAN同时使用当1组CAN使用,最多有4组过滤器

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:651
  • 最近打卡:2026-03-31 10:58:01
已绑定手机

52

主题

2527

回帖

8888

积分

论坛元老

积分
8888
发表于 2026-1-15 18:06:20 | 显示全部楼层 |阅读模式
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总线。
截图202601151757403433.jpg

附件例子的几种过滤器设置
  1. //定义过滤器接收的标准帧ID
  2. #define ACR_ID1    0x123
  3. #define ACR_ID2    0x125
  4. //定义过滤器接收的扩展帧ID
  5. #define ACR_ID5    0x12305678UL
  6. #define ACR_ID6    0x1234567aUL
  7.         //标准帧,单滤波器
  8.         CanWriteReg(ACR0,(u8)(ACR_ID1>>3));
  9.         CanWriteReg(ACR1,(u8)(ACR_ID1<<5));
  10. //        CanWriteReg(ACR2,(u8)(ACR_ID2>>8));   //过滤数据字节1内容
  11. //        CanWriteReg(ACR3,(u8)(ACR_ID2));      //过滤数据字节2内容
  12.         CanWriteReg(AMR0,0x00);                //总线验收屏蔽寄存器
  13.         CanWriteReg(AMR1,0x1F);
  14.         CanWriteReg(AMR2,0xFF);     //数据内容不过滤
  15.         CanWriteReg(AMR3,0xFF);
  16.         //扩展帧,单滤波器
  17.         CanWriteReg(ACR0,(u8)(ACR_ID5>>21));
  18.         CanWriteReg(ACR1,(u8)(ACR_ID5>>13));
  19.         CanWriteReg(ACR2,(u8)(ACR_ID5>>5));
  20.         CanWriteReg(ACR3,(u8)(ACR_ID5<<3));
  21.         CanWriteReg(AMR0,0x00);                //总线验收屏蔽寄存器
  22.         CanWriteReg(AMR1,0x00);
  23.         CanWriteReg(AMR2,0x00);
  24.         CanWriteReg(AMR3,0x07);
  25.         //标准帧,双滤波器
  26.         CanWriteReg(ACR0,(u8)(ACR_ID1>>3));
  27.         CanWriteReg(ACR1,(u8)(ACR_ID1<<5));
  28.         CanWriteReg(ACR2,(u8)(ACR_ID2>>3));
  29.         CanWriteReg(ACR3,(u8)(ACR_ID2<<5));
  30.         CanWriteReg(AMR0,0x00);                //总线验收屏蔽寄存器
  31.         CanWriteReg(AMR1,0x1F);
  32.         CanWriteReg(AMR2,0x00);
  33.         CanWriteReg(AMR3,0x1F);
  34.         //扩展帧,双滤波器
  35.         CanWriteReg(ACR0,(u8)(ACR_ID5>>21));
  36.         CanWriteReg(ACR1,(u8)(ACR_ID5>>13));
  37.         CanWriteReg(ACR2,(u8)(ACR_ID6>>21));
  38.         CanWriteReg(ACR3,(u8)(ACR_ID6>>13));
  39.         CanWriteReg(AMR0,0x00);                //总线验收屏蔽寄存器
  40.         CanWriteReg(AMR1,0x00);
  41.         CanWriteReg(AMR2,0x00);
  42.         CanWriteReg(AMR3,0x00);
复制代码
CAN1每秒钟发送一帧报文,CANID从0x342~0x348;CAN2每秒钟发送一帧报文,CANID从0x120~0x125
CAN1只会接收ID=0x123, 0x125的报文,CAN2只会接收ID=0x345, 0x348的报文:
截图202601151801412334.jpg

CAN1-CAN2同时连接总线最多可用4组过滤器.zip

131.27 KB, 下载次数: 10

回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:627
  • 最近打卡:2026-03-31 07:56:25

15

主题

192

回帖

2330

积分

金牌会员

积分
2330
发表于 2026-1-28 11:41:55 | 显示全部楼层
STC32G12K128每个CAN只有2组过虑器是吗?只能设置 接收2个外部的ID对吗?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:651
  • 最近打卡:2026-03-31 10:58:01
已绑定手机

52

主题

2527

回帖

8888

积分

论坛元老

积分
8888
发表于 2026-1-28 15:00:25 | 显示全部楼层
lh*** 发表于 2026-1-28 11:41
STC32G12K128每个CAN只有2组过虑器是吗?只能设置 接收2个外部的ID对吗?

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:627
  • 最近打卡:2026-03-31 07:56:25

15

主题

192

回帖

2330

积分

金牌会员

积分
2330
发表于 2026-1-29 14:40:29 | 显示全部楼层
有例程和应用吗?

点评

1楼帖子后面附件有例子  发表于 2026-1-29 16:03
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-4-1 06:15 , Processed in 0.107218 second(s), 60 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表