分类: LINUX
2011-05-10 14:01:22
1.CAN总线和485总线类似,都是通过2根双绞线传输差分信号来增加通讯距离和抗干扰能力,CAN总线设计的通讯距离更长,可以达到10KM。
2.CAN总线允许多主控制,总线上的设备可以随时发起通讯(485总线一般都是一主多从的方式通讯)
3.因为CAN总线允许多主的方式通讯,而通信通道只有一个,所以必须解决总线的仲裁问题。(网上找到的:CAN解决总线仲裁的问题采用带优先权的非破坏性逐位仲裁机制来解决总线冲突的;对于一个节点想要发送而另一个节点正在发送的总线访问情况,CAN采用的是载波监听技术。这二者共同的基础是CAN总线上一个节点发送的报文可被所有节点(包括自身)监听。带优先权的非破坏性逐位仲裁机制所依赖的其他基础是显性位(“O”)的优先权高于隐性位(“l”),即当一个隐性位和一个显性位同时被发送至总线上时,总线上所出现的结果为一个显性位,“非破坏性”即是对高优先权的“O”而言的。)
4。关于仲裁的简单理解:将要发送的数据打包,增加包头,两个设备同时发送数据的时候,必需先发送包头数据,CAN控制器发送数据的同时接收自己发送的数据,当接收到数据和发送的数据不一致的时候表示冲突,退出发送,等待总线空闲的时候,再次尝试发送。仲裁功能是通过CAN控制器来实现的(当然单片机也可以软件模拟仲裁,只是比较浪费单片机资源,一般都采用专用的CAN控制器),所以一般的CAN系统中,采用单片机+CAN控制器+CAN收发器的模式。
5.CAN控制器的主要功能是总线仲裁,数据重发,错误处理等。CAN收发器的主要功能是将数据转换为差分信号传输,就相当于一个485芯片。网上看到有用can收发器来代替485芯片的用法。
6.发送的数据打包方法,仲裁方法等是有标准的,就是CAN2.0A,CAN2.0B等,这些标准相当于数据链路层的功能,高层的应用协议还需要自己制定。
7.数据的打包分为:数据帧,远程帧,错误帧,过载帧四种。
8.远程帧一般用来请求数据,当然也可以通过数据帧内自定的协议来实现远程帧的功能。远程帧根据需要选用