当前位置:网站首页>CAN通信的数据帧和远程帧
CAN通信的数据帧和远程帧
2022-08-01 11:27:00 【路过的小熊~】
(先来一波操作,再放概念)
远程帧和数据帧非常相似,不同之处在于:
(1)RTR位,数据帧为0,远程帧为1;
(2)远程帧由6个场组成:帧起始,仲裁场,控制场,CRC场,应答场,帧结束,比数据帧少了数据场。
(3)远程帧发送特定的CAN ID,然后对应的ID的CAN节点收到远程帧之后,自动返回一个数据帧。
环回模式下(方便调试用),设置为发送远程帧:
STM32端通过J-Link RTT调试软件可以打印出CAN接收到数据(在中断服务函数里面接收);
而通过CANTest软件不能接收到STM32端发送出来的数据,因为远程帧比数据帧少了数据场;
正常模式下:通过CANTest软件手动发送一组数据,STM32端通过J-Link RTT调试软件也可以打印出CAN接收到的数据;
附上正常模式下,发送数据帧的显示效果:
概念
看完上文,可以简单理解为:
如果A需要B节点向你发送数据!A可以用B节点的ID,发送一个Remote frame(远程帧),B收到A ID 的 Remote Frame 之后就发送数据给A!发送的数据就是数据帧!
远程帧就像命令,命令相应的节点返回一个数据包.
应用(划重点):如果需要CAN上某个节点向你发送数据,你可以用这个节点的ID,发送一个Remote frame(远程帧),这样节点接收到这个Remote frame之后会自动发送数据给你!发送的数据就是数据帧!
主要用来请求某个指定节点发送数据,而且避免总线冲突。
总结
由于CAN总线发送帧时,仲裁方法只依靠帧ID号,当有两个相同ID号的帧同时竞争总线时,总线就无法判别出让哪个设备先发送帧,于是就造成总线冲突
。
为了总线访问安全,每个发送器必须用独属于自己的ID号往外发送帧
(多个接收器的过滤器ID可以重复),(可以让某种信号帧只使用特定的ID号,而每个设备都是某一种信号的检测源,这样就形成某一特定个设备都只是用特定的ID号往总线上发送数据)。
设有设备A,B,且假设A发送信息的ID为A_ID=1,B发送信息时是用的ID为B_ID=2。
A是收取温度信息的设备,B是采集温度信息的设备。
某一时刻,A需要请求B发送温度信息帧。那么A可有2种方法发送请求:
(1)A发送一帧数据,ID号为B的ID号(B_ID),数据域内容为【请求温度信息】。
B的过滤器设置为接收B_ID帧。
则A发送后被B接收到,B再以B_ID发送温度信息帧。被A接收到。
这看似完美的过程,其实存在可能的总线冲突:如果A发送帧的同时,B也正要往总线上发送温度帧,则造成总线冲突。
当然也可以采用别的方法来解决此问题,如A发送请求温度帧的ID号改成别的,当然B的过滤器也要做相应的设置。
(2)使用远程帧来做信息请求:由于A直接发送B_ID号的数据帧,可能造成总线冲突,但若是A发送远程帧:远程帧的ID号自然是B发送帧使用的ID号(B_ID )。
由于CAN总线仲裁时,数据帧发送的优先级高于远程帧,即使有别的节点设备也在发送以B_ID为ID号的远程帧,因为远程帧除了ID号不同,其他都相同。所以不会造成总线冲突。
当B(前提是以对过滤器设置接受B_ID类型的帧)接受到远程帧后,在软件(注意,是在软件的控制下,而不是硬件自动回应远程帧)控制下,往CAN总线上发送一温度信息帧,即使用B_ID作帧ID号往CAN总线上发送温度信息帧。该帧被A接受到(当然A的过滤器已在发送远程帧之前做了相应设置)。由此可见,远程帧可以使请求更简单,但也非不可代替。
边栏推荐
- Mysql index related knowledge review one
- 如何利用DevExpress控件绘制流程图?看完这篇文章就懂了!
- Solve vscode input! Unable to quickly generate skeletons (three methods for the new version of vscode to quickly generate skeletons)
- 大众碰到点评的一个字体反爬,落地技术也是绝了
- Sparse representation - study notes
- 【cartographer ros】10: Delay and error analysis
- Pve delete virtual machine "for a collection"
- Pytest电商项目实战(下)
- 一文说明白ECDSA spec256k1 spec256r1 EdDSA ed25519千丝万缕的关系
- 4种常见的鉴权方式及说明
猜你喜欢
Mini Program Graduation Works WeChat Food Recipes Mini Program Graduation Design Finished Products (3) Background Functions
一篇文章,带你详细了解华为认证体系证书(1)
新一代超安全蜂窝电池, 思皓爱跑上市13.99万元起售
小程序毕设作品之微信美食菜谱小程序毕业设计成品(4)开题报告
Golang内存分析工具gctrace和pprof实战
Promise学习(三)Promise的几个关键性问题 -- 状态改变、执行顺序与机制、多任务串联、异常穿透、中断promise链
轮询和长轮询的区别
C#/VB.NET 将PPT或PPTX转换为图像
【钛晨报】国家统计局:7月制造业PMI为49%;玖富旗下理财产品涉嫌欺诈,涉及390亿元;国内航线机票燃油附加费8月5日0时起下调
The meaning and trigger conditions of gc
随机推荐
shell--第九章练习
【云享新鲜】社区周刊·Vol.73- DTSE Tech Talk:1小时深度解读SaaS应用系统设计
slice、splice、split傻傻分不清
R语言ggplot2可视化:使用ggpubr包的geom_exec函数执行geom_*函数(没有任何参数需要放置在aes中)
Android Security and Protection Policy
The four methods of judging JS data type
Small application project works WeChat gourmet recipes applet graduation design of finished product (1) the development profile
如何获取微信视频号的地址(微信公众号的链接地址)
[Nodejs] node的fs模块
EasyRecovery热门免费数据检测修复软件
(ES6以上以及TS) Map对象转数组
JS数据类型转换完全攻略
(ES6 and above and TS) Map object to array
通配符SSL证书不支持多域名吗?
Kaitian aPaaS mobile phone number empty number detection [Kaitian aPaaS battle]
C language implementation!20000 in 4 seconds
音视频技术开发周刊 | 256
Glassmorphism design style
OpenHarmony高校技术俱乐部计划发布
Endorsed in 2022 years inventory | product base, science and technology, guangzhou automobile group striding forward