最近接触到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总线另有他用??
还有好多不明白的地方,先问这么多吧,一次最多只能给50分,问太多了不合适。下次问再给50分! |