打印

CAN总线的一些问题

[复制链接]
9648|61
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
3B1105|  楼主 | 2010-10-30 09:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近着手做一个CAN总线方面的项目,有好多问题啊,头都打了,遇到好多问题,也有好多潜在问题,希望大家做过CAN总线的人也多多提一下想法,或遇到的问题,然后我也能考虑周到点!比如,现在虽然项目已经做了好久,但是我不知道为什么要选择CAN总线去通信,它较其它总线有什么优点!

相关帖子

沙发
3B1105|  楼主 | 2010-10-30 09:31 | 只看该作者
上传一点资料吧

CAN总线协议中文版.pdf

414.73 KB

Bosch CAN Specification Version2.0.pdf

335.24 KB

lpc17xx.can_.arm_.pdf

986.54 KB

使用特权

评论回复
板凳
3B1105|  楼主 | 2010-10-30 09:33 | 只看该作者
我个人觉得,掌握CAN总线,首先得掌握其协议,其次才是寄存器,比如CAN总线包括三层, 对象层,传输层,物理层,你设置寄存器这层属于哪一层,你得明白!

使用特权

评论回复
地板
3B1105|  楼主 | 2010-10-30 09:33 | 只看该作者
然后是具体概念,mailbox  ,屏蔽规则,  波特率寄存器

使用特权

评论回复
5
3B1105|  楼主 | 2010-10-30 09:40 | 只看该作者
其实做这些通信协议最难的就是,通信中要注意解决的困难,比如,多个CAN控制器竞争总线

使用特权

评论回复
6
3B1105|  楼主 | 2010-10-30 09:43 | 只看该作者
CAN总线协议中,我觉得比较重要的地方是:在总线仲裁期间,标示符定义一静态报文优先级,ID小的优先级大!

使用特权

评论回复
7
3B1105|  楼主 | 2010-10-30 09:49 | 只看该作者
对于波特率,这个概念的来源我认为是由于,多个CAN控制器通信时,若果各按照自己的主频去通信的话,总线上的位速率就不一致了,因此,总线利用波特率寄存器将主频分频成速率较低的波特率寄存器,变成了一致的波特率,就可以通信了

使用特权

评论回复
8
思行合一| | 2010-10-30 09:53 | 只看该作者
我想是不是因为CAN总线是两根线,而且速度较快! 1# 3B1105

使用特权

评论回复
9
思行合一| | 2010-10-30 09:57 | 只看该作者
CAN总线的特点和优点
(1)多主控制
在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线
的单元可获得发送权(CSMA/CA)。多个单元同时开始发送时,发送高优先级
D消息的单元可获得发送权。
(2)消息的发送
在CAN协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总
线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,
根据标识符(D)决定优先级。两个以上的单元同时开始发送消息时,对各消
息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可
继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
(3)系统的柔软性
与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,
连接在总线上的其它单元的软硬件及应用层都不需要改变。
(4)通信速度
根据整个网络的规模,可设定适合的通信速度。在同一网络中,所有单元
必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此
单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通
信速度。
表1一1 CAN总线系统任意两节点间的最大距离
最大距离/m    位速率bps
10         1000
130         500
270         250
530         125
620         100
1300        50
3300        20
6700        10
10000         5
CAN总线上任意两节点之间的通信距离与其位速率有关,表2一1列举了相
关数据。
(5)远程数据请求可通过发送“请求帧”请求其他单元发送数据。
(6)错误检测功能·错误通知功能·错误恢复功能
所有的单元都可以检测错误(错误检测功能)。检测出错误的单元会立即同
时通知其他所有单元(错误通知功能)。正在发送消息的单元一旦检测出错误,
会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直
到成功发送为止(错误恢复功能)。
(7)故障封闭
CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还
是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总
线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
(8)连接
CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有
限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降
低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

使用特权

评论回复
10
思行合一| | 2010-10-30 10:02 | 只看该作者
降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。


多大速率下带几个节点,有没有规定啊!

使用特权

评论回复
11
思行合一| | 2010-10-30 10:03 | 只看该作者
最大距离/m    位速率bps
10         1000
130         500
270         250
530         125
620         100
1300        50
3300        20
6700        10
10000         5

这个是哪来的数据

使用特权

评论回复
12
思行合一| | 2010-10-30 10:11 | 只看该作者
我也一直有个疑问,就是相同ID的数据帧同时想占用总线,该如何仲裁啊!

如果两个ID一致,如果都想占用总线的话,是否总线会出现错误啊

使用特权

评论回复
13
思行合一| | 2010-10-30 10:18 | 只看该作者
一个节点发出的消息,如何知道对方有没有成功的接收到?是通过应答位还是?

使用特权

评论回复
14
bit6019| | 2010-10-30 10:20 | 只看该作者
楼上两位有没有做过自动波特率?

使用特权

评论回复
15
bit6019| | 2010-10-30 10:21 | 只看该作者
CAN总线错误处理总结
错误状态的种类
(1) 主动错误状态
主动错误状态是可以正常参加总线通信的状态。
处于主动错误状态的单元检测出错误时,输出主动错误标志。
(2) 被动错误状态
被动错误状态是易引起错误的状态。
处于被动错误状态的单元虽能参加总线通信,但为不妨碍其它单元通信,接收时不能积极地发送错误通知。
处于被动错误状态的单元即使检测出错误,而其它处于主动错误状态的单元如果没发现错误,整个总线也被
认为是没有错误的。
处于被动错误状态的单元检测出错误时,输出被动错误标志。
另外,处于被动错误状态的单元在发送结束后不能马上再次开始发送。在开始下次发送前,在间隔帧期间内
必须插入“延迟传送”(8 个位的隐性位)。
(3) 总线关闭态
总线关闭态是不能参加总线上通信的状态。
信息的接收和发送均被禁止。
这些状态依靠发送错误计数和接收错误计数来管理,根据计数值决定进入何种状态。
    总结:调试网络节点多的CAN网络,常常会遇到处理总线错误的问题,最棘手的就是节点脱离了总线,脱离总线也就是进入了配置模式,那么如果使节点在回到总线,很明显要从复位模式推出,一种是软件程序控制,另一种是硬件看门狗芯片复位,重新初始化配置,回到正常模式。

使用特权

评论回复
16
bit6019| | 2010-10-30 10:33 | 只看该作者
CTM8251隔离收发模块, TJA1050,还有好几个收发器

选择的时候需要注意什么,好多人选择CTM8251A是为什么呢?

使用特权

评论回复
17
bit6019| | 2010-10-30 10:55 | 只看该作者
看看这个也许有帮助

CTM8051A手册.pdf

614.73 KB

CTM1050.rar

26.31 KB

使用特权

评论回复
18
bit6019| | 2010-10-30 10:56 | 只看该作者
基于32位ARM7的CAN节点

基于32位ARM7的CAN节点设计v1.0.pdf

1.16 MB

使用特权

评论回复
19
bit6019| | 2010-10-30 11:02 | 只看该作者
听说有个fullcan函数库,不知道大家有用过吗?

使用特权

评论回复
20
bit6019| | 2010-10-30 11:24 | 只看该作者
SJA1000-CAN

SJA1000-CAN.rar

1.05 MB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

315

主题

1645

帖子

4

粉丝