can总线发送数据的问题,can总线中,总结点发送数据,在什么情况下才能把数据发出去,如果发送的数据没人接受,又会发生什么呢??

2020-11-29 11:54:54 字数 2911 阅读 6819

1楼:胜利之

如果can发送节点处于“正常发送”模式,发送数据但是没有任何节点接收那么一定会发送失败。

一次发送失败不会产生错误中断,只是发送错误计数器值增加,can控制器重发还发不出去,发送错误计数器累加达到一定的值后才会产生相应的中断。

检测是否发送成功要么是通过发送中断或者发送状态位来的,不是检测是否有错误中断,所以关掉对于发送成功与否不起任何作用。

另:单节点检测can驱动和硬件是否正常,其实是可以通过设置“自检测模式”(自发收发模式)完成的,这样能发送成功,并能收到数据。

2楼:匿名用户

数据发出后得不到应答,检查出错误并重**送,直到系统中出现其他中断。发送数据的节点变为错误认可节点,总线不会关闭。

3楼:匿名用户

没有其他节点,发送没有应答会自动重发,直到错误技术器溢出产生错误中断。

can总线中,总结点发送数据,在什么情况下才能把数据发出去,如果发送的数据没人接受,又会发生什么呢??

4楼:胜利之

只讨论这点含义bai不大

“正常du发送”模式下,zhi两个以上节点,线路正dao常,波特率版相同,就能相互把数据权发出去。

如果情况异常,没其他任何一个节点接收到,硬件会自动多次重发,最终还发布出去,那么会报告“发送失败”。

可以多看一下can总线还有哪些参数。

5楼:

can总线属于一主多从广播式的网络,在总线空闲时,任何节点都可以发送数据,在多个节点同时发送数据时,id优先级高的节点具有消息发送的优先权。

如果发送的数据没人接受,对总线没有任何的影响。

can总线的收发问题

6楼:匿名用户

1.can协议只有两层:物理层和数据链路层。

can收发器(也就是协议控制器)的作用就是完成数据链路层组帧和生成物理层比特流,驱动器的作用是吧控制器输出的高低逻辑电平编程can总线的差分式电平。协议相关的内容基本都由协议控制器完成,单片机软件上只要配置需要的通信速率、帧id以及发送的数据内容,然后告知收发器,让它发送就ok。不需要从软件上编写协议。

2.单片机内部的can控制器和外接can控制器功能相同,省去了再加外围硬件。单片机对帧格式不用特别关心,但是发送之前至少需要告诉协议控制器你所要发送的数据内容以及帧的id。

can总线问题

7楼:两嗅沁风

首先不得不说提问者爱思考也爱**竟,不过我要提醒您一句的是,can总线数据帧

与数据帧可不像串口一样紧挨着,之间还有“帧间空间”,也就是说,即使循环发送can帧,也至少还有3位隐性位间歇场,换句话说,最小间隔至少是8+3=11位,即16*11/8=22微秒。

8楼:匿名用户

can的数据帧不是这样理解的,can包括帧起始位、id位、扩展帧标志位和远程帧标志位,数据长度位、数据段和crc段还有应答位,再加上can的物理层机制,每遇到5个相同的数据位就要加一位取反数据,所以要确定发送数据帧才能确认一帧的具体传输时间

9楼:伊藉禹驰

1,传感器是不能直接连can的,是由单片机采集传感器的信号然后通过can总线发出去,所以要考虑的是传感器和单片机的连接

2.这个根据你的实际需求可以自己去设定时间3,。一般情况不用人去管了,只需要出问题了再进行维修4,这个就看你系统硬件是怎么设计的了,不同方案肯定不一样5,这个依然看你的硬件设计来估算

can总线通信中,如果是多节点通信。多通信中遇到了问题。问题在补充中: 50

10楼:匿名用户

首先,can总线不分主机,最多是整车厂在网络规划的时候定义了一个功能比较多的节点,各家车厂不一样(如网关),或者类似powermaster。但是can本身协议里是不存在主、从的。

其次,楼上说的仲裁延时的问题,can协议本身是考虑到这个问题的,当然按他的方法通过协议延时可以解决,但是既然can协议已经给了我们解决方法那肯定是更科学更有效的,具体的去看can的仲裁吧,你需要一个节点的报文发送不存在延时,只需要给它分配一个优先级很高的id即可,当然这得从网络规划的角度出发,不是这么简单说说的。

回到你的问题,你说的主机请求数据,在can中只能是远程帧(一个远程标志位为1,数据场为空的帧),当这个帧出现在总线上时,拥有这个id数据的节点就要发送这个同id的完整帧(远程帧标志位为0)。但是只能有一个节点接受这个远程帧的请求。

这里强调一个概念,同一个id的帧只能由一个节点发送,不然可想而知总线上都是冲突。

你补充问一下,你想实现什么效果吧

11楼:匿名用户

读can控制器的接收缓冲区的数据即可。注意,要是你下面的节点很多,建议对每一个节点回复数据的时间做一个简单的协议延时(如根据每个从节点的id来延时),不然总线仲裁的时间会很长,影响通信效率;另外是你的主机处理接收缓冲区的速度要足够快,不然可能会丢数据(总线溢出)。

can总线仲裁问题,3个节点同时向总线发数据,只能收到2个节点数据,节点id不同,请问怎么解决,谢谢

12楼:宏一点

仲裁是对优先级进行管理,高优先先发,地优先后发。仲裁不会导致报文丢失。

can总线如何发送多帧数据.

13楼:匿名用户

can总线发多帧数据?是说不间断的发送多帧数据吗?这个不科学,给你举个例子。

a的缓冲三帧连续发的can数据,id是0x000005,在a发送第一帧的同时,b准备发送can数据,b的数据帧id是0x000001,等a发完第一帧后,a的第二帧肯定是和b的数据一起仲裁,结果是a仲裁失利,等b发完才能继续发送。

你要发多帧数据,可以看看iso15765-2,里边就有can数据传输协议。