转自: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。
摘要 本篇笔记主要记录基于恩智浦MPC5744P的SAE J1939协议栈开发,接口设计,以之前总结的CAN驱动设计为基础。 准备工作 准备一个CAN驱动可以正常工作的工程。...CAN 的高层协议,J1939 是基于CAN2.0B的扩展帧,29位标识符,支持单帧和多帧收发通信。本次设计主要实现SAE J1939 数据链路层和网络管理层。...J1939和CAN接口 接口函数 基于上次做好的CAN驱动提供一个发送函数,一个接收处理函数,作为与J1939协议栈的接口,来完成J1939所有功能的实现和应用。...接收接口用于获取总线上的CAN报文帧,然后交由J1939的处理函数解析。这里发送函数未列出。...测试 SAE J1939协议是CAN的高层协议,是一种广泛应用于重型车,特种车,农机,以及非路面设备车辆等。
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总线也支持同时发送并接收,这里就不做演示了。
车辆网络实例 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位。
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连接器。
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)组织维护和推广。
J1939是CAN通讯的一种高层协议,广泛应用于商用车,和大型机械建筑设备,非路面设备,农林消防设备等,前段时间给大家做了J1939系列课的培训,关于常用的测试软件和设备,我常用的有三种,今天我们来看下...最基础的测试设备就是可以买一个CAN转USB的设备连接到电脑,通过PC安装J1939协议分析的插件可以分析J1939通信, 像ZLG等都有这样的软件和设备 ?...我们可开发带J1939功能的不同嵌入式控制产品设计,已有成功的产品在用。如有中小项目和产品开发需求的老板或者朋友欢迎和我们联系。
J1939基于德国Bosch公司在上世纪80年代开发的控制器局域网络(Controller Area Network,CAN), CAN总线。...CAN总线描述了一种车辆各控制单元之间不分主从节点的通信网络, 各控制单元之间通过报文通信。...J1939描述了CAN总线的一种网络应用,包括CAN网络物理层定义、数据链路层定义、应用层定义、网络层定义、故障诊断、和网络管理。...在SAE J1939协议中,不仅仅指定了传输类型、报文结构及其分段等,而且报文内容本身也做了精确的定义, 下面对它们详细进行描述。 SAE J1939 不同于在乘用车行业的CAN通信协议。...简单来说, 对所有要发送的数据, 该软件包负责将应用软件里的数据进行转换、分解、然后把CAN数据帧发送到J1939 网络; 对所有要接收的数据, 该软件包负责从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,熟悉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的可以自己查找相关文档,或者去听听我在发烧友学院的课程 ?
由于现有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诊断协议和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.
在做正式的产品时候,经常我们的产品需要可以升级固件,这时候就需要bootloader引导,而在车载上,基于J1939的bootloader可靠性非常重要。要能够快速,有效且安全的更新固件。...对跑在J1939通信上的bootloader,跟我们以前做bootloader考虑的一样,只是换了个通信方式和接口,一般情况下,如果是自定义的PGN,一般放在PGN61184用专有A来作为bootloader...做基于J1939通信的bootloader,需要考虑三种帧来传输地址包,数据包,和命令包。...通常基于其他通信的bootloader,我们也需要来考虑这几种传输,如果你对J1939协议比较清楚,应该是很容易实现的,最近我在电子发烧友学院做《带你跨越J1939通信开发之路》的直播,相信你学完后,一定可以自己做基于...J1939的开发项目。
J1939多帧 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132710.html原文链接:https://javaforall.cn
SAE J1939是CAN的一种高层协议,像CANOpen,Devicenet都属于CAN的高层协议,因为J1939算是比较简单的一种,广泛应用于重卡,农林,船舶,以及一些非高速路面机械,像挖掘机,压路机...,柴油发电机,有的军工产品也是采用基于J1939的协议做一些修改。...因为SAE J1939的协议文档不是免费的,而且正版的价格不菲,一套SAE J1939最新的文档需要700多美元 ?...跟CAN相关的分析解析仪器和产品也很贵,对许多初学者带来了很高的门槛,尤其是初次接触这协议得下很大功夫才能熟悉,我记得小猿初次接触是几年前了,当时也是反复的看了协议很多遍,才理清了脉络,然后开始写代码,...抽空对之前做的J1939的部分代码做了些优化和修改 ? 其实只要你对标准协议熟悉了,你自己一样可以写出J1939的协议栈,应用于你的项目和工程。
国三标准规定柴油机必须遵循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即可。
SAE J1939 跟CANOpen,DeviceNet等一样都隶属于CAN的高层协议,J1939广泛应用于卡车,船舶,农林等设备,也正在拓展至其他的行业,因其属于CAN高层协议里面比较简单的一种,所以学习起来难度不是很大...今天的内容基于你已经了解J1939协议,如果不是很清楚可以看看之前的文章 SAE J1939 协议简介(一) SAE J1939 协议简介(二) SAE J1939 协议简介(大结局), 1 熟悉...PGN PGN即Parameter Group Number是J1939协议中用来标识参数集所定义的,共有24位,占三个字节,是CAN 29位标识符的一部分,其实SAE J1939这种高层协议都是充分利用了...CAN的29位标识符,因为对CAN的29位标识符在CAN 2.0中并没有做具体规定,所以这就给高层协议的制定留下了很大的空间,通过一张表就可以清楚的知道。...PDU 被封装在一个或多个CAN 数据帧中,通过物理介质传送到其他网络设备。每个CAN 数据帧只能有一个PDU。需要指出的是,有些参数组编号定义需要多个CAN 数据帧才能发送其数据 。 ?
~2路CAN通道。...接口can卡,工控机或单板电脑扩展CAN通道的佳选,支持j1939、canopen、dbc等协议规范的分析或解码,提供linux/ubuntu、vxworks、qnx、intime、sylixos等系统开发包...3,典型应用 minipcie接口can卡,工控机或单板电脑扩展CAN通道的佳选,,提供windows、linux/ubuntu、vxworks、qnx、intime、sylixos等系统开发包,全程专家指导服务...更多提供usbcan卡,usb转can、can分析仪、pcican卡、can转换器、can转串口rs232/rs485/uart模块、can转以太网/wifi/wlan/tcpip/光纤以太网、can网关...、 canbridge、can中继器、can总线隔离器、can连接线缆、can专用连接器、can网络测试分析软件等等。
领取专属 10元无门槛券
手把手带您无忧上云