RS-485只是早期为了解决串行通信(也就是串口)远距离传输的问题,采用差分传输的方式,提高抗干扰性,并且可以大大延长通信距离,比如RS232传输距离一般是30米,而采用RS485,完全不需要修改程序,通信距离可以达到1200米(9600bps)。但这只是物理层的改变,而链路层还是需要用户进行编写,比如校验,分包之类。
CAN总线是上个世纪80年代,博世公司为了解决汽车部件扩展和线缆多而推出的一款现场总线,它不但规定了物理层的差分传输规范,还规定了数据链路层的分包校验规则,而这两个都是由硬件自动完成,并且CAN可以实现多主发送,大大提高了总线利用率,用户编写程序时,可以diyi时间发送,而不需要关心总线上是否有其他节点在发送,只要你设置好优先级就可以了。接收时,无需考虑是否有错误,只要从缓冲区取出数据就行,CAN的CRC校验可以保证错误率在10的-9次方以下。所以CAN是一种先进的通讯方式,国外Z厉害的是德国VECTOR公司,国内做的Z好的是周立功。