基于STM32和CAN总线的J1939协议的研究
基于J1939的车载CAN总线模拟系统设计

基于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(控制器局域网)是一种广泛应用于汽车和工业领域的通信协议。
它是一种高速且可靠的通信协议,可以在设备之间传输数据。
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总线及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总线实验心得

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两种模式。
SAEJ1939

SAEJ1939协议更大程度地发挥了CAN优异的性能。
(二)SAEJ1939报文帧格式
J1939的信息是以PDU(Protocol Data Unit协议数据单元)的形式进行传输的,PDU的封装在应用层中完成。PDU提供了组织信息的框架,这一点对于每一个要发送的CAN数据帧来说是至关重要的。
车速、发动机转速、冷却水温度、燃油油量采用步进电机(VID29-02)驱动指针指示,里程信息采用里程表专用段式LCD模块LCM1010显示,各开关和报警信号则采用LED指示灯。
二、CAN总线及SAEJ1939协议分析
(一)CAN总线及SAEJ1939协议介绍
CAN(Controller Area Network)总线是德国Bosch公司在80年代初为解决数据可靠交换而开发的一种串行数据通信总线,它强调了实时性,又具有极高的可靠性和独特的设计,在现代汽车中已经成为必备装置。为进一步减少车身线束,方便故障诊断,满足主要电控单元和系统间大量数据信息实时交换的需要,使汽车各方面性能趋于最佳状态,基于CAN总线的C类网络被应用于车内数据通讯。CAN总线有效地将发动机电控系统、驱动防滑系统、自动巡航系统等连接成为一个综合控制系统,使整车性能得以大幅提高。
对于现代汽车而言,汽车仪表是汽车信息的中心,集中、直观、迅速地反映了汽车在行驶过程中的各种动态指标,如行驶速度、里程、电系状况、制动、压力、发动机转速、冷却液温度、油量、及各种危险报警。
汽车仪表已成为体现汽车高精尖技术的主要部分。
本文所述的总线式汽车仪表一方面具有传统仪表的数据采集功能,另一方面利用CAN总线技术,使该仪表成为车身网络的一部分,集中处理来自其他电控单元的数据,且其通讯符合SAEJ1939协议,可以与汽车上其他按照此协议工作的电控单元进行通讯。
基于J1939协议CANID优先级的计算方法

基于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卡与使用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总线上下位机通信实验设计

基于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总线发送数据的指令。