转发自http://www.cankau.cn/support/help/can-vs-j1939.html

很长时间没搞明白j1939与CAN2.0的关系,这篇文章让我明白了。

CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。

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协议的关系相关推荐

  1. CAN总线(二)——CAN2.0标准与协议分析

    目录 1. CAN 协议的基本概念 2. CAN 协议及标准规格 2.1 ISO 标准化的 CAN 协议 2.2 ISO11898 和 ISO11519-2 的不同点 3. CAN协议 3.1 帧的种 ...

  2. J1939协议与CAN2.0对应关系图表

    SAE J1939 消息帧格式定义与CAN 2.0B帧格式对应关系 J1939应用层协议详细描述了用于J1939网络的每个参数,包括其数据长度.数据类型.分辨率.范围及参考标签,并为每个参数分配了一个 ...

  3. 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 ...

  4. Aurora 8B/10B、PCIe 2.0、SRIO 2.0三种协议比较

    在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...

  5. CAN 总线 之四 BOSCH CAN2.0 Part A

    前言   随着越来越多的应用程序接受和引入串行通信,这就要求对特定应用程序的通信功能分配消息标识符以进行标准化.如果将原来由 11 个标识符位定义的地址范围扩大,则可以更方便地使用 CAN 实现这些应 ...

  6. AUTOSAR协议解析篇(一)-J1939协议解析

    SAE J1939协议是基于CAN2.0B协议之上的应用层协议,但是SAE J1939协议并不仅仅是个应用层协议,她对物理层,数据链路层,网络层,应用层,故障诊断, 网络层管理层等都做了详细的规定,只 ...

  7. J1939协议中CAN ID 与PGN互换--遇到了广播报文

    Ref:J1939 Explained - A Simple Intro (2021)– CSS Electronics Ref:CAN 帧ID 与J1939 PGN 转换例子_horse_2007s ...

  8. 详解127.0.0.1和localhost的关系和区别

    详解127.0.0.1和localhost的关系和区别 前情: 周三有同事突然问 127.0.0.1和localhost有什么不同吗,正好利用这个机会整理一下,这个虽然是大家常见的知识点,但是估计很多 ...

  9. 高调coding,低调做人 peakflys Libjingle和各协议的关系

    前两篇blog介绍了P2P的原理和libjingle库的基本情况,如果直接看代码,很多细节可能不会注意到,这种时候最有效的方法当然是看它的开发文档,因为库是由Google开发和维护,所以这方面我们不用 ...

最新文章

  1. Scrum Master如何让敏捷团队正常运转?
  2. 【深度】清华黄高等人新作:动态神经网络首篇综述
  3. Leet Code OJ 217. Contains Duplicate [Difficulty: Easy]
  4. windows系统作为客户端时,linux中本地yum源挂载时,如何同时挂载DVD1和DVD2?
  5. ssh免密码登陆(三个节点master slave1 slave2)详细带命令版
  6. redux中间件之redux-thunk
  7. 漫步最优化三十六——基本共轭方向法
  8. 一天一工程总结系列-7.2
  9. python文本关联分析,详解Python文本操作相关模块
  10. 自媒体文章采集工具,采集多个平台的文章
  11. word页码怎么从指定页开始设置?
  12. 人员招聘与培训实务【1】
  13. 数据库的三级封锁协议
  14. otf是什么格式?怎么安装呢?
  15. chrome/edge解决不能打开问题
  16. mysql数据迁移与同步常用解决方案总结
  17. 学习笔记与练习 | SQL入门(三)| 复杂一点的查询
  18. 《网络安全2022:守望高质量》报告之数据安全热点事件与趋势解读
  19. 复现NC图表:相关性分析气泡图(热图)---同时展示正负调控关系和显著性
  20. 表面粗糙度的基本评定参数是_表面粗糙度最常用评定参数是什么?

热门文章

  1. TP6踩坑 -- 关联查询
  2. 豆丁网 - 免费在线文档存储网络硬盘
  3. ffmpeg中获取mv/mb_type/dct_coeff/qp和MBSize等数据(H.264)
  4. 记ERP系统在摩托罗拉公司的实施
  5. 麦肯锡三部曲_麦肯锡三部曲推荐
  6. Django设置html背景图片失败,出现“GET /images/2.png HTTP/1.1“ 404 2552
  7. 使用美图秀秀去水印、痘痘、路人甲教程
  8. stm32驱动RFID高频读卡器读取IC卡
  9. python音频颤音算法_数字音效算法的研究与实现
  10. SecureCRT强制卸载