发新帖我要提问
12
返回列表
打印
[CAN-bus/DeviceNet]

用过SJA1000的高手看过来

[复制链接]
楼主: 小研究
手机看帖
扫描二维码
随时随地手机跟帖
21
小研究|  楼主 | 2007-6-6 08:15 | 只看该作者 回帖奖励 |倒序浏览

期望答复

小弟之所以问上面第二个问题,是因为小弟在做一个小产品,这个小产品需要与一些已经成型的产品进行CAN通信。而根据这家单位提供的通讯规约来看,他们并不是严格的遵循CAN的通讯格式,有好几处出现了DLC与后面的数据数目并不相同的情况。由于CAN并没有类似于一般UART的结束位,所以小弟担心,CAN是不是根据前头得到的DLC的数目来决定后面数据的个数,等接受(或发送)完等同于DLC的数据个数就认为此帧结束呢?
谢谢

使用特权

评论回复
22
桂电飞天鼠| | 2007-6-6 09:33 | 只看该作者

敬佩楼主的研究精神!!

要向你学习!自觉自己把太多东西认为是理所当然了!

使用特权

评论回复
23
wxj1952| | 2007-6-6 09:45 | 只看该作者

谁说CAN没有类似于UART的结束位?

CAN是按帧/包封装传输的。当接收器检测到帧结尾“结束标志”时,即认为此帧结束,同时记录了此帧长度。与帧中的任何内容无关。
注意上面这句话有错误。

这家单位是严格的遵循CAN的通讯格式,执行的是真正的CAN协议。


其他所有问题,书上都有。

使用特权

评论回复
24
wxj1952| | 2007-6-6 10:39 | 只看该作者

你寻找什么,你就发现什么。

书上都有,你没注意而已。

我现在对CSMA/CD的理解是:节点在发送的同时也在不断的接受信号,包括自己刚发出去的信号,当发现接受的信号ID与自己发出的ID相同时就自动丢弃,不同则接受进接受缓冲区.对吗?

NO!节点在发送的同时,检测到的必然是自己正在发送的信号。因此“包括”一词容易混淆概念。  节点在发送期间,所有滤波电路是关闭的!(自测试开放除外)怎么可能校验ID?
这些问题自己做个实验证实一下就行了,谁说的都不算。自己质疑,自己解惑。---可别说“必然”二字不严密,“另一个节点同时也在发送怎么办?.......”


我现在想继续问的是:如果发现接受的信号与自己刚发送出去的信号不同时,是认为总线在竞争呢还是认为出错呢?会引起中断吗?

实验中打开“仲裁丢失中断”和“错误中断”,看看那个中断发生?区别可根据TXERR是否计数。
 

使用特权

评论回复
25
小研究|  楼主 | 2007-6-6 19:58 | 只看该作者

鼠兄见笑了

让各位见笑了,我这个人喜欢刨根问底。
wxj1952前辈让我受益非浅,谢谢了。不过我好象并没有向您透漏过我所说的那家单位的CAN规约,您怎么知道“这家单位是严格的遵循CAN的通讯格式,执行的是真正的CAN协议”?

使用特权

评论回复
26
小研究|  楼主 | 2007-6-6 22:04 | 只看该作者

wxj1952前辈方便的话能留下EMAIL吗?

wxj1952前辈方便的话能留下EMAIL吗?
因为涉及该厂家的技术信息,此处不方便公开,我想邮件向你请教一下。

使用特权

评论回复
27
wxj1952| | 2007-6-7 10:31 | 只看该作者

大家都是这么做的

有一本讲国际标准DEVICENET协议的书,它就是这么做的。所有帧都是11字节,即使只有3个字节有用。后面都是00 00 00冗余填充。知难行易,这么做编程简便。带宽和软件开销两者比较,在这里舍谁取谁?我相信所有开发CAN协议的单位,至少会参考这本书或者这个国际标准协议文本。他做出来的东西是要准备将来与其他标准设备接口的。没有人仅凭自己的想象去开发协议。
    没有人按照DLC来决定发送帧长度的。(芯片内部自动按照DLC发送)给自己找麻烦,“没人那么干!”所以我说“这家单位是严格的遵循CAN的通讯格式,执行的是真正的CAN协议。”因为它符合标准,“孤儿”产品是不可能拿到市场上来卖的,只能自己本企业用,要么叫企业标准,要么叫“封闭协议”,——与开放协议对应。


使用特权

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

本版积分规则