打印
[APM32F1]

APM32F103CAN应用-总线知识

[复制链接]
854|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 宫影空明人不往 于 2023-5-31 19:45 编辑

#申请原创#

前言
大家好,最近在使用APM32F103的开发板进行CAN的应用开发,但是之前没有对此有太多的接触,在网上找资料学习后对CAN的总线知识有了一定的了解,因此对此进行总结并编写此帖。
1.CAN通信原理
CAN全称为控制器局域网络,CAN进行通信只需要用一根总线连接到通讯网络中即可,因此在多个节点进行通信时布线非常简单,同时因为其传输速度快,安全性高等特点,它成为汽车各部件之间通信的主要协议。后续它也用于工业自动化,船舶以及医疗设备和工业设备等方面。
CAN的总线是由两根线组成的,分别为CAN_H和CAN_L,构成差分总线,因此具有很好的抗干扰性。而CAN总线的电平则是两根线的电平差,分别为显性电平和隐性电平。显性电平为逻辑0,隐性电平为逻辑1。
MCU进行CAN总线通信则是CPU通过CAN控制器向CAN收发器传输数据,然后CAN收发器将数据转变成差分信号传输到CAN总线上。

2.CAN数据类型
CAN的数据包又称之为帧,CAN一共有四种帧,分别为数据帧远程帧(遥控帧)错误帧以及过载帧。其中,数据帧的作用就是用来传输数据,而远程帧的作用则是通知对应ID进行发送数据,错误帧则是通知总线上其他节点自身出现的错误,而过载帧则是通知总线上其他节点自身还未准备好进行接收。
其中,用到最多的则是承载数据发送的数据帧,因此主要对数据帧进行介绍。
数据帧一共包括七个部分,如下图所示。该数据帧构成图来自瑞萨出的CAN入门书,对我了解CAN协议有很大帮助,大家也可自行去网上查阅。
言归正传,数据帧有帧起始,仲裁段,控制段,数据段,CRC校验段以及应答段和帧结束段组成。其中:

(1)帧起始段:发送一个显性电平,表示总线从空闲变为忙碌状态。
(2)仲裁段:存放数据帧的ID号,给其他节点用来判断是否接收该数据帧。
(3)控制段:存放该数据帧所携带数据的个数。
(4)数据段:存放该数据帧携带的数据,基础CAN一个数据帧最多只能携带8个字节数据。
(5)CRC段:存放对仲裁段,控制段以及数据段的CRC校验结果,给接收端用来判断是否数据接收正确。
(6)ACK段:给接收段发送应答信号,表示该数据帧被正确接收。
(7)帧结束段:发送连续7个隐性电平,告知其他节点总线回到空闲状态。



3.CAN位时序
CAN一位即一个显性电平或者隐性电平是由4个段组成,分别是同步段传播时间段时间缓冲段1时间缓冲段2。而每一段由若干个时间单元则成(具体多少个时间单元由用户自定义),时间单元的长度就是对CAN时钟分频后的时间。其中,同步段是只能是一个时间单元。


4.CAN通信机制
CAN通信有若干个机制,其中包括总线仲裁以及时钟同步。
总线仲裁时防止若干个单元同时发送数据时造成某些单元的数据丢失。其主要依赖CAN的回读机制,即CAN在发送数据的时候会对总线的电平状态进行读取,与自身发送的数据进行比较,如果发现总线上的电平状态与自身的不一致的话,就会退出发送状态退回到接收状态,因此自身的数据保留了下来,等待下一次总线空闲进行发送。
比如说下图中,在总线空闲的时候,单元1和单元2同时向总线上发送数据,当发送ID的第7位时,单元1往总线上发送的数据为隐性电平,单元2往总线上发送的数据为显性电平,根据线与,总线上呈现的电平状态为显性电平,而单元1回读总线的电平发现与自身发送不一致,因此退出发送状态。

时钟同步则是CAN能够准确的读取总线上的信息的机制。因为CAN是没有时钟线的,因此其需要对总线上的电平变化按照指定好的波特率进行划分,从而得知自身的采样点并将该采样点的电平进行读取。时钟同步分为硬同步和重同步。
硬同步就是在总线空闲的第一个下降沿进行同步,将这个下降沿当做第一位的同步段的位置,后续则按照指定好的位时序进行采样。
重同步则是用来防止传输线路的延迟而导致硬同步后出现不同步的问题。重同步就是在硬同步后的每一个下降沿进行同步,同步的方式就是比较同步段和下降沿是否存在时间差,如果是则对时间段1进行增加或者时间段2进行缩减,从而使得后面的同步段能够刚好落在上升沿或则下降沿中。
同时,为了防止出现长时间不进行重同步,即传输的数据总是同一个电平,没有出现下降沿,CAN协议规定传输5个相同的连续电平后需要发送一个相反的电平。


对于CAN总线的知识就总结到这里,如果在上面没有提及的也可以进行评论交流,后续我会对CAN模块使用以及途中遇到的问题通过帖子记录下来。











使用特权

评论回复
沙发
tpgf| | 2023-6-8 17:10 | 只看该作者
can简直是非常好用的了  速度快可靠性还高

使用特权

评论回复
板凳
caigang13| | 2023-6-8 18:13 | 只看该作者
现在都升级到CANFD了

使用特权

评论回复
地板
chenjun89| | 2023-6-8 23:45 | 只看该作者
支持一下,讲解详细,要是把CANFD也一起讲了就全面了。

使用特权

评论回复
5
木木guainv| | 2023-6-9 08:39 | 只看该作者
CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面

使用特权

评论回复
6
磨砂| | 2023-6-9 09:21 | 只看该作者
现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网

使用特权

评论回复
7
晓伍| | 2023-6-9 09:44 | 只看该作者
CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现像在网络中,因个别节点出现问题,使得总线处于"死锁"状态

使用特权

评论回复
8
八层楼| | 2023-6-9 10:28 | 只看该作者
CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因

使用特权

评论回复
9
观海| | 2023-6-9 10:43 | 只看该作者
CAN网络的数据传输率最大为1Mbps,如果数据传输能力仅使用50%,那么对于一个工作寿命4000小时、平均报文长度为 80位的系统,所传送的数据总量为9×1010。在系统运行寿命期内,不可检测的传输错误的统计平均小于10-2量级。换句话说,一个系统按每年365天,每天工作8小时,每秒错误率为0. 7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。

使用特权

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

本版积分规则

10

主题

11

帖子

0

粉丝