标题:
CAN总线,没有同步信号,收发双方如何准确交换数据?
[打印本页]
作者:
cuicaifeng
时间:
2013-8-16 14:37
标题:
CAN总线,没有同步信号,收发双方如何准确交换数据?
最近接触到
CAN
总线,看了好久了,云里雾里,资料翻了好多,都讲的很抽象,没有一个能用通俗的语言把
CAN
通信的原理及实现方法讲透的,也许这个协议只适合研究人员进行学术研究。
但现在的项目又必须搞清楚这个该死的协议怎么工作的,噢
-
卖糕的!!
我仅代表初学者,向前辈,大侠们,请教如下问题:
1
,这个
CAN
总线共两根线,两根线都是数据线,没有同步信号线,怎么确定
“
位
”
?也就是说
“
高
”
多久
认为是
1
,超出
多少
ns
认为是
11
了?如果有很长时间的一个
高信号
,怎样区分是
1
和
11
或
111
或
1111
或
11111
???
2
,这个该死的协议用了
“
报文
”
这个词,报文里又有
“
起始位
”+“
标志符
11
或
29
位
”+“
数据位
”+“
效验
”
,这个
“
标识符
”
好像是决定了
“
谁有发言权
”
,那挂在总线上的每个分机这个标识符该是多少?如果某个分机
A
总是发
00000000000
,哪这个分机
A
总有对总线的控制权,那别的分机何时才能有
“
发言权
”
,我的意思是,各个分机的
“
标示符
”
是如何生成的?随机的?还是定好的?还是跟要说的话有关系?如果某个分机总是
“
平民
”
,进不来
“
人
*
大
”
,是不是总也说不上话?哪他的
“
言论
”
不久无法表达了吗???
3
,有的
CPU
芯片上有两组
CAN
总线,例如:
STM32F107V
和英飞凌
XC886
等,一组都可以并联
100
多个节点(分机),用得着两组吗?真要用得到两组来交换
200
多分机的数据,哪数据量也很不小啦,还是说两组
CAN
总线另有他用??
作者:
baikeeditor
时间:
2013-9-13 14:04
1,如楼上hwm大师所说,can是靠双方约定好的波特率来确定位的
2,标识符是报文的id,一个模块可以有多个报文,id是由用户根据实际应用规定的,在同一时刻,高优先级报文优先发送,发送完后低优先级就可以发送了,所以说优先级低的报文还是可以发出去的,低优先级的报文有可能出现较大延迟
3,一个系统有2个CAN网络的话,一方面是由于系统包括2个完全不同的子系统,比如汽车中的PCAN,和BCAN,前者挂的是与安全息息相关的动力模块,双CAN可以实现安全隔离,使整个系统更加可靠,另一方面,can总线在不同的波特率下支持的模块数量是有限的。
作者:
baikeeditor
时间:
2013-9-13 14:05
关于标示符: 1,这个里边可以包含分站的“身份识别”成份,也就是系统设计者自定义的,可以这样理解吧。 2,两个不同优先级的同时申请发送时,高优先级的先传,之后多久低优先级的可以传?好像协议里只是讲到了仲裁,没看到“高优先”传完“低优先”接着传的这部分内容,如果10个子站同时申请仲裁,那就是由高到低10个分站依次传完,总线空闲下来后再传回应信息,哪子站的接收缓冲溢出了丢数据了怎么办?
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0