打印

can的发送过程到底是什么样的?

[复制链接]
2570|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2013-4-28 09:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在看can总线协议。发现有些问题想要求答案。
书上提到can控制器由3个发送缓冲器组成,每个发送缓冲器的长度是4个字,可以存放一个完整的can报文。
一个完整的报文应该由TFS,TID,TDA,TDB组成吧,就数据部分加起来就有8个字节了。另外两个部分加起来也有8个字节,这样合起来应该有16个字节吧?一个发送缓冲器怎么存放的下。
还有can控制器里有3个发送缓冲器,是不是这三个缓冲器存放的数据不一样?那数据的输入到底是有什么差别。三个缓冲器谁先发送应该和内部优先级有关吧?是不是在总线上还有一个优先级。就是不同节点竞争总线的时候会出现一个仲裁吧。这样一个数据发送就经过两次仲裁?
can的发送过程到底是什么样的。谁能给个答复。或者指引一条明路。
沙发
huangxz| | 2013-4-28 10:04 | 只看该作者
ID是不算在数据里面的,数据只有TDA,TDB,8个字节
发送优先级是进入发送状态的先后顺序,是总线控制器根据用户指定定的优先级安排的,
总线优先级是总线控制器根据CAN2.0协议安排的当出现竞争的时候仲裁的结果。

使用特权

评论回复
板凳
airwill| | 2013-4-28 11:13 | 只看该作者
本帖最后由 airwill 于 2013-4-28 11:19 编辑

每个发送缓冲器的长度是4个字 16 字节, 包括 ID, can 数据, 还有控制信息.
有can控制器里有3个发送缓冲器,这三个缓冲器存放的数据当然可以一样
一个数据发送就经过两次仲裁?         可以这么理解.
想要开车出去, 在院子里你得谦让领导的车子,      缓冲器优先级
从门口进入公路, 你还得礼让直道的车子,            总线优先级

使用特权

评论回复
地板
huangfeng33| | 2013-4-28 18:50 | 只看该作者
4个字,一个字 = ?bytes

1 transmit buffer 可以放一个完整的 can message,

每个 transmit buffer 中的内容不一样,你可以同时放3个 messages, 之后依次发出,也可以检测哪个transmit buffer 为空,在其中放入 message....


先看 manual, 后看 source code

使用特权

评论回复
5
Taoj0523| | 2014-3-27 10:13 | 只看该作者
表示看不懂、、、、云里雾里啊

使用特权

评论回复
6
grant_jx| | 2014-3-27 12:42 | 只看该作者
缓冲器只放数据,不放控制信息数据;
优先级有2个来决定,一个是缓冲器的,这个你可以软件设置。相同的优先级,就看总线上的数据,是0优先还是1优先,看仲裁部分就知道

使用特权

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

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝