CAN2.0和J1939协议的关系
转发自http://www.cankau.cn/support/help/can-vs-j1939.html
很长时间没搞明白j1939与CAN2.0的关系,这篇文章让我明白了。
1、J1939和CAN2.0的关系
J1939是在CAN2.0B的基础上,对仲裁场部分的29位ID的重新解释;其它部分完全一样。
29位ID分为:3位的优先级、8位的PF(帧格式)、8位的PS(帧扩展)、8位的SA(源地址)、1位的DP(Data Page数据页)、1位的保留位。
其中1位的DP、8位的PF、8位的PS组成了PGN;
PGN是Parameter Group Number;是参数组列表。
在J1939中,将消息分为了PDU1和PDU2两种格式。
PDU1格式的消息发送给特定地址的ECU,地址用8位的PS记录;PDU2格式的消息则发送给所有的ECU,8位的PS用于扩展。
当PF的值在0-239时,表示该消息为PDU1格式,PS为DA(目地地址)。
当PF的值在240-255时,表示该消息为PDU2格式,PS为扩展地址。
2、J1939的物理特性:
总线最大长度为40M;最大支持30个节点;节点最大长度为1M;传输速率最大为250Kbps;3根线(CAN_H、CAN_L、GND)
J1939的分层:
J1939/11:物理层:物理介质、总线设计、长度、节点;
J1939/21:数据层:PGN信息、帧格式;
J1939/31:网络层;
J1939/71/73:应用层;信息分享、控制、广播、故障诊断;
3、PGN
PGN是Parameter Group Number的简称。J1939中最大支持(240+16×256)×2个PGN。
当消息为PDU1格式时,PGN=DP×256×256+PF;
当消息为PDU2格式时,PGN=DP×256×256+PF*256+PS;
在J1939中,消息的传递以参数组的形式,每个参数组中有若干参数,每个参数是一个SPN;
4、SPN
SPN:Suspent Parameter Number:特定的参数编号;例如:SPN 190表示发动机转速。
5、CAN2.0与J1939的关系、J1939与特定的厂商协议的关系
CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。J1939定义了 一系列的PGN和SPN,这些PGN包含了发动机、变速器、车轴等汽车上各部件的信息;对参数的表示方法(状态和值)又定义了SLOT(Scaling比例、Limit界限、Offset偏移、Transfer传送)。ECU厂商都应该遵循这个规范。ECU模块的功能不同,厂商不同,在J1939的基础上,又表现出其多样性:支持或者不支持某些PGN、SPN和SLOT;新增了某些J1939未定义的PGN和SPN。
6、PDU消息包在CAN2.0上的拆包和重组
CAN2.0的数据场最多支持8字节的数据,如果PDU的数据小于等于8字节,1个PDU用1个CAN2.0帧传输即可;如果PDU的数据大于8字节,就需要在发送时进行拆包,在接收时进行重组。接收端如何识别是否需要重组以及怎么重组呢?J1939的做法是在拆包的情况下,将8字节的数据区的第一个字节用于表示拆包后的序号(1-255);因此,最长的PDU为255×7字节。
7、PDU的内容解析
PDU:Protocol Data Unit:协议数据单元。
在数据链路层CAN之上的就是PDU,包含了CAN2.0中仲裁场、控制场和数据场部分的内容。对J1939协议的解析其实就是对PDU的协议解析,先对接收到的包进行重组,构建一个完整的PDU包;再从PDU中数据包中提取出PGN和SPN对应的值。
CAN2.0和J1939协议的关系相关推荐
- CAN总线(二)——CAN2.0标准与协议分析
目录 1. CAN 协议的基本概念 2. CAN 协议及标准规格 2.1 ISO 标准化的 CAN 协议 2.2 ISO11898 和 ISO11519-2 的不同点 3. CAN协议 3.1 帧的种 ...
- J1939协议与CAN2.0对应关系图表
SAE J1939 消息帧格式定义与CAN 2.0B帧格式对应关系 J1939应用层协议详细描述了用于J1939网络的每个参数,包括其数据长度.数据类型.分辨率.范围及参考标签,并为每个参数分配了一个 ...
- CAN总线(三)——CAN FD协议及其与CAN2.0的异同
目录 1. CANFD的来历 2. CANFD与CAN的协议异同 3. CANFD帧结构解析 3.1 帧起始 3.2.仲裁域 3.3 控制域 3.4 数据域 3.5 CRC 3.6 ACK 3.7 ...
- Aurora 8B/10B、PCIe 2.0、SRIO 2.0三种协议比较
在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...
- CAN 总线 之四 BOSCH CAN2.0 Part A
前言 随着越来越多的应用程序接受和引入串行通信,这就要求对特定应用程序的通信功能分配消息标识符以进行标准化.如果将原来由 11 个标识符位定义的地址范围扩大,则可以更方便地使用 CAN 实现这些应 ...
- AUTOSAR协议解析篇(一)-J1939协议解析
SAE J1939协议是基于CAN2.0B协议之上的应用层协议,但是SAE J1939协议并不仅仅是个应用层协议,她对物理层,数据链路层,网络层,应用层,故障诊断, 网络层管理层等都做了详细的规定,只 ...
- J1939协议中CAN ID 与PGN互换--遇到了广播报文
Ref:J1939 Explained - A Simple Intro (2021)– CSS Electronics Ref:CAN 帧ID 与J1939 PGN 转换例子_horse_2007s ...
- 详解127.0.0.1和localhost的关系和区别
详解127.0.0.1和localhost的关系和区别 前情: 周三有同事突然问 127.0.0.1和localhost有什么不同吗,正好利用这个机会整理一下,这个虽然是大家常见的知识点,但是估计很多 ...
- 高调coding,低调做人 peakflys Libjingle和各协议的关系
前两篇blog介绍了P2P的原理和libjingle库的基本情况,如果直接看代码,很多细节可能不会注意到,这种时候最有效的方法当然是看它的开发文档,因为库是由Google开发和维护,所以这方面我们不用 ...
最新文章
- Scrum Master如何让敏捷团队正常运转?
- 【深度】清华黄高等人新作:动态神经网络首篇综述
- Leet Code OJ 217. Contains Duplicate [Difficulty: Easy]
- windows系统作为客户端时,linux中本地yum源挂载时,如何同时挂载DVD1和DVD2?
- ssh免密码登陆(三个节点master slave1 slave2)详细带命令版
- redux中间件之redux-thunk
- 漫步最优化三十六——基本共轭方向法
- 一天一工程总结系列-7.2
- python文本关联分析,详解Python文本操作相关模块
- 自媒体文章采集工具,采集多个平台的文章
- word页码怎么从指定页开始设置?
- 人员招聘与培训实务【1】
- 数据库的三级封锁协议
- otf是什么格式?怎么安装呢?
- chrome/edge解决不能打开问题
- mysql数据迁移与同步常用解决方案总结
- 学习笔记与练习 | SQL入门(三)| 复杂一点的查询
- 《网络安全2022:守望高质量》报告之数据安全热点事件与趋势解读
- 复现NC图表:相关性分析气泡图(热图)---同时展示正负调控关系和显著性
- 表面粗糙度的基本评定参数是_表面粗糙度最常用评定参数是什么?
热门文章
- TP6踩坑 -- 关联查询
- 豆丁网 - 免费在线文档存储网络硬盘
- ffmpeg中获取mv/mb_type/dct_coeff/qp和MBSize等数据(H.264)
- 记ERP系统在摩托罗拉公司的实施
- 麦肯锡三部曲_麦肯锡三部曲推荐
- Django设置html背景图片失败,出现“GET /images/2.png HTTP/1.1“ 404 2552
- 使用美图秀秀去水印、痘痘、路人甲教程
- stm32驱动RFID高频读卡器读取IC卡
- python音频颤音算法_数字音效算法的研究与实现
- SecureCRT强制卸载