CAN总线通信

定义:

国际标准化串口通信协议。通过多个LAN网关进行数据的交换,进行大量数据的高速通信。

汽车里面CAN总线通信的速率不一样,包括CPU+CAN控制器+CAN收发器,常用闭环500kbps。

特点:

多主控制,没有主从之分。空闲时,最先访问总线单元可获得发送权。多个单元同时开始发送时,发送高优先级ID消息单元可获得发送权,所有的消息都以固定的格式发送。

系统的柔软性,与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其他单元的软硬件及应用层都不需要改变。

通信速度,根据整个网络的规模,可设定合适的通信速度。在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其他的不一样,此单元也会输出错误信号,妨碍整个网络通信。不通网络间则可以有不通的通信速度。

远程数据请求,通过发送遥控帧,请求其他单元发送数据。

错误检测功能,错误通知功能,错误恢复功能,所有单元都可以检测错误,检测出错误的单元会立即通知其他所有单元。正在发送消息的单元一旦检测出错误,会强制结束当前的发送,强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止。

故障封闭,CAN可以判断出错误的类型是总线上暂时的数据错误还是持续的数据错误。由此功能当总线上发生持续错误时,可将引起此故障的单元从总线上隔离出去。

连接。CAN总线是同时连接多个单元的总线。可连接的单元总数理论上没有限制,但实际上可连接的单元总数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加。

几个重点:

1、隐性逻辑1时,CAN_H和CAN_L的电平为2.5V,电位差为0。显性时逻辑0,CAN_H和CAN_L的电平分别为3.5V和1.5V,电位差为2.5V。

抗干扰能力强,两根线同时受到干扰。

2、数据帧类型

(1)标准数据帧,0帧起始,发送12位仲裁字段(11位ID号,1位遥控帧还是数据帧),6位控制字段(1位判断是标准帧还是扩展帧,加四位数据长度代码),最大可发送8字节的数据字段,16位CRC字段校验码,两位的确认应答字段,7位帧结束字段。

(2)扩展数据帧,ID号更长。

(3)标准远程帧,没有数据帧。

(4)扩展数据帧,ID号更长。

在STM32里面都有相应的寄存器设置。

3、位时间特性

CAN总线上所有的器件都必须使用相同的比特率。时间段1、时间段2的寄存器设置。CAN波特率=系统时钟/分频数/(1*tq+tBS1+tBS2),

其中,tBS1=tq*(TS1[3:0]+1)      tBS2=tq*(TS1[2:0]+1)     tq=(BRP[9:0]+1)*tPCLK

这里的tq表示一个时间单元,tPCLK=APB时钟的时间周期,TS1[3:0]等在CAN——BTR寄存器中定义

tBS1>=tBS2,tBS2>=1个CAN时钟周期,tBS2>=2tSJW.有个CAN列表设置波特率。

4、屏蔽滤波

(1)屏蔽位模式,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,必须按照必须关心或不用关心处理。

(2)标识符列表模式,屏蔽寄存器也被当做标识寄存器用,因此,不是采用一个标识符加一个屏蔽位的模式,而是使用两个标识符寄存器。接收报文标识符的每一位都必须跟过滤标识符相同。

为过滤一组标识符,应该设置过滤组工作在屏蔽位模式,模糊的查询。

为了过滤一个标识符,应该设置过滤组工作在标识符列表模式。写的是什么就接收。

5、bxCAN工作模式,初始化、正常、睡眠模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值