关于CAN总线各种类型帧的发送和接受的理解
关于CAN总线各种类型帧的发送和接受的理解:<br /> 初学CAN总线,对CAN总线上数据的发送和接受有一点自己的理解,不知道对不对,写出来请各位达人拍砖。每个节点都有自己的ID,验收代码寄存器和验收屏蔽寄存器。这三个寄存器构成了一套该节点自己的报文滤波规则。只要是总线上的帧满足该节点的滤波规则,那么总线上的数据就会被接收,反之,则放弃该帧。<br /> 举例说明:假设总线上现在有三个节点A,B,C;他们之间需要互相传发送数据,请求数据;如果节点A要给节点B发送数据,那么在节点A 要发送的的帧里面的标志域(ID)的设置上就要满足节点B的滤波要求,而与节点A本身的ID没有关系;如果三个节点之间只是存在点对点的数据传送,而不存在一点对多点的同时数据传送(广播),那么这三个节点的滤波条件的设置即ID,验收代码寄存器和验收屏蔽寄存器,不能完全相同。<br /> 不知道我的理解对不对?还得继续看书
ID还是总线用于仲裁用的,CAN芯片首先侦听网络,发现总线空闲,就通过ID可以发数据,如果同时都侦听到了总线,ID低的具备优先的权利,接收的话是根据其他节点的要求,选择屏蔽位。Leon的一些理解:
Leon的一些理解:<br /><br /><br /><br /> CAN网络在进行数据传输时,支持多主机结构,只要网络空闲,各个节点都可以发送数据,如果发生两个节点以上同时发送数据而导致冲突,那么所有的节点都停止发送,回到监听总线状态,直到冲突结束,再继续发送。<br /><br /> 对于冲突的处理,由仲裁机构来解决,根据识别符来判断各个节点的优先级,优先级高的重新发送,低的退出发送。<br /><br /><br /><br />欢迎探讨 http://www.soon-now.com/bbs/dispbbs.asp?boardid=13&id=126&page=1&star=1<br />嘿嘿
LS:<br /> CAN网络在进行数据传输时,支持多主机结构,只要网络空闲,各个节点都可以发送数据,如果发生两个节点以上同时发送数据而导致冲突,<br /><br />"那么所有的节点都停止发送,回到监听总线状态,直到冲突结束,再继续发送。"<br /><br />加引号的说法是错误的.应该是:<br />那么只有优先级最高的节点继续发送,其他所有节点都停止发送,回到监听总线状态,直到冲突结束,再继续竞争总线。<br /><br />问一下
那如果没有使用优先级呢,ID都一样,会出现什么情况?补充
当出现总线仲裁中断时,是系统自动解决仲裁问题,还是需要人为写代码解决呢 ?怎样解决?嘿嘿
硬件完全自动做的,不需要人为参与的.<br />打个比方吧, N个人闭着眼睛呆在只能通行一人的走廊两侧的房间里, 相当于N个CAN节点吧.<br /><br />类比:<br /> CAN节点 ==== 呆在屋子里的闭着眼的人<br /> CAN总线 ==== 走廊<br /> CAN使用权总线竞争 ==== 走廊通行权竞争<br />CAN节点往总线上发ID ==== 人往门外扔鞭**<br /> ID里面的一个隐性位 ==== 扔一个哑**<br /> ID里面的一个显性位 ==== 扔一个响**<br /> 总线空闲 ==== 一段时间里走廊上没有人走动的声音也没有**声<br /><br />仲裁规则:<br /> 发出去的ID和自己收到的ID一样则赢得总线使用权 ==== 扔出去的**该响的响了该哑的哑了则赢得走廊通行权<br /><br />当发出一个隐性位却收到一个显性位就不需要继续发ID了 === 当扔出去一个哑**却听见有**声就不用继续扔**了<br /><br /><br />问个弱相关问题
我现在只有一个CAN 模块,没有其他的CAN模块和我通信,如果我编程把CAN设置为发送数据帧,那么CAN能把数据发送出去吗?我怎样来判断我是否发送成功了呢?<br /> 比如有两个节点A,B.A发送,B接受,是不是A是否发送成功还要取决于B啊,单独的A是无法发送数据的,是吗?<br /> 希望高手赐教啊,我刚接触CAN.嘿嘿
回LS<br />一般来说,至少需要两个CAN节点才可以做你所说的测试.<br /><br />原因:<br />CAN通信成功的最后一步是:发送方收到了接收方回送的ACK.如果没有这个ACK,发送方就认为这次发送失败了,一般就会不停的反复重发(当然一般也可以设置不自动重发).<br /><br />有一部分CAN器件,比如SJA1000可以配置工作在"自发自收"模式(自己给自己回ACK,有点象自慰呵呵).这样,如果你的测试装置里有比较方便的人机界面,就可以通过查询SJA1000里面的状态寄存器并通过你的人机界面显示出来,间接的知道CAN的工作是否异常了.<br /><br />不幸的是,并不是所有的CAN器件都支持"自发自收"模式.这样的话,就必须有至少俩节点了!<br />
页:
[1]