STM32的CAN总线中继器设计及应用
引言
CAN总线是一种多主方式的串行通信总线,具有优良的稳定性、实时性、远程通信能力以及超强的硬件CRC纠错等特性;CAN总线技术的应用不再仅限于汽车行业,而是扩展到了机械、纺织、控制等行业,并被公认为是最有前途的现场总线之一。然而由于受制于CAN收发器,CAN总线通信距离和网络中节点数被分别限制在10 km和110个之内。但是在稍大型的CAN总线系统中,这往往是不够的,这时就需要用CAN总线中继器对CAN总线网络进行扩展。
CAN中继器是系统组网的关键技术设备之一,使用中继器可以提高网络设计的灵活性,并且通过中继器还可以连接两个不同波特率的CAN总线网络;在两个网络间进行数据转发,极大地扩展其使用范围。基于此,本文设计出一款基于STM32的CAN总线中继器,并将其应用到齐玛印花机上,完成圆网印花机通信系统的工程改造。
1 系统整体方案及硬件实现
以往的CAN中继器设计大多采用MCU加CAN控制器的双芯片或多芯片解决方案。例如,参考文献使用1片MCU加2路CAN控制器的结构实现中继器;参考文献使用双MCU结构设计CAN总线中继器;参考文献使用独立双CAN控制器作为2路CAN接口的控制器来设计CAN中继器。上述方案电路复杂,MCU与CAN控制器通过外部总线连接,数据吞吐速度慢,整体可靠性也比较差。
意法半导体的STM32是以ARM Cortex-M3为内核的32位微处理器,主频可高达72 MHz,内置Flash和SRAM,其容量可分别高达512 KB和64 KB;内部集成双bxCAN控制器。它支持CAN协议V2.0A和V2.OB,波特率最高可达1 Mb/s,具有3个发送邮箱和2个3级深度的FIFO,能够以最小的CPU负荷来高效处理大量收到的报文。基于此,选用STM32F105作为主控制器,设计出一款基于STM32的CAN总线中继器。其整体方案如图1所示。
由于STM32F105内部集成了双路CAN控制器,CAN中继器的节点电路变得十分简单,其硬件电路如图2所示。
2 中继器的软件实现
CAN中继器的主要任务是在两个网络中进行数据的过滤和转发。其软件主要包括以下模块:初始化模块、数据发送模块和接收模块等。
2.1 初始化模块
CAN初始化直接关系到CAN控制器能否正常工作,在很多情况下,软件不能正常工作并不是CAN的收发程序有问题,往往是初始化配置不正确造成的。STM32的CAN初始化主要包括CAN寄存器初始化、CAN单元初始化(包括CAN模式和波特率的设置)、CAN过滤器的初始化。由于STM32开发商提供了大量的固件库函数,所以只需在调用的时间作出相应的设置即可。初始化子程序如下所示:
相关文章
- 2023-08-09微机控制曲轴疲劳试验台的研发
- 2023-04-12高精度光刻物镜的变形研究
- 2022-05-10基于CPLD的直流无刷电机驱动电路设计
- 2023-01-09基于工作流的装配车间可配置制造执行系统
- 2023-03-06工业自动化仪表的使用



请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。