智能车制作

标题: CAN总线通讯是怎么实现一对一的通讯的? [打印本页]

作者: 尕玍紿    时间: 2014-5-21 14:12
标题: CAN总线通讯是怎么实现一对一的通讯的?
CAN总线是以广播的方式将数据发送到总线上的,不存在目标对象的地址,那CAN是怎么实现一对一的通讯的呢?印象中也有另一种通讯协议也是这样以广播的形式发送数据的,但是它把目标对象的地址融合在了发送出去的数据里,所有对象在接收到数据后,会对数据进行分析,从而知道这数据是不是发给它的,即如果接收到的数据中包含的地址信息与自身的一致,则表示是发给自己的,那他就会接收;否则则会丢弃,从而实现一对一的通讯。我想问的是CAN通讯协议是怎么实现一对一的通讯的?它的数据中没有包含类似这样的信息啊。

CAN通讯内容的数据结构,即数据帧的数据结构:

数据帧由7 个段构成。

(1)  帧起始 (标准格式 和 扩展格式一样:1bit 显性电平0)

表示数据帧开始的段。

(2)  仲裁段 (标准格式:11bit的基本ID;扩展格式:11bit的基本ID + 18bit的扩展ID)

表示数据的优先级。

(3)  控制段 (标准格式:1bitIDE + 1bit保留位 + 4bit数据字节数;扩展格式:2bit保留位 + 4bit数据字节数)

表示保留位 及 数据的字节数 的段。

(4)  数据段 (标准格式 和 扩展格式一样:0 - 8字节)

数据的内容,可发送0 ~8 个字节的数据。

(5) CRC 段 (标准格式 和 扩展格式一样:15bitCRC顺序 + 1bitCRC界定符)

检查帧的传输错误的段。
[注]CRC 顺序是根据多项式生成的 CRC 值,CRC 的计算范围包括帧起始、仲裁段、控制段、数据段。
    接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。

(6) ACK 段 (标准格式 和 扩展格式一样:由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成)

表示确认正常接收的段。

【注】
发送单元的 ACK段:发送单元在 ACK段发送 2 个位的隐性位。
接收单元的 ACK段:
接收到正确消息的单元在 ACK槽(ACK Slot)发送显性位, 通知发送单元正常接收结束。
这称作“发送 ACK”或者“返回 ACK”。 发送 ACK 的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元发送单元不发送 ACK。所谓正常消息是指不含填充错误、格式错误、CRC错误的消息。

(7)  帧结束

表示数据帧结束的段
作者: tearedice    时间: 2014-5-21 15:33
远程数据请求
   通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由相同的识别符命名的。

[attach]60057[/attach]
作者: 993809188    时间: 2014-5-21 19:55
tearedice 发表于 2014-5-21 15:33
远程数据请求
   通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧 ...

洪杰,,都搞起CAN总线啦,毕设搞的怎么样啦
作者: tearedice    时间: 2014-5-21 20:48
本帖最后由 tearedice 于 2014-5-21 20:51 编辑
993809188 发表于 2014-5-21 19:55
洪杰,,都搞起CAN总线啦,毕设搞的怎么样啦


我嚓..... 董哥?
作者: SCDWHUT    时间: 2014-7-4 13:19





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2