CAN协议

CAN协议,全称为控制器局域网总线(Controller Area Network),是一种广泛应用于汽车、工业控制和其他自动化领域的串行通信协议。

MCU需要两路CAN,一路用于控制器间通讯CAN1,另一路用于诊断和标定CAN2

  1. 控制器间通讯CAN1
    一路用作基本通讯,上面挂载整车控制器,电机控制器和电池管理控制器等节点
  2. 诊断和标定CAN2
    车辆开发过程中通过标定协议XCP读取控制器内部变量或诊断协议UDS服务进行诊断通讯,通常叫做诊断CAN或标定CAN,量产后一般会被禁用

这条需求要求的是2路CAN的情况,那还有其他情况吗?随着汽车智能驾驶功能的增加,主机厂一般会需要再增加一路CAN,即所谓的ADAS CAN。当然也有些控制器只是负责简单的执行功能,这时可能就只需要1路CAN,即与其他控制通讯以及诊断标定共用一路CAN。
在这里插入图片描述
CAN FD的数据场长度。它是指CAN FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节,如下所示
在这里插入图片描述
在这里插入图片描述
这样,标准格式可表示的CAN ID(11位) 范围为 0X000~0X7FF,而扩展格式可表示的CAN ID(29位)范围为0X00000000~0X1FFFFFFF。一般乘用车上常用标准格式的CAN ID,而商用车上常用扩展格式的CAN ID。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
假设目标电机扭矩为0X500,那么根据上表的转换关系,目标电机扭矩的物理值为320Nm。其转换过程为:先0X500转换成十进制为1280,再1280*0.25则为320,默认单位为Nm。以此类推,不难转换其他几个信号。

最后,对于CAN报文协议中的信号,除了控制器之间需要信息交互的信号,可能还包含保护或校验信息,比如校验和(Checksum)和滚动计数器(RollingCounter)。

1)Checksum。它是用来判断CAN报文传输过程是否会出现错误,报文的发送方采用特定的Checksum校验算法计算一条报文的CRC校验码,再将该校验码放到该报文数据中,与报文中的其他信号一起发送到CAN总线。然后报文的接收方会读取到该校验码,同时采用相同的Checksum校验算法计算出CRC校验码,再对比这两个校验码,如果一致,则说明报文传输过程没有出现错误,否则认为报文传输过程有误,这条报文有问题。
2)Rolling counter。它是用来判断报文传输过程是否出现丢帧,报文的发送方发送一条报文就计数器加1,从0累加到15,然后不断循环。如果出现计数器不连续或首尾值不对,报文的接收方会认为丢帧。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值