CAN 是Controller Area Network 的缩写(以下称为CAN),它的设计目标是以最小的CPU负荷来高效 处理大量的报文。1986 年德国电气商BOSCH公司开发出面向汽车的CAN 通信协议。此后,CAN 通过 ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。现在,CAN 的高性能和 可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。
CAN协议特点:
多主控制:
在总线空闲时,所有节点均可发送信息。如果出现两个及以上节点同时开始发送信息时,总 线会根据标识符(Identifier 以下称为 ID)进行仲裁,ID 越小则优先级高,则仲裁优胜,仲 裁优胜的节点继续发送,仲裁失利的节点立即转入接收状态。需注意,ID 并不是表示节点 地址,而是指示所发送的报文的优先级。
系统的灵活性:
如上所述,与 CAN 总线的各节点没有类似于“地址”的信息。因此在总线上增减节点时,连 接在总线上的其它节点的软硬件设计均不受影响。
高可靠性:
CAN 协议具有错误检测、错误通知、故障封闭和错误恢复功能。CAN 总线上的任意节点均 可检测错误(错误检测);检测到错误后向总线发送错误帧以通知其他节点(错误通知 一个节点出错其他节点都收到通知);同 时每个节点内部有一个错误计数功能,每次检测到错误之后,错误计数值累加,当某节点持 续错误导致计数连续累加,直到大于 256 后,此故障节点从总线上断开,避免影响其他节 点(故障封闭)。且发送节点如果在发送信息的过程中检测到错误,待错误结束后会自动重 发此信息直到成功发送(错误恢复)。
通信速度较快,通信距离远:
最高 1Mbps(距离小于 40m),最远可达 10km(速率低于 5Kbps)。
主要特性:波特率最高可达1M bit/s/
发送
- 3 个发送邮箱
- 发送优先级可以配置
- 支持发送时间戳
接收
CAN 过滤器使用说明
- 2个深度为3的FIFO
- 14组过滤器组
- 支持列表模式
- 支持掩码模式
- 支持FIFO溢出管理
时间触发通信模式
- 16位定时器
- 发送时间戳
CAN时钟来源以AT32F415CBT7为例
CAN 过滤器相当于关卡,每当收到一条报文时,CAN 要先将收到的报文从这些过滤器上"过滤"一下,能通 过的报文是有效报文,收进相关联 FIFO(FIFO0 或 FIFO1),不能通过的是无效报文直接丢弃。 AT32F4 同 时支持 CAN2.0A 和 CAN2.0B 协议,即过滤器组支持 11 位标准格式 CAN 和 29 位扩展格式 CAN 标识符。 每个 CAN 控制器提供 14 个位宽可变、可配置的过滤器组(0~13),用以对接收到的帧进行过滤。 每组过滤器包括了 2 个 32 位寄存器:CAN_FiFB1 和 CAN_FiFB2,通过配置 CAN 过滤器位宽配置寄存器 (CAN_FBWCFG)的对应位,设置过滤器位宽为 2 个 16 位或者单个 32 位。
2个寄存器都可以配置0-13,模式和位宽设置,每一位对应一个过滤器组总共14个
R是relation
A是active
掩码,掩码要有掩码,要有ID,标识符全部是ID