又到过节了,再找一个题目,写写CAN总线吧。呵呵
从说明书上来表示,CAN总线包括:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层等7个层次。。。
容易把人弄晕。。。呵呵呵。。
实际上,没有这么复杂,如果熟悉485的话,可以用485来做一个比较。。呵呵。。。
一。从硬件角度来说。485 与 CAN 总线的传输,都是由两根线来完成的。
485 的两根线是A,B. 而CAN的两根线是CANH,与CANL。
两者都可以有通讯速率的选择:
485 一般按照串口波特率的方式,2400,4800,9600,19200.。。等。。。数字越大,每秒钟传输的字节数也就越多,速度也就越快。当然对线路质量要求也就越高。。。就像你们家的网速。。。呵呵。。
同样 CAN总线,也有通讯速率的选项。CAN总线选项比较少,有 100K,500K,1000K等几种,以后是不是还会发展更高速,那是以后的事了。。
485 的传输是,当A比B高,C的逻辑为1.当B比A高,C的逻辑为0.。。(如上图所示)。
而 CAN总线却不是这样。。(也如上图)。。
CAN总线上面的电平叫显性电平,和隐性电平。。
如下图:
如图,通常情况下,CANH与CANL的电平都是2.5V,通过一个与门,C的逻辑为1.(这个我也嘀咕,假如两个都是5V,也就是高电平,也就是两个逻辑1相与,结果C的逻辑肯定是1无疑。两个2.5V "相与”,结果也是1么??----当然人家这么用着没有问题,咱也就接受了吧。)-------这个叫做隐性电平。。表示1
而当数据变化时,CANH变为3.5V,CANL变成1.5V,从逻辑上来看,CANH为1,CANL为0,相与的结果,C的逻辑为0.。。。叫做显性电平。。表示0
CAN 通讯,就是借用这种办法,来界定0和1.。。
没人看么??可能稍难了一点。也可能很多人暂时接触不到。。
下面继续。。
CAN的电气特性,幸好不是我们用普通电路搭建,如果用普通电路搭建,再用程序处理来往数据的话,会十分麻烦。。。
如图,CAN有专用芯片来处理CAN点 与CAN点之间的通讯,我们用PC只需通过普通的232口跟CAN芯片进行数据交换。这点跟485有些类似。。
不过是485的电气功能简单。
比如说,485 是邮局,我们把包裹放进邮局,邮局就把我们的邮件原封不动发到对方手中。。
而CAN 类似散货收件员,你把你的东西交给收件员,他替你按照他的格式包装好,发过去,另外一边的收货员再解包,成散货的形式,再给你的客户。
CAN 比485多了一个打包的功能。。这样的功能是,CAN与CAN之间的通讯,不需要人为编程控制,可以保证数据传递最优化。