转自:http://blog.sina.com.cn/s/blog_bf97bd7e0102wl2y.html 这几天在公司看了SAE推行的 J1939标准(SAE:美国汽车工程协会),这里整理下学习要点...有几个概念先介绍下: 帧 (Frame):组成一个完整信息的一系列有序的数据位; 其中CAN帧以帧起始(SOF)开始,以帧结束(EOF)结尾; 标准帧:定义为11位标识符 扩展帧:定义为29位标识符 报文...(Message):一个或多个具有相同参数组编号(PGN)的CAN数据帧;(一个或多个 CAN数据帧具有相 同PGN号,就是报文) 包(Packet):一个单一的CAN数据帧就是1个包;(一个报文包含参数组的长度小于等...于8字节,也称为包) 多包报文:当具有相同参数组编号(PGN)的所有数据需要使用多个CAN数据帧来传输时使 用的一种J1939报 文。...数据扩展页(EDP)和数据页(P)关系: 扩展数据页位 (EDP) 数据页位 (DP) 功能描述 0 0 SAE J1939 第0页PGN 0 1 SAE J1939 第1页PGN 1 0 SAE J1939
PF用来确定PDU格式:0——239表示PDU1格式;240——255表示格式2。
J1939属于“更高层的协议” J1939是基于CAN的,CAN提供了基本的“物理层”和“数据链路层”,这是OSI模型的最低层。 基本上CAN只允许在CAN总线上进行简单通信,但仅此而已。...因此, J1939 IoT(物联网)记录器的安全性越来越受到重视。同时,OEM将会从传统CAN逐渐转向CAN FD ,向具有可变数据域速率的J1939协议过渡。...示例:解析J1939中SPN 190(发动机转速) 假设您记录了原始的J1939报文,如下所示: CAN ID 数据字节 0CF00401 FF FF FF 68 13 FF FF FF 通过将CAN...J1939 DBC文件可用于解码大多数重型车辆上的数据。原始的J1939数据可以用CAN总线数据记录器记录,并在支持DBC转换的CAN软件工具(例如PCAN-Explorer6软件)中进行分析。...连接器与非接触式读取 要将CAN分析仪接到用J1939通信的机器(例如卡车)上时,通常可以使用9针J1939连接器。
摘要 本篇笔记主要记录基于恩智浦MPC5744P的SAE J1939协议栈开发,接口设计,以之前总结的CAN驱动设计为基础。 准备工作 准备一个CAN驱动可以正常工作的工程。...CAN 的高层协议,J1939 是基于CAN2.0B的扩展帧,29位标识符,支持单帧和多帧收发通信。本次设计主要实现SAE J1939 数据链路层和网络管理层。...J1939和CAN接口 接口函数 基于上次做好的CAN驱动提供一个发送函数,一个接收处理函数,作为与J1939协议栈的接口,来完成J1939所有功能的实现和应用。...接收接口用于获取总线上的CAN报文帧,然后交由J1939的处理函数解析。这里发送函数未列出。...测试 SAE J1939协议是CAN的高层协议,是一种广泛应用于重型车,特种车,农机,以及非路面设备车辆等。
J1939基于德国Bosch公司在上世纪80年代开发的控制器局域网络(Controller Area Network,CAN), CAN总线。...CAN总线描述了一种车辆各控制单元之间不分主从节点的通信网络, 各控制单元之间通过报文通信。...J1939描述了CAN总线的一种网络应用,包括CAN网络物理层定义、数据链路层定义、应用层定义、网络层定义、故障诊断、和网络管理。...在SAE J1939协议中,不仅仅指定了传输类型、报文结构及其分段等,而且报文内容本身也做了精确的定义, 下面对它们详细进行描述。 SAE J1939 不同于在乘用车行业的CAN通信协议。...简单来说, 对所有要发送的数据, 该软件包负责将应用软件里的数据进行转换、分解、然后把CAN数据帧发送到J1939 网络; 对所有要接收的数据, 该软件包负责从J1939 网络接收、转换、重组, 然后提供给应用软件
By Toradex秦海 1).简介 CAN(Controller Area Network)总线是嵌入式设备最为常用的接口之一,常用于汽车以及工业自动化等嵌入式领域,因此本文就基于嵌入式Linux演示使用...Linux系统通过SocketCAN层提供CAN支持,使得可以使用类似操作socket API函数来操作CAN总线,具体关于SocketCAN说明请见这里。 b)....————————– 5).总结 利用SocketCAN可以非常方便的在Linux下使用CAN总线,另外CAN总线也支持同时发送并接收,这里就不做演示了。...Linux系统通过SocketCAN层提供CAN支持,使得可以使用类似操作socket API函数来操作CAN总线,具体关于SocketCAN说明请见这里。 b)....————————– 5).总结 利用SocketCAN可以非常方便的在Linux下使用CAN总线,另外CAN总线也支持同时发送并接收,这里就不做演示了。
1,熟悉SAE J1939标准,熟悉ST STM32Cube_FW_F4_V1.21.0结构和接口以及例程 2,装有IAR的电脑 3,带有CAN 收发器的板子,因为开发板上的只有CAN接口,不带收发器,...协议栈,如果熟悉J1939的话会很容易移植到ST芯片上。...完成后可以先编译测试确保驱动没有问题,包含我们之前曾经多次开发过的J1939的协议栈代码,修改接口参数,主要是修改J1939的发送和接收处理函数内容, ?...至此我们已经成功在STM32F446上实现了J1939通信。...总共给大家介绍过多次有关J1939程序的开发,前后在NXP KV46系列,K64系列,KEA系列等MCU上实现J1939协议栈,今天完成在ST平台上的开发,有相关项目需求的客户欢迎联系, SAE J1939
准备工作 1), 熟悉SAE J1939标准,熟悉ST STM32CubeMX, 和STM32Cube_FW_F1_V1.8.0结构 2), 装有IAR的电脑 3), 带有CAN 收发器的板子,因为开发板上的只有...熟悉ST的Cube架构 ST官方提供Cube帮助工程师快速开发产品原型,类似于软件SDK,包含所有外设驱动,还有例程,之前多次讲过在NXP平台芯片上做J1939协议栈,如果熟悉J1939的话会很容易移植到...我们使用SysTick 1ms来作为系统的时基,生成的工程里只有CAN的初始化代码,需要我们添加中断函数,并且启动CAN。可以重新建立两个文件来完成CAN的相关代码。...添加完CAN驱动后,确认编译没有问题,且驱动收发正常,这时候开始动手移植我们之前多次成功在其他平台上移植的J1939协议栈。 4....协议栈移植 添加j1939相关文件到工程,其实移植主要修改几个函数,需要熟悉J1939的PDU结构,不熟悉J1939的可以自己查找相关文档,或者去听听我在发烧友学院的课程 ?
摘要 本篇笔记主要记录J1939诊断协议和UDS基于CAN的诊断协议为什么可以和谐共处。 准备工作 J1939标准文档。...分为基于CAN的UDS如UDSonCAN ISO14229-3,还有基于以太网,基于LIN总线,等等,我们这里主要来了解基于CAN总线,因为车上诊断目前大多使用CAN。...SAE J1939 J1939已经介绍了很多,相信大家都不陌生,1939是应用于商用车和重型车辆,以及特种车辆等车上的通信协议,其中包含诊断协议J1939-73,而要实现J1939的诊断协议,需要熟悉数据链路层...J1939-21,这个对开发J1939协议栈非常重要。...和谐共存 在J1939的协议中,给UDS留了后门,PGN 52480,52736,55808,56064.
车辆网络实例 2、 SAE J1939数据链路层 SAE J1939以CAN2.0B为基础,通过CAN总线进行数据通信。...2.1 消息/帧格式(1) 消息格式需适应CAN网络的要求变化。需要指出的是,当CAN规范和SAE J1939有差异之处时,参照SAE J1939。CAN文档规定,在消息路由选择中不使用节点地址。...某些CAN网络中正确的应用并不一定适用于SAE J1939。...SAE J1939网络定义中规定,节点寻址是用来防止多节点使用同样的CAN网络标识符字段,许多SAEJ1939中的附加要求在CAN网络中并没有规定。...SAE J1939消息帧格式 SAE J1939和CAN的仲裁场与控制场 参数群编号( PGN) 在CAN数据帧的数据场中需要指明参数群时所使用的编号, PGN是表示成24位。
国三标准规定柴油机必须遵循SAE J1939协议,SAE J1939是在CAN总线基础上定义的,它的数据链路层规定了CAN总线使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps。...这里不讨论SAE J1939协议的物理层,只专注软件层面。 SAE J1939协议将CAN 2.0B的29bit扩展帧标识符进行的分段定义: 最高的三位为Priority(优先级)字段。...SAE J1939协议发送小于等于8字节的报文时使用一个CAN帧就可以,发送长度大于8字节的报文是需要分成多个CAN帧的。这里只讨论数据长度小于等于8字节时的报文。...SAE J1939的CAN扩展帧定义: 可以看出来SAE J1939协议其实就是在CAN协议的基础上封装了一层,相比较计算机网络的7层协议来说已经简单很多了,可能这就是SAE J1939协议的设计目的...当然了,除了可以读取来自ECU的数据,我们还能够写数据到发动机中去,按照SAE J1939协议设置好CAN帧的优先级、PGN、源地址和数据,发送给ECU即可。
J1939多帧 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132710.html原文链接:https://javaforall.cn
由于现有J1708/J1587协议对于CAN报文标识符从11向29位扩展的兼容性需求,就要求J1939在CAN模块的开发和相应协议的实施中支持此种报文格式。...图表:在ISO/OSI参考模型中的SAE J1939 物理层 SAE J1939协议基于CAN总线,并且将其作为物理层使用(控制器局域网,ISO 11998-1和ISO 11998-2)。...有如下规格说明: SAE J1939/11 定义了CAN高速总线连接,符合ISO/DIS 11898,带屏蔽双绞线和接地。...数据链路层 SAE J1939/21描述了通过基于CAN的CAN 2.0B规范进行的数据通讯。特殊的是,这种“扩展的模式”用于通讯;”标准的模式”仅用于供应商特定的应用。...CAN标识符 J1939报文基于CAN 2.0B规范,并且使用特定的”扩展帧”。它们使用29位的标识符而不是通常的11位标识符。J1939-21使用这个29位标识符定义区域,如下所示。
J1939是CAN通讯的一种高层协议,广泛应用于商用车,和大型机械建筑设备,非路面设备,农林消防设备等,前段时间给大家做了J1939系列课的培训,关于常用的测试软件和设备,我常用的有三种,今天我们来看下...最基础的测试设备就是可以买一个CAN转USB的设备连接到电脑,通过PC安装J1939协议分析的插件可以分析J1939通信, 像ZLG等都有这样的软件和设备 ?...我们可开发带J1939功能的不同嵌入式控制产品设计,已有成功的产品在用。如有中小项目和产品开发需求的老板或者朋友欢迎和我们联系。
CAN做为应用比较广泛的通信总线,受到了越来越多的客户喜欢和青睐,广泛应用于工业和汽车,常见的高层协议有CANopen,J1939,DeviceNet等,在公众号曾经分享过超过15篇有关CAN的高层协议...J1939的有关内容,今天起我们将连续分6次推文来详细介绍CAN的高层协议J1939的基础和应用以及开发,应该算是比较全面系统的介绍,希望对大家有帮助,如果对你有帮助,欢迎关注嵌入式程序猿公众号。...SAE J1939通信是基于CAN通信的一种高层协议,广泛应用于商用车,各种卡车,重型建筑车辆,发电机组,农业机械,森林防火车辆,以及特种车辆,现在也被广泛应用移植于工业控制。...SAEJ1939 协议是由汽车工程协会(SAE)定义的,基于传输可靠性能优越的CAN-bus总线,常用250Kbps,500Kbps的通讯速率。...在协议中,报文内容本身做了精确的定义, SAE J1939协议由美国SAE( Society of AutomotiveEngineers)组织维护和推广。
CAN做为应用比较广泛的通信总线,受到了越来越多的客户喜欢和青睐,广泛应用于工业和汽车,常见的高层协议有CANopen,J1939,DeviceNet等,在公众号曾经分享过超过15篇有关CAN的高层协议...J1939的有关内容,今天起我们将连续分6次推文来详细介绍CAN的高层协议J1939的基础和应用以及开发,应该算是比较全面系统的介绍,希望对大家有帮助,如果对你有帮助,欢迎关注嵌入式程序猿公众号。...SAE J1939通信是基于CAN通信的一种高层协议,广泛应用于商用车,各种卡车,重型建筑车辆,发电机组,农业机械,森林防火车辆,以及特种车辆,现在也被广泛应用移植于工业控制。...SAEJ1939 协议是由汽车工程协会(SAE)定义的,基于传输可靠性能优越的CAN-bus总线,常用250Kbps,500Kbps的通讯速率。...今天我们来看J1939驱动开发,主要搞懂以下问题 数据链路层 网络管理层 驱动架构 数据结构 模块化设计 应用数据处理 ? ? ? ? ? ? ?
正如CAN的高层协议J1939标准所规定,传输协议功能是数据链路层的一部分,主要完成消息的拆装和重组以及连接管理,稍微了解一点CAN通信的童鞋应该知道,长度大于8字节的消息无法使用单个CAN数据帧来传输...标准定义数据域的第一个字节作为多包消息的编号,例如,1,2,3......最大的数据长度为255 * 7 = 1785字节,也就是说J1939的多帧最多可以传送1785个字节。...void j1939tp_update_rx_rtscts( uint8_t index ),涉及标准的内容很多,不能给大家一一列举,如果你想深入理解J1939的应用和开发一定好好看标准。...目前J1939已经越来越多的在使用,像重卡,公交,校车,拖车,重型机械设备,发电,船舶,舰艇,农机,等等,我们已经在多种芯片上实现了J1939通讯。...如有相关项目欢迎联系,保证保量高质量为您提供J1939的通讯。
预备知识 1.熟悉CAN2.0B协议,及相关硬件驱动开发 2.熟悉SAE J1939协议 程序移植流程 image.png 移植示例(demo) 以下示例,对德国英飞凌XMC4500(MCU)芯片自带的CAN模块上移植J1939协议源代码,代码中can驱动函数,can的驱动结构体,.../UserApp/includes.h"//用户,自己工程必要的声明头文件 /******************************J1939地址和标识符配********************...( ((CAN_NODE_t *)&CAN_NODE3_DEBUG)->lmobj_ptr[0]); //将29位标志位(can_identifier)写入J1939的结构中 _id = ((CAN_NODE_t...() { ; } #endif 备注 J1939与CAN2.0B驱动接口函数在后面,将逐一的分析。
在许多方面,J1939标准类似于旧版J1708和J1587标准,但J1939标准协议建立在CAN(控制器区域网络,ISO11898)上。 物理层(J1939/11)描述了针对客车的电气接口。...J1939主要特性 J1939协议标准基于CAN的高层协议 J1939协议应用于重型车辆 J1939协议传送速度稳定在250kbps 报文格式及使用方法(J1939/21) MJ1939标准定义的大部分报文均旨在广播...J1939使用CAN 2.0B协议中定义的29位标识符,如图1所示。含有指定目标地址的报文(“PDU 1”)与旨在广播的报文(“PDU 2”)使用的标识符略有不同。...SOF,SRR和IDE位由CAN标准定义,这里忽略。RTR位(远程请求位)在J1939中总是设置为0。 J1939协议中使用的29位标识符结构如下。...我们来看一条内容如下的J1939报文: CAN标识符: 0xCF00401 数据字节: 0xFF FF 82 DF 1A FF FF FF CAN-ID 提供了什么信息?
在做正式的产品时候,经常我们的产品需要可以升级固件,这时候就需要bootloader引导,而在车载上,基于J1939的bootloader可靠性非常重要。要能够快速,有效且安全的更新固件。...对跑在J1939通信上的bootloader,跟我们以前做bootloader考虑的一样,只是换了个通信方式和接口,一般情况下,如果是自定义的PGN,一般放在PGN61184用专有A来作为bootloader...做基于J1939通信的bootloader,需要考虑三种帧来传输地址包,数据包,和命令包。...通常基于其他通信的bootloader,我们也需要来考虑这几种传输,如果你对J1939协议比较清楚,应该是很容易实现的,最近我在电子发烧友学院做《带你跨越J1939通信开发之路》的直播,相信你学完后,一定可以自己做基于...J1939的开发项目。
领取专属 10元无门槛券
手把手带您无忧上云