打印
[其他ST产品]

CAN总线学习1--CAN简介

[复制链接]
1133|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CAN总线学习1--CAN
CAN是控制器局域网络(Controller Area Network,CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的现场总线之一。
CAN控制器通过组成总线的两根线(CAN-H和CAN-L)的电位差来确定总线的电平,信号是以两线之间的差分电压形式出现。总线电平分为显性电平和隐形电平。
CAN总线采用两种互补的逻辑数值显性和隐性。显性数值表示逻辑0,隐性数值表示逻辑1。当总线上同时出现显性和阴性位时,最终呈现在总线上的是显性。
CAN总线采用两种互补的逻辑数值表示显性和隐性。显性数值表示逻辑0,隐性数值表示逻辑1。当总线上同时出现显性位和隐性位时,最终呈现在总线上的是显性位。


使用特权

评论回复
沙发
花间一壶酒sd|  楼主 | 2021-10-26 19:39 | 只看该作者

使用特权

评论回复
板凳
花间一壶酒sd|  楼主 | 2021-10-26 19:40 | 只看该作者
在隐性状态下,VCANH和VCAN L被固定为平均电平电压,Vdiff近似为零,此时VCAN H和VCAN L的标称值是2.5V。显性位以大于最小阈值的差分电压表示。VCAN H的标称值是3.5V,VCAN L的标称值是1.5V。

使用特权

评论回复
地板
花间一壶酒sd|  楼主 | 2021-10-26 19:41 | 只看该作者

使用特权

评论回复
5
花间一壶酒sd|  楼主 | 2021-10-26 19:42 | 只看该作者
我们的控制器就是一个CAN节点,其中有两个引脚,一个是CAN接收,一个是CAN发送,通过CAN收发器转换为CAN_L和CAN_H。CAN收发器将TTL电平转换为了CAN总线电平。所有的节点都通过这两根线并联在一块。
当总线空闲时,所有的单元都可以开始发送消息(多主控制)。所有的消息都以固定的格式发送。

使用特权

评论回复
6
花间一壶酒sd|  楼主 | 2021-10-26 19:42 | 只看该作者
二、CAN报文帧结构
在CAN总线上,报文是以"帧"来发送的,CAN的报文传输由5个不同帧类型所表示和控制。

使用特权

评论回复
7
花间一壶酒sd|  楼主 | 2021-10-26 19:46 | 只看该作者
(1)数据帧:数据帧携带数据从发送器至接收器
(2) 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。
(3) 错误帧:任何单元检测到一总线错误就发出错误帧。
(4)帧间空:数据帧通过帧间空间与前述的各帧分开。
(5)过载帧:过载帧用以先行和后续的数据帧(远程帧)之间提供一附加的延时。

使用特权

评论回复
8
花间一壶酒sd|  楼主 | 2021-10-26 19:49 | 只看该作者
其中数据帧由7个不同的域组成。
在CAN总线上,报文是以"帧"来发送的,CAN的报文传输由5个不同帧类型所表示和控制。

使用特权

评论回复
9
花间一壶酒sd|  楼主 | 2021-10-26 19:50 | 只看该作者
(1)帧开始(Start of Frame)
        这个域表示数据帧的开始。仅由一个“显性”位组成.
(2)仲裁域(Arbitration Frame)
        这个域表示一个帧的优先级,仲裁场由标识符和远程发送请求位(RTR位)组成。RTR位在数据帧中为显性,在远程帧中为隐性。
        IDE的全称是“识别符扩展位(Identifier Extension Bit)”,对于扩展格式,IDE位属于仲裁场;对于标准格式,IDE位属于控制场。标准格式的IDE位为“显性”,而扩展格式的IDE位为“隐性”。
(3)控制域(Control Frame):
        这个域表示保留位和数据帧长度代码(DLC),控制场由6个位组成,标准格式和扩展格式的控制场格式不同。标准格式里的帧包括数据长度代码、IDE位及保留位r0。扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。
(4)数据域(Data Frame):
        这是数据内容,0~8个字节的数据能被发送,首先发送最高有效位。
(5)CRC域(CRC Frame):
        这个域用于检查帧的传输错误。
(6)ACK域(CRC Frame):
        是对帧已经被正常接收的一个证实。应答场长度为2个位,包含应答间隙(ACK Slot)和应答界定符(ACK Delimiter)
(7)帧结束(End of Frame):
        指示数据帧结束,这个标志序列由7个“隐性”位组成

使用特权

评论回复
10
花间一壶酒sd|  楼主 | 2021-10-26 19:51 | 只看该作者
、CAN通信波特率
CAN控制器只需进行少量设置就可以进行通信,其中较难设置部分就是波特率计算。CAN总线的波特率是一个范围。假如波特率为250KB/s,实际波特率可能为200~300KB/s.这样使得CAN总线有很强大容错性。

使用特权

评论回复
11
花间一壶酒sd|  楼主 | 2021-10-26 19:51 | 只看该作者
CAN的底层协议里将CAN数据的每一位时间(TBit)分为许多时间段(Tscl)) ,这些时间段包括:

使用特权

评论回复
12
花间一壶酒sd|  楼主 | 2021-10-26 19:52 | 只看该作者
A. 同步段(SYNC_SEG):位变化应该在此时间段内发生。只有一个时间片的固定长度(1 x tq)
B. 位段1(BS1):定义采样点的位置。其持续长度可以在 1 到 16 个时间片之间调整
C. 位段2(BS2):定义发送点的位置。其持续长度可以在 1 到 8 个时间片之间调整
D. 同步跳转宽度(SJW):定义位段加长或缩短的上限。它可以在 1 到 4 个时间片之间调整  

使用特权

评论回复
13
花间一壶酒sd|  楼主 | 2021-10-26 19:52 | 只看该作者

使用特权

评论回复
14
花间一壶酒sd|  楼主 | 2021-10-26 19:53 | 只看该作者

使用特权

评论回复
15
花间一壶酒sd|  楼主 | 2021-10-26 19:55 | 只看该作者

使用特权

评论回复
16
花间一壶酒sd|  楼主 | 2021-10-26 19:57 | 只看该作者
上面设置分频为Prescaler=9,BS1=5,BS2=6,SJW=1
CAN外接是接到APB1上面,设置系统时钟为216MHz时,APB1外设时钟为54MHz.经过分频后的频率为54MHz/9=6MHz = ~~166.666ns
CAN波特率为54MHz/9/(SJW+BS1+BS2 )= 54MHz/9/12 = 500KHz = 2000ns,即500KHz

使用特权

评论回复
17
wiba| | 2021-11-8 13:11 | 只看该作者
感觉它自带的额can不好调试

使用特权

评论回复
18
aoyi| | 2021-11-8 13:16 | 只看该作者
至少需要一个接收端一个发送端才可以进行调试吧

使用特权

评论回复
19
coshi| | 2021-11-8 14:24 | 只看该作者
对它的过滤器总是玩不转啊

使用特权

评论回复
20
zljiu| | 2021-11-8 14:29 | 只看该作者
显性电平和隐形电平是什么意思呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

1129

帖子

2

粉丝