基于STM32和CAN总线的J1939协议的研究
- 格式:pdf
- 大小:1.82 MB
- 文档页数:70
基于J1939的车载CAN总线模拟系统设计秦亚军;康维新【摘要】Aiming at the demand of Internet of vehicles terminal for the test environment, a simulation environment of vehicle CAN bus based on SAE J1939 protocol was designed. The system is composed of upper computer software on PC and lower computer of CAN bus module. The upper computer software interface is designed by QtCreator with excellent cross⁃platform features, it sets and displays vehicle parameters of simulation system and communicates with a serial port. The lower computer platform communicates with the PC through serial ports by MCU and sends the vehicle parameters by CAN bus module. The test results show that the system can work stably, meeting the re⁃quirements of the project for the test environment very well, and can simulate normal on⁃board network at the same time. The system has a certain application value in the vehicle communication system.%针对机动车联网终端对于测试环境的需求,应用SAE J1939协议进行了车载CAN总线仿真环境的设计。
CAN卡与使用J1939应用层协议设备间的通信CAN(控制器局域网)是一种广泛应用于汽车和工业领域的通信协议。
它是一种高速且可靠的通信协议,可以在设备之间传输数据。
J1939应用层协议是一种基于CAN协议的汽车网络协议,主要用于传输车辆的数据和控制信息。
CAN卡与使用J1939应用层协议的设备之间的通信是通过CAN总线完成的。
CAN总线上的每个设备都有一个唯一的标识符,用于识别设备和数据的发送者和接收者。
设备可以通过CAN总线上的消息进行通信,并使用J1939协议定义的数据格式和命令进行交互。
在通信过程中,设备可以发送和接收不同类型的消息。
例如,设备可以发送数据消息,用于传输车辆传感器的测量值或控制命令。
设备还可以发送控制消息,用于设置其他设备的状态或配置参数。
所有的消息都有一个固定的格式,包括消息ID、消息数据和校验字段。
CAN卡在通信过程中扮演着关键的角色。
它负责将消息从一个设备传输到另一个设备,并确保消息的正确传输和接收。
CAN卡上的硬件和软件模块实现了CAN协议的功能,包括消息的发送和接收、消息的过滤和缓冲等。
为了进行CAN与J1939协议的通信,需要使用适配器将CAN卡的接口转换为J1939协议的接口。
适配器相当于一个转换器,它能够读取CAN总线上的CAN消息,并将其转换为J1939协议可以理解的格式。
适配器还可以将J1939协议的消息转换为CAN消息,发送到CAN总线上。
通过CAN卡和适配器,设备可以实现与其他设备之间的通信和数据交换。
例如,在汽车上,各种传感器可以使用CAN卡与车辆的控制器通信,传输引擎温度、车速等数据。
同时,控制器也可以通过CAN卡发送命令到其他设备,实现对车辆的控制和调节。
总之,CAN卡与使用J1939应用层协议的设备之间的通信是通过CAN 总线和适配器实现的。
CAN卡负责处理CAN协议的硬件和软件功能,而适配器负责将CAN消息转换为J1939协议的格式。
这种通信方式在汽车和工业领域得到了广泛应用,可以实现设备之间的高速和可靠的数据传输。
CAN总线及SAEJ1939通讯协议在汽车上的应用引言:CAN总线是“Controller Area Network”的简称,它是一种经典的控制器局域网络,被广泛应用于汽车电子系统中。
而SAE J1939通讯协议是一种基于CAN总线的协议,用于在专用车辆中实现高级自动化功能。
CAN总线及SAE J1939通讯协议的应用使得汽车电子系统的通讯变得更加灵活、高效,并且可以实现更多的功能。
本文将详细介绍CAN总线及SAE J1939通讯协议在汽车上的应用。
1.1.车身电子控制系统1.2.发动机管理系统1.3.刹车控制系统1.4.底盘控制系统1.5.安全系统SAEJ1939通讯协议是基于CAN总线的协议,它是专门针对专用车辆的通讯标准。
SAEJ1939通讯协议的应用可以归纳为以下几个方面:2.1.丰富的数据传输SAEJ1939协议定义了丰富的数据传输格式和数据类型,可以满足复杂的车辆控制和监测需求。
通过SAEJ1939协议,各个控制模块能够高效地传输和解析各种类型的数据,提高了通讯的灵活性和可靠性。
2.2.灵活的网络管理SAEJ1939协议中定义了网络管理的机制,可以实现网络中各个节点的自动配置和故障诊断。
通过SAEJ1939协议,可以实现网络中各个控制模块的自动发现和连通性检测,提高了网络的可靠性和稳定性。
2.3.高级自动化功能SAEJ1939协议的设计目标之一就是支持高级自动化功能的实现。
通过SAEJ1939协议,可以实现车辆之间的信息交换和协同工作,例如车队管理、自适应巡航控制等功能,提高了车辆的安全性和效率性。
2.4.车辆诊断和维护SAEJ1939协议定义了丰富的诊断和维护功能,可以实现对车辆各个控制模块的远程诊断和维护。
通过SAEJ1939协议,车辆制造商和维修人员可以远程获取车辆的故障信息、传感器数据等,提高了车辆的可靠性和可维护性。
结论:综上所述,CAN总线及SAEJ1939通讯协议在汽车上的应用非常广泛,并且具有很大的潜力。
STM32的can总线实验心得(一) 工业现场总线 CAN 的基本介绍以及 STM32 的 CAN 模块简介首先通读手册中关于CAN的文档,必须精读。
STM32F10xxx 参考手册Rev7V3.pdf/bbs/redirect.php?tid=255&goto=lastpost#lastpos t需要精读的部分为 RCC 和 CAN 两个章节。
为什么需要精读 RCC 呢?因为我们将学习 CAN 的波特率的设置,将要使用到RCC 部分的设置,因此推荐大家先复习下这部分中的几个时钟。
关于 STM32 的 can 总线简单介绍bxCAN 是基本扩展 CAN (Basic Extended CAN) 的缩写,它支持 CAN 协议 2.0A 和 2.0B 。
它的设计目标是,以最小的 CPU 负荷来高效处理大量收到的报文。
它也支持报文发送的优先级要求(优先级特性可软件配置)。
对于安全紧要的应用,bxCAN 提供所有支持时间触发通信模式所需的硬件功能。
主要特点· 支持 CAN 协议 2.0A 和 2.0B 主动模式· 波特率最高可达 1 兆位 / 秒· 支持时间触发通信功能发送· 3 个发送邮箱· 发送报文的优先级特性可软件配置· 记录发送 SOF 时刻的时间戳接收· 3 级深度的2个接收 FIFO· 14 个位宽可变的过滤器组-由整个 CAN 共享· 标识符列表· FIFO 溢出处理方式可配置· 记录接收 SOF 时刻的时间戳可支持时间触发通信模式· 禁止自动重传模式· 16 位自由运行定时器· 定时器分辨率可配置· 可在最后 2 个数据字节发送时间戳管理· 中断可屏蔽· 邮箱占用单独 1 块地址空间,便于提高软件效率(二) STM32 CAN 模块工作模式STM32 的 can 的工作模式分为:/* CAN operating mode */#define CAN_Mode_Normal ((u8)0x00) /* normal mode */#define CAN_Mode_LoopBack ((u8)0x01) /* loopback mode */#define CAN_Mode_Silent ((u8)0x02) /* silent mode */#define CAN_Mode_Silent_LoopBack ((u8)0x03) /* loopback combined with silent mode */在此章我们的 Mini-STM32 教程中我们将使用到CAN_Mode_LoopBack和CAN_Mode_Normal两种模式。
基于J 佃39协议CAN ID 优先级的计算方法Bus Idle soFIDs R R 1 D EExtended IDR T Rr 1 r0 [ 2Data FieWCRCD E L A C K DE LEOF1 TMBui Id 佰R 丨irFF PS SA□ata Field•11 i $ 2SSPOUJ1939PDUI I PR D PI I I I I I I PFI I I I I I I PSI I I I I I ISA I I I …I I I Data Field31 18880-64D2&PF^DUffr PS-PDU S5例如:CCVS 报文的ID 号为OX18FEF100,其含义是:(18)16=(00011000)2,优先级 P = (110)2 = 6,数据页位 DP = 0,表 示定义的消息在首页;00FEF1为十六进制 PGN 码,其十进制为 65256, PF 域值(FE )16=254.源地址 SA = (00)16 , 具体定义详见 GB/TXXXX.9 ,《SAE_J1939.pdf 〉RD PPFPDU1:OxOO ♦- PDU2:GE «-位&3 I 2 1 字节2 字节3字节1PGN*PS=DA *PS=GE符号缩写含义:ACK确认NACK否宦BAM广播公告消息P优先级CAN控制器局域网PDU协议数据单元CRC循坏冗余码校验PF PDU格式CTS清除发送PGN参数组编号DA日标地址PS特泄PDU DLC数据反度码GE组扩展DP数据页DA F1标地址EOF帧结束R保留ID标识符RTR远程传输请求IDE标识符扩展位SA源地址LLC逻辑链路控制SOF帧起始LSB锻低有效字节或位SRR代用远稈请求MAC介质访问控制TP传输协议MF制造商Th保持时问MSB谥高冇效字行或位Tr响应时间NA禁用un未定义。
CAN卡与使用J1939应用层协议设备间的通信CAN总线协议:对CAN协议的媒体访问控制子层的一些概念和特征做如下说明: (1)报文(Message) 总线上的报文以不同报文格式发送,但长度受到限制。
当总线空闲时,任何一个网络上的节点都可以发送报文。
(2)信息路由(Information Routing) 在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。
因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。
(3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。
信息以广播方式在网络上发送,所有节点都可以接收到。
节点通过标识符判定是否接收这帧信息。
(4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。
(5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。
(6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。
标识符越小,优先权越高。
(7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。
回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。
(8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。
如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。
通过使用标识符的逐位仲裁可以解决这个碰撞。
仲裁的机制确保了报文和时间均不损失。
当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。
在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。
如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。
基于STM32的CAN总线上下位机通信实验设计作者:刘泰廷李新建来源:《电脑知识与技术》2017年第05期摘要:随着技术的成熟和设备的完善,CAN总线在数据的实时传输和自动控制中展现出良好的灵活性与可靠性。
笔者以STM32为主控芯片搭建硬件电路,利用软件对其进行初始化设置,上位机与电路的连接使用USB—CAN转换器,并采用Visual C++的MFC编写的CAN 调试界面实现数据的实时收发,使上下位机完成通信。
本实验对于CAN总线的使用有一定的指导作用。
关键词:STM32;CAN总线;MFC;通信中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)05-0199-02CAN简称为控制器局域网络(Controller Area Network),它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的现场总线之一,并最终成为国际标准(ISO11519)。
近年来,由于它的高可靠性和良好的错误检测能力受到人们的关注,CAN 总线协议逐渐成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,被广泛应用于汽车控制系统和环境温度恶劣、电磁辐射强的工业环境。
1 实验系统结构组成利用CAN总线可以将传统分布式控制系统的功能分散到不同的现场节点中,本实验只选用一个节点作为下位机的收发模块。
实验的系统框图如图1所示,系统主要分为三个部分:上位机(PC机)、CAN转换器、下位机(CAN收发模块电路)。
一般调试员的PC机(多为笔记本电脑)接入CAN总线往往没有串行接口,为此我们采用USB—CAN协议的转换器接入CAN总线,实现数据之间的转发。
下位机是以STM32F103RCT6单片机作为主控芯片的CAN 收发电路,主要完成数据采集和处理的任务,并实现与CAN总线的数据互传。
上位机利用MFC编写的控制界面,对CAN总线上收到的数据进行显示,同时也可以完成向CAN总线发送数据的指令。
S T M32C A N接收过滤和发送分析通过对CANBUS协议的理解,我们知道:CAN总线上的节点接收或发送数据都是以帧为单位的!!!CAN协议规定了好几种帧类型,但是对于我们应用来说,只有数据帧和远程帧可以通过软件编程来控制。
(其他几种帧都是由CAN控制器硬件实现的,我们想管也管不了)。
而数据帧和远程帧最大的区别在于:远程帧没有数据域。
数据帧分为标准数据帧和扩展数据帧,它们之间最大的区别在于:标识符(ID)长度不同(标准帧为11位,扩展帧为29位)。
为了能更好地理解下面的内容,让我们先来回忆一下标准数据帧是什么样子的:0x5A,!!!我们必须按照帧的格式填充它!TNND,我们来看一下uint32_tuint8_tuint8_tuint8_tuint8_t}CanTxMsg;StdIdStdId用来设定标准标识符。
它的取值范围为0到0x7FF。
ExtIdExtId用来设定扩展标识符。
它的取值范围为0到0x1FFFFFFF。
IDEIDE用来设定消息标识符的类型。
IDE值IDE描述CAN_Id_Standard使用标准标识符CAN_Id_Extended使用扩展标识符RTRRTR用来设定待传输消息的帧类型。
它可以设置为数据帧或者远程帧。
RTR值RTR描述CAN_RTR_Data数据帧CAN_RTR_Remote远程帧DLCDLC用来设定待传输消息的帧长度。
它的取值范围是0到0x8。
Data[8]Data[8]包含了待传输数据,它的取值范围为0到0xFF。
先声明一个CanTxMsg类型的变量,然后按照自己具体的需要,填充此结构变量就可以发送了(帧结构中其他没有填充的部分由硬件自动完成)。
强调:这里的StdId或者ExtId是根据自己的实际需要设置的!我们先抛开它们所代表的实际意义,认为它们存在的目的是为了“进攻”。
(发送出去让别人过滤)接下来,我们来看接收,第一个问题就是它是怎样接收的?------过滤!!!无数的初学者都倒在了这里。
CAN2.0与J1939协议1、CAN2.0ACAN2.0A帧格式帧起始:SOF:start of frame;1位:显性:为0;仲裁场:ID:11位的ID;数值越小,优先级越高;RTR位: Remote terminal Request:远程终端请求;控制场:IDE位:ID扩展位;R0位:保留位;DLC: Data Length Code;数据长度码;数据场:0-8字节;校验场:15位CRC+1位CRC分隔符;应答场:1位应答+1位应答分隔符;帧结束:EOF:End Of Frame:7位:隐性:为1;CAN2.0A帧,不含数据场,共44位。
2、CAN2.0BCAN2.0B帧格式:帧起始:SOF: Start Of Frame;仲裁场:ID:11位ID;SRR;代用远程请求;IDE:ID:18位ID;RTR:控制场:R1、R0保留位;DLC;4位的数据长度码;数据场:0-8字节;校验场:15位CRC+1位CRC分隔符;应答场:1位应答+1位应答分隔符;帧结束:7位1;CAN2.0B帧比CAN2.0A帧,在仲裁场多出20位,共64位(不含数据场)。
3、J1939J1939是在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为扩展地址。
STM32上的CAN通讯是什么CAN模式功能的详细分析CAN通信是控制器局域网(Controller Area Network)的缩写,它是一种广泛应用于工业领域的一种网络通信协议。
CAN通信协议最初是由德国BOSCH公司于1986年研发,主要用于汽车电子系统。
后来,CAN逐渐成为一种通用的通信协议,并且在其他领域,如工业自动化、航空航天等也得到了广泛应用。
CAN通信协议具有高可靠性、高实时性和高带宽的特点。
在STM32上,我们可以通过硬件支持的CAN接口实现CAN通信。
CAN通信协议可以分为两种模式,分别是CAN2.0A和CAN2.0B。
这两种模式的主要区别在于帧标志和数据帧的识别方式。
下面对CAN2.0A和CAN2.0B的主要特点进行详细分析。
一、CAN2.0A模式:在CAN2.0A模式下,帧标志位由11位组成,其中前6位是ID标识符,后5位是RTR(远程传输请求)和IDE(扩展标示符位)。
1.ID标识符:用于表示消息的优先级和类型。
CAN2.0A模式下,ID标识符可以是11位长,可以表示2^11=2048个不同的消息标识符。
2.RTR位:用于区分数据帧和远程帧。
当RTR=0时,表示是数据帧;当RTR=1时,表示是远程帧。
3.IDE位:用于区分标准帧和扩展帧。
当IDE=0时,表示是标准帧;当IDE=1时,表示是扩展帧。
二、CAN2.0B模式:在CAN2.0B模式下,帧标志位由29位组成,其中前11位是ID标识符,后18位是RTR(远程传输请求)和IDE(扩展标示符位)。
1.ID标识符:用于表示消息的优先级和类型。
CAN2.0B模式下,ID标识符可以是29位长,可以表示2^29=536,870,912个不同的消息标识符。
2.RTR位:用于区分数据帧和远程帧。
当RTR=0时,表示是数据帧;当RTR=1时,表示是远程帧。
3.IDE位:用于区分标准帧和扩展帧。
当IDE=0时,表示是标准帧;当IDE=1时,表示是扩展帧。
基于CAN总线的汽车仪表设计研究汽车仪表是汽车与驾驶员进行信息交流的窗口,是汽车信息的中心,能够集中、直观、迅速地反映汽车在行驶过程中的各种动态指标,如行驶速度、里程、电系状况、制动、压力、发动机转速、冷却液温度、油量、各种危险报警。
随着科技进步,汽车排放、节能、安全和舒适性等使用性能不断提高,汽车电子控制程度也越来越高。
汽车电子控制装置必须迅速、准确地处理各种信息,并通过仪表显示出来,使驾驶员能够及时了解并掌握汽车的运行状态,以妥善处理各种情况。
这里给出一种基于CAN(Controller Area Network)总线的汽车仪表设计方案。
该仪表利用CAN 总线使其成为车身网络一部分,遵循SAE J1939 协议读取发动机转速、水温等信息。
仪表还能接收传感器的车速、油量、油压、制动气压等信号并显示,为驾驶员提供实时车辆工况。
所设计的仪表主要应用于重型运输车等领域,在某重型车辆工厂进行的试验结果表明,该仪表能够满足数据可靠性及实时性等要求。
1 CAN 总线及SAE J1939 协议1.1 CAN 总线及SAE J1939 协议简介CAN 总线属于现场总线的范畴,是德国Bosch 公司在20 世纪80 年代初为解决现代汽车中众多的控制和测试仪器之间的数据交换而开发的一种有效支持分布式控制或实时控制的串行通信网络。
CAN 总线的通信实时性强,数据传输速率可高达1 Mb/s,通信介质可以是双绞线、同轴电缆或者光导纤维,通过标准的插接件能够方便的连接。
CAN 总线的数据通信具有突出的可靠性、实时性和灵活性,是目前应用最广泛的一种汽车总线。
SAEJ1939 协议是美国汽车工程师协会SAE(Societv of Automotive Engineer)发布的以CAN2.0B 作为网络核心协议的车辆网络串行通信和控制协议。
J1939 是参照ISO 的开放式数据互联模型定义的7 层基准参考模型而制定的。
该协议明确规定汽车内部ECU 的地址配置、命名、通讯方式以及报文发送优先级等,并且。
基于SAEJ1939的增程式客车CAN总线设计随着信息化时代的到来,越来越多的客车采用了CAN总线进行控制和数据传输。
SAEJ1939通信协议是一种通用的CAN总线协议,被广泛应用于客车、卡车等车辆的控制系统中。
本文将介绍基于SAEJ1939的增程式客车CAN总线设计。
设计目标该客车设计目标是使总线能够实现高效传输,采用增程式架构满足车辆现代化技术的使用需求,并且能够在长途旅行时始终保持稳定的通信信号。
设计方案1.总线拓扑结构本设计采用增程式总线拓扑结构,以保证信号在系统中尽可能少地减弱。
增程式系统将客车采集器与各个节点单元连接起来,确保信号传输的速度和可靠性。
2.电缆结构为确保信号传输质量,本设计使用低噪声、低阻抗的双绞线电缆。
为了防止电缆过长造成信号衰减,电缆长度应尽可能短。
3.网络通信协议本设计使用SAEJ1939通信协议。
这种协议具有严格的消息格式和顺序,可提高消息传输的可靠性和实时性。
同时,该协议需要满足客车控制系统对数据传输进行安全检测的需求。
4.网络数据传输速率为了确保目标的高效传输,本设计采用250 kbps的数据传输速率。
这个速率被认为是最快的和最靠谱的,能够支持车辆控制系统和传感器数据的实时传输。
实现过程尽管实现过程具有复杂性,但一般遵循如下流程:1.设计系统物理结构考虑客车的所有部件,例如发动机、传感器、控制器、仪表等,然后根据客车的拓扑结构设计增程式总线的物理结构。
2.选用合适的硬件按照设计所需要的要求选用合适的硬件部件,例如控制器、传感器、调制解调器等。
3.程序开发编写增程式客车CAN总线程序,并根据SAEJ1939通信协议编程,以适应车辆控制系统对数据传输进行安全检测的需求。
4.系统测试对整个系统进行测试以验证总线方案的正确性和健壮性。
在测试期间,要监测数据传输速率和数据处理时间,以确保系统在客车上的正常工作。
结论基于SAEJ1939的增程式客车CAN总线设计,能够有效提高控制系统和传感器数据的实时性和传输质量。