APP下载

基于STM32的CAN总线通信节点设计探讨

2018-12-20刘曦国网四川省电力公司信息通信公司

数码世界 2018年11期
关键词:总线消息传输

刘曦 国网四川省电力公司信息通信公司

1 关于CAN总线的基本概述

近年来,随着我国计算机软件及硬件技术的快速发展,以及集成电路技术的普遍应用,两者的有机结合技术也被广泛行业技术人员探索性的应用于提高和优化分布式工业系统的控制,其技术结合呈现出的独特技术优势使其在自动化工业领域得到高度认可。其中,CAN总线技术就是计算机技术和集成电路技术完美结合的成功技术之一,其在技术应用上具备灵活性和可靠性等优势,具有广阔的开发和应用前景。

1.1 CAN总线的基本工作原理

基于多主机控制器的串联数据传输是CAN总线技术的显著技术优势之一,其通常可以使用光纤电缆或双绞线进行操作。如果某一节点从总线上发出数据,其他节点就会以消息的方式收到传输的数据,此外,通过不同的标识符来区分不同的消息,并且根据不同的标识符来划分消息的优先级。通常,相同的CAN总线系统使用唯一的识别符号。并迅速转化为报文发送的状态。在网站收到消息后,它会检查以确定信息的值。

1.2 CAN协议的特点

CAN协议具有以下特点:①多主控制的特点。通常总线传输是经过的第一个节点可以获得优先传输权。不同节点信息的优先级可以充分保证信息的真实性和有效性;②系统的灵活性。通常CAN总线协议可以通过不强行改变节点的方式来灵活地添加控制节点;③通信速度。通常,统一网络的每个单元中存在相同的通信速度,并且不同的网络单元具有不同的通信速度;④消息优先判断的特点。系统逐个比较不同节点的分组信息,判断其中的获胜节点,并发送消息信息;⑤远程数据请求。通常,CAN总线协议可以基于不同节点间发送的数据请求,实时选择性的向其他节点发送所需的数据信息;⑥错误检测。CAN总线协议可以实现定期的错误自身检测功能。⑦连接和传输距离。通常,在实际连接和传输中,为了提高总线系统的通信速度,应尽可能减少可连接单元的数量。

1.3 CAN协议的通信过程

通常,CAN总线通信过程可以基于诸如数据帧等不同类型的消息格式来执行数据传输的工程。信息传输距离通常是影响通信时间的重要因素。通常通信过程中出现的数据累积和过载现象是由于CAN总线传输信息过多而导致,这显然不利于数据的平平稳传输。同时,工作人员可以根据需要;添加通信节点,而不更改节点应用程序层结构。此外,在总线操作期间也会由于一些其他因素的干扰而发生冲突现象,此时当总线空闲时,通信单元将发送消息,以解决冲突。

2 基于STM32的CAN总线通信节点的设计探讨

2.1 系统总体结构设计探讨

上位机(如PC主机),数据转换器和现场节点通常是CAN总线系统的主要组成单元。主计算机通过数据转换器连接到CAN总线。主节点由运行在主机上的LABVIEW编写的监控软件实现。数据转换器采用STM32连接到CAN总线系统,主要是串行协议和CAN协议的桥接,并转发接收的数据。每个节点不仅需要连接到对应的目标功能仪表,还需要连接到CAN总线,并通过从CAN总线接收或发送数据。

2.2 基于STM32的CAN总线通信硬件设计探讨

(1)CAN总线的拓扑结构

基于多个节点的分布式控制是CAN总线的拓扑结构的基本原则,可保障CAN总线的可靠性,适合传输各种数据信息。

(2)CAN总线节点的硬件组成

CAN总线节点的硬件结构通常可以:①将CAN总线控制器的MCU连接到CAN的收发器,并将其连接到CAN总线。②将控制器MCU连接到独立的CAN控制器,然后连接CAN收发器以形成CAN总线的硬件结构。两种两种类型的硬件结构组成,无论采用何种解决方案,CAN收发器都是CAN总线的节点连接总线的必经之路。

(3)STM32的CAN通信模块

STM32的CAN通信模块主要包含初始化模块,正常工作模式,睡眠模式三种主要模块。初始化模块通常基于软件的设置来完成,而CAN模块的初始化的启动和退出通常基于CAN寄存器的设置来实现。一般情况下,在初始化模式下,CAN总线通信模块无法接收和发送消息。基于STM32的CAN总线在模块初始化后,将进入正常工作模式,并可以实现对传输信息的正常收发。但是,通信模块的收发模块功能模块只能在总线空闲时执行。但当基于STM32的CAN通信模块处于睡眠模式时,对邮箱寄存器的访问仍然可以通过软件控制来实现,即使在CAN通信模块停止工作时。

2.3 基于STM32的CAN总线通信软件设计探讨

(1)系统软件的设计

微控制器作为CAN总线网络中最重要的节点,其主要功能是可实现与其他节点的通信,最终实现信息共享。STM32是控制单元CAN通信的核心组件,其设置通常基于对STM32的初始化,此外还需要设置寄存器,波特率和中断模式等参数。

(2)基于STM32的CAN总线系统的程序流程

整个程序的主要框架首先基于对STM32开发部分的初始化,然后设定要发送的CAN消息,以执行程序的主循环模块。之后,还要根据实施情况判断CAN模块是否可以根据实际情况发送或接受相关信息。如果能正常接收消息,则LED将亮起,反之亦然。

(3)CAN初始化程序设计

CAN初始化程序基于初始CAN模块时钟的设置,并通过上拉CAN模块控制器输入和输出功能。通过对其启用或中断,以实现开启或关闭自动重传机制,通常清除数据寄存器,设置波特率,然后通过接受消息传输信号,通过设置寄存器的特定位,以退出初始化模式。

3 结语

基于自动化控制领域CAN总线技术的广泛应用及其技术优势,本文首先概述了CAN总线的基本工作原理及其协议特点和通信过程,然后基于其系统的总体结构设计,分别具体从硬件设计和软件设计两个方面系统地讨论了基于STM32的CAN总线通信节点的设计方案,并以此详细探讨了一种基于STM32的CAN总线节点方案的设计流程。综上所述,随着嵌入式技术与CAN总线技术的联合应用的日趋增加,这无疑对克服传统控制系统的局限性具有显著优势,总之基于STM32的CAN总线通信节点设计研发,有利于推动我国工业生产中自动控制系统的快速发展。

猜你喜欢

总线消息传输
时间触发通信总线监控技术研究
轨道交通信号系统无线传输应用
5G高新视频的双频段协同传输
5G 16K虚拟现实视频传输关键技术
牵引8K超高清传输时代 FIBBR Pure38K
一张图看5G消息
晚步见道旁花开
基于CAN/LIN总线的LED车灯控制研究
宝马F02车总线系统