GD32 CAN滤波器设置

1、CAN简介

CAN(Controller Area Network)总线是一种可以在无主机情况下实现微处理器或者设备之间
相互通信的总线标准。
CAN 总线控制器作为 CAN 网络接口,遵循 CAN 总线协议 2.0A 和 2.0B。 CAN 总线控制器可
以处理总线上的数据收发并具有 28 个过滤器, 过滤器用于筛选并接收用户需要的消息。 用户
可以通过 3 个发送邮箱将待发送数据传输至总线, 邮箱发送的顺序由发送调度器决定。并通过
2 个深度为 3 的接收 FIFO 获取总线上的数据,接收 FIFO 的管理完全由硬件控制。 同时 CAN
总线控制器硬件支持时间触发通信(Time-trigger communication) 功能。

2、CAN掩码模式下滤波器设置

      2.1标准帧滤波器分析

一个待接收的数据帧会根据其标识符(Identifier)进行过滤:硬件会将通过过滤的帧送至接收FIFO, 并丢弃没有通过过滤器的帧。标准帧ID为11位(0x000-0x7FF),假设在32位掩码模式下,标准帧的过滤功能原理如下(基于GD32标准固件库):按图4原理要求,预设标识符(list_high和list_low:0x05FF 0000)左移5位后被填写进FxDATA0寄存器中,掩码(0xE000 0004)被填入FxDATA1中,通过过滤器0后绑定到FIFO1。即高16位0x5FF左移5位后填进FxDATA0高16位(0xBFE0),故FxDATA0[31:21]位是:1011 1111 111;同理,32位掩码高16位0x700左移5位, FxDATA1[31:21]位是:1110 0000 000;因此对于CAN接收的标准帧ID的第11位,第10位,第9位满足101即可通过该滤波器被CAN FIFO1接收.

因此0x500-0x5FF均可通过该滤波器,配置代码已附注,滤波器0的寄存器值如图5。区别于扩展帧,标准帧仅需关注SFID[10:0]即可

图4 32-bit 位宽掩码模式过滤器

  /* initialize filter */   

    can_filter.filter_mode = CAN_FILTERMODE_MASK;

    can_filter.filter_bits = CAN_FILTERBITS_32BIT;

<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值