国内抄袭乱象
在正文之前,先插一句!
能想到吗?就电子学领域的这些自媒体文章或视频、差不多有一多半都是抄袭的,比如这个在硬件领域有不小影响力的@张飞实战电子,就是一个惯犯,是抄袭我视频最多的,反反复复抄袭我的视频。张飞老师是一点脸都不要了!那我就做好长期指控它们的准备,注意是它们。
有的图片不知道被来来回回抄袭了多少次。 比如说我这个CAN通讯的视频估计得有几百家抄袭的。
对于抄袭的内容,很多观众是不知道的,甚至以为是它们原创的。
那今天我也发布一篇关于CAN通讯的原创视频,虽然写的很一般,但无论是文案还是图片,都是我本人原创。
如果你原创的东西看多了,再看抄袭的,你可能就看不下去了。
好了,正文开始。
CAN通讯到底是如何工作的!
CAN 总线应用最多的是汽车领域,CAN是Controller Area Network的首字母缩写,意思是控制器局域网。
局域网想必大家都很熟悉,就是把几台电脑连到一个路由器上,这几台电脑就可以进行通讯了。
那CAN和这个也类似,这里的控制器在汽车中的专业术语叫ECU,意思是电子控制单元,它可以看做是一台超小型的计算机,它内部集成了供电系统、单片机、驱动系统,是汽车里面最小的控制模块,为了能让ECU之间进行通讯,人们设计了一种CAN协议。
CAN总线在最开始是为了减少铜线的长度而开发的,而如果不使用CAN总线,那将使用数倍长的铜线,而且线束还非常杂乱。
而通过CAN,这么多ECU只需要挂载到CAN总线上,就可以组成局域网通讯了,大大减少了线束的长度。
那接下来我们就来说一下,CAN总线到底是如何通讯的。
要进行CAN通讯,需要专门的CAN收发芯片。
这是单片机的发送和接收线,它的逻辑1是高电平,逻辑0是低电平,这种普通逻辑我们很好理解。
但是经过CAN收发器之后,普通信号就会被转化为差分信号。
差分线是用两根线表示一个信号,如果我们给它发送一个低电平,它的两根线分别输出3.5V和1.5V,它们的电压差是2V,这是显性电平,表示逻辑0。
而当我们给它发送高电平时,它的两根线输出的都是2.5V,压差是0V,表示逻辑1。
这就是差分信号。
同样的,CAN收发器也可以把接受到的差分信号,转化成普通电平信号,然后再发给单片机。
那采用差分信号有什么好处呢?
如果是普通信号,它只有一根线,当某一点受到干扰,它的电平就会发生跳变,这样就会导致传输就会出现错误,所以不能进行长距离传输。
而CAN通讯采用的差分信号是两根线共同作用,而且是双绞线缠绕,这样即使是受到干扰,也是两根线同时受到干扰,它们的压差也会保持不变,这样就能保证传递的信息不受干扰,所以CAN信号可以传输的距离很长,可达1000米。
那接下来我们就来说一下CAN通讯到底在传递什么。
可以看一下,这是一帧标准的数据帧。
第一位是起始位,它一定得是逻辑0。
接下来的11位是识别码,根据这11位识别码,就能知道这一帧信息是发给哪一个设备的,每一个设备都有属于自己的11位识别码。
接下来的一位是用来区分数据帧或者远程请求帧,如果是远程请求帧,这一位是1,而我们这是一串数据帧,这里就必须得是0.
接下来的6位是控制码,它是控制数据长度的。
先说它的第一位 IDE位,用来区分标准格式和拓展格式。
在标准格式当中,有11位识别码,这一位是逻辑0。
而在拓展格式中,它的识别码有29位,这一位是逻辑1。
下面一位是预留位(一般用不到),它是逻辑0。
接下来的4位是DLC位,DLC即数据长度代码。
它的二进制编码是0-8。
如果是1,则后面的数据位就只有1个字节、8位;而如果它的值是8,则后面的数据位就是8个字节、64位。
接下来是16位CRC码,即循环冗余校验位,它是为了确保数据的准确性而设置的。
首先是15位CRC校验码,设备接收端会根据数据计算出它的CRC位,如果计算出来的和接收到的CRC不一致,说明数据存在问题,就会重新发送一遍数据帧。
下面一位是CRC的界定符,它是逻辑1,目的是为了把后面的信息隔开。
然后是两位ACK码,第一位是ACK确认槽,发送端发送的是逻辑1,而接收端回复的是逻辑0来表示应答,第二位是ACK界定位,它一定是逻辑1,作用是把后面的数据隔开。
最后是7位结束位,这7位都是逻辑1,表示数据帧传输结束。这就是一串标准数据帧,如果用差分信号表示,它的电平是这样的。
因为CAN总线上挂载了很多设备,如果是两个设备同时发送信息,此时哪一个设备发送的信息优先呢?
这就得看11位的识别码了,它不仅是设备的身份证号,而且还代表了优先级。
比如这两帧数据是同时发出的,那应该以哪一个为准呢?
当总线上同时出现逻辑0和逻辑1是,总线会被置位逻辑0,此后上面那个数据帧就不会再发送了。
好了这就是我对CAN通讯的理解,希望对你理解有帮助。