1楼:匿名用户
1.can协议只有两层:物理层和数据链路层。
can收发器(也就是协议控制器)的作用就是完成数据链路层组帧和生成物理层比特流,驱动器的作用是吧控制器输出的高低逻辑电平编程can总线的差分式电平。协议相关的内容基本都由协议控制器完成,单片机软件上只要配置需要的通信速率、帧id以及发送的数据内容,然后告知收发器,让它发送就ok。不需要从软件上编写协议。
2.单片机内部的can控制器和外接can控制器功能相同,省去了再加外围硬件。单片机对帧格式不用特别关心,但是发送之前至少需要告诉协议控制器你所要发送的数据内容以及帧的id。
can总线发送数据的问题
2楼:胜利之
如果can发送节点处于“正常发送”模式,发送数据但是没有任何节点接收那么一定会发送失败。
一次发送失败不会产生错误中断,只是发送错误计数器值增加,can控制器重发还发不出去,发送错误计数器累加达到一定的值后才会产生相应的中断。
检测是否发送成功要么是通过发送中断或者发送状态位来的,不是检测是否有错误中断,所以关掉对于发送成功与否不起任何作用。
另:单节点检测can驱动和硬件是否正常,其实是可以通过设置“自检测模式”(自发收发模式)完成的,这样能发送成功,并能收到数据。
3楼:匿名用户
数据发出后得不到应答,检查出错误并重**送,直到系统中出现其他中断。发送数据的节点变为错误认可节点,总线不会关闭。
4楼:匿名用户
没有其他节点,发送没有应答会自动重发,直到错误技术器溢出产生错误中断。
can总线自收发
5楼:匿名用户
自发自收的意思就是它自己内部已经连接好了,自己发送的没有错误的时候,自己能产生应答,所以你自发自收的时候,canh和canl悬空就行了
关于can总线的一些问题
6楼:宏一点
can的总线协议
和其他协议一样是分层协议,常用的有物理层、传输层、协议层,应用层、网络管理层;
can控制器实现协议层,can驱动器和双绞线可以看做物理层和传输层,控制单元之间传输的信号是应用层的,网络管理层是基于应用和协议层实现的。
所有ecu都是由处理器+can控制器+can驱动器构成(就can总线而言)只要满足物理层协议要求和应用层要求的设备都可以挂在can总线上,向笔记本,plc,手持设备等
can总线接口组成、总线控制器和总线收发器
7楼:匿名用户
是想知道各部分功能吗?
总线控制器的作用是将需要传送的数据按照can的帧格式和编码方式转换成协议数据流(发送),或者反过来转换(接收)。
总线收发器的作用是将ttl信号转换为can标准的差分信号。总线收发器是直接与总线的物理实体相连的。
8楼:胜利之
可以把问题描述得更清楚吗?
can总线通讯接收到的id不完全正确。求助!!!
9楼:匿名用户
总线没有那么智能,实际上a1 a2 a3三个节点都可以接收到总线上的数据,只是在接收的同时,三个节点硬件上的过滤器(一般通过软件在这个地方设置节点各自的arbitration id)会根据各自设置的arbitration id与总线上接收到的id做出比较,比较一致则对该帧信息作出回应,接收不一致则会舍弃该帧信息等待接收新的信息。
型号一样不代表id就是一样的。can总线各个节点之间进行通讯是根据各个节点不同id对数据帧进行接收反应的。总线上每个节点的id都是不同的,这个可以通过软件上编程设置,有些仪器上好像也可以自己通过手动写进去。
10楼:牛xx的小
can扩展帧最多支持29位id,那么你的id不能超过29,最大id也就是1fff fffff 发送时将id<<3,接收进再还原即可!
can总线收发器的隔离电源问题
11楼:匿名用户
你的图里就有隔离器件iso1050 数字地与can地隔离开了
隔离是为了减少两个系统之间的干扰
传统设计是使用tja1040+2片光耦 现在iso1050一片搞定了
12楼:
两个地分开布,不要连起来不就节了
can总线发送数据的问题,can总线中,总结点发送数据,在什么情况下才能把数据发出去,如果发送的数据没人接受,又会发生什么呢??
1楼 胜利之 如果can发送节点处于 正常发送 模式 发送数据但是没有任何节点接收那么一定会发送失败。 一次发送失败不会产生错误中断,只是发送错误计数器值增加,can控制器重发还发不出去,发送错误计数器累加达到一定的值后才会产生相应的中断。 检测是否发送成功要么是通过发送中断或者发送状态位来的,不是...
各位大神,关于CAN总线优先级和仲裁权的问题
1楼 匿名用户 1 如果这个节点发得足够快,就是一帧和一帧之间几乎不留空隙那么有可能。不过能否完全达到效果不好说。 2 通过应用层的管理来实现,用定时的办法发送之类的。硬件层基本无法去完全的做到,即使有优先级的区分。 3 如果总线数据负载不是很大的情况,可以不考虑被第二个节点岔开的影响,因为两个点的...