请教 CAN-BUS的协议 种类和它们的关系
最近在学习CAN-BUS,看书时看到CAN有各种标准,SAE J1939-11,SAE J2284 , DeviceNet, CANopen, SDS等。如下图。但是在看CAN控制器时,如MCP2515的datasheet时,提到支持CAN2.0A/2.0B。
所以我就迷糊了,这CAN 2.0和CANopen等标准是什么关系,我在选择CAN芯片时需要注意些什么。请高手指点!
http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_426642.jpg
(原文件名:1212.jpg) 先有CAN2.0A/2.0B ,再有SAE J1939-11、SAE J2284 、 DeviceNet、CANopen、SDS等
如果是刚开始搞这个通讯,可以自己整个简单的协议:滤波器和数据帧这两块是重点。 CAN2.0是协议标准,无论是用何种协议,帧格式都是符合这个标准的
saeJ1939是卡车用通讯协议
CANopen是面向对象通讯协议
SDS最早是海军用的通讯协议
举个例子:CAN2.0规范是路,而各种协议则是在路上跑的车,无论自行车还是汽车,都要顺着路走
选择CAN芯片基本要看你用在什么地方了,汽车上用freescale或瑞萨
高速或者低速决定用哪个物理层接口芯片 补充以下:NMEA-2000是用在美国海军的协议,复杂的很,国内用的较少 我把我看的这份CAN-BUS入门资料也上传上来,其中讲得还挺详细的。
点击此处下载 ourdev_426646.pdf(文件大小:1.87M) (原文件名:CAN入门书.pdf) 谢谢,erxun 老孟和lnskngdc!
我是否可以理解,只要支持CAN2.0A/2.0B的驱动芯片和控制芯片就可以应用在SAE J1939-11、SAE J2284 、 DeviceNet、CANopen、SDS等这些标准协议中?至于具体用哪个协议,是程序的事情了
老孟提到“可以自己整个简单的协议:滤波器和数据帧这两块是重点。”
在上面我看的资料中有提到数据帧,但是滤波器我不是很明白,这应该是软件滤波器吧,不用特殊的硬件电路吧? CAN2.0b兼容2.0a
滤波器是指报文滤波,设置一个节点只接收你想要接收的节点报文
数据帧有8字节,可以规定某个字节具体数值代表何种命令(含义),这是应用层的核心 我这儿主要用于传输多个功能模块间的控制信号,波特率500k可能差不多。
我看了一些文章,感觉总线控制器MCP2515和SJA1000用的比较多,总线收发器PCA82C250用得比较多,请问控制器和收发器芯片如何选择?
现在我刚入手,手上也没有什么实验板。请问大家,对新手来说哪个对上手更有帮助,先参考网上资料做个硬件出来,还是先买个现成的开发板学习?如果买开发板的话,有什么产品可以推荐的吗? 个人觉得初学用sja1000容易些 DeviceNet和CANopen上跑在CAN总线上的上层协议,都是针对特定应用的,如果是自己用,不涉及和其它工业网络互联,还是自己设计简单的上层协议来得高效和简便.
DeviceNet规范是要收费的,...CANopen好像有的也是 最好能选内部集成CAN控制器的MCU,比如Freescale,这样可以降低难度。
我可不是给freescale做广告啊 CANopen的许多文档都是不公开的。 现在的CAN协议还是比较保守,特别是在汽车应用这一领域。 很有意义的讨论!我现在也开始搞! 我刚从微芯力克搞了一批STM8S208来做CAN的测试,交流 can的帧格式是11字节时,自己定义协议时,标识符的格式是怎样的?是不是功能码10~6bit,目标地址5~3,源地址2~0的格式?其中功能码是不是代表了优先级?请各位楼主指点! 刚刚把STM32的CAN 跑起来,收发芯片是TJA1050T,500Kbps,跑的还不错。 mark 现在各个车厂用的CAN都比较杂。有些还是初期阶段。开发的并不深入。 汽车的canbus 协议是每个汽车厂家的定义都不一样的。论坛里的资料基本没什么用!
我有个大汽车厂商汽车通讯协议,诊断协议,需要的可以和我联系,qq:896431296 frank21 发表于 2009-3-20 12:58 static/image/common/back.gif
我把我看的这份CAN-BUS入门资料也上传上来,其中讲得还挺详细的。
点击此处下载 ourdev_426646.pdf(文件大 ...
谢谢了。 正在弄stm 的can 也要开始搞CAN,自诊断协议不懂~~~~~{:huffy:}{:huffy:}
页:
[1]