CAN学习笔记

参考:

一.can

普通CAN最大速率 1MBit/s,单帧最多8字节传输,CANFD最大速度8MBit/s,单帧最多64字节传输

1.Can标准帧格式

image.png

  1. 帧起始位SOF

SOF 值规定为 1,标识此帧的开始。在 CAN 总线协议中约定,值 0 为显性位,值 1 为隐性位("显灵“)

  1. 仲裁段Arbitration field

FlexCAN 采取多主机、基于优先级的总线传输方式,总线帧的收发顺序在 Arbitration field 仲裁段确定。如果不设置使用帧的优先级进行仲裁,则使用帧的 ID 号进行仲裁比较,越小优先级越高

  - ID
  - RTR:帧类型
  1. 控制段Control filed
    • IDE:帧格式
    • FDF:此帧是否为 CAN FD 帧
    • DLC:有效数据字节数
  2. 有效传输数据Data field

如果此帧为远程帧,将不携带任何数据,所以 DLC 字段对应为 0;如果此帧为数据帧,此段长度由 DLC 字段控制

  1. 循环冗余码段CRC field

用于在发送和接收流程中检查此帧是否出现比特错误

  1. ** **检测段ACK field

发送方会发送隐性位 1,然后在此段期间回读总线上信号。如果读到为显性位 0,则说明有其他 CAN 接收器接收到此帧,发送方发送成功

  1. ** 结束位EOF**

    标识发送结束

2.Can标准帧和扩展帧格式

image.png

  • **RTR:**远程发送请求位,数据帧为显性0,远程帧为隐性1。
  • **SRR:**代替远程请求位(在扩展格式中在RTR位置,所以得此名),该位为隐性位。在这个地方占个位以保持标准帧和扩展帧IDE对齐,便可以判断标准帧优先于扩展帧。
  • **IDE:**标识符扩展位,标准帧为显性0,扩展帧为隐性1。
  • **R0、R1:**保留位。
  • **DLC:**数据长度位。
  • **CRC:**校验位。
  • **CRC分隔符:**隐性位
  • **ACK:**应答位和应答界定位。在应答域中,发送器发出两个隐性位。接收器接收到报文后,在应答位期间,用显性位填充应答位作为回应,应答界定则为保持隐性。
  • **帧结束:**由7个隐性位组成。

3.FlexCan信息缓冲区结构图(4*32bit = 128bit)

image.png

EDL
BRS速率转换,
ESI发送节点错误状态指示,0主动错误/1被动错误
FDF0传统帧/1canfd帧
CODE数据缓冲区状态
IDE0标准帧/1扩展帧
SRR占位,一般为隐形1
RTR0数据帧/1远程帧,保证数据帧的优先级高于远程帧
DLC有效数据长度,最大8字节
PRIO优先级0-7,0优先级最大,

image.png
示例:
MB0:缓冲区配置
0x0c480000 标准数据帧 数据发送8个字节
0 0 0 0 | 1 1 0 0 | 0 1 0 0 | 1 0 0 0
EDL BRS ESI FDF CODE = 0x0c SRR IDE RTR DLC
| 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0
< 时间戳 >
MB1:放置ID
0 0 0 0 | 1 1 0 0 | 0 1 0 0 | 1 0 0 0
< PRIO > < ID区域 >
| 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0

MB2:有效数据区域
0 0 0 0 | 1 1 0 0 | 0 1 0 0 | 1 0 0 0
**< 字节1 > < 字节2 > **
| 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0
< 字节3 > < 字节4 >
MB3:有效数据区域
0 0 0 0 | 1 1 0 0 | 0 1 0 0 | 1 0 0 0
< 字节5 > < 字节6 >
| 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0
< 字节7 > < 字节8 >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值