基于STM32的CAN总线通信实现方法
郭东伟
生成PDF 清样下载 引用

复制成功

导出题录

参考文献( GB/T 7714-2015 ) 复制

郭东伟,. 基于STM32的CAN总线通信实现方法[J]. 电气学报,2021.9. DOI:10.12721/ccn.2021.157086.
摘要:
STM32,指意法半导体ST公司开发的32位微控制器,基于Cortex-M3内核的MCU-STM32。STM32自带各种常用通讯接口,比如UART、I2C、SPI等,可连接非常多的传感器,可以控制很多设备。本文主要以STM32F7为例,进行叙述。CAN是控制局域网的简称,是国际上应用最广泛的现场总线之一。CAN通信并不是以时钟信号来进行同步的,它是一种异步通信,只具有CAN_High和CAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通信。
本文主要讲述基于STM32F7微控制器的CAN总线通信实现方法。
关键词: STM32,CAN总线,keilMDK,HAL库
DOI:10.12721/ccn.2021.157086
基金资助:

1.引言

STM32有很多系列,本文章介绍使用的为高性能的M7,基于Cortex-M7内核,工作频率高达216MHz。STM32软件编程使用MDK5,MDK源自德国KEIL公司,目前最新版本为MDK5.34,该版本使用µVision 5 IDE集成开发环境。安装完MDK后,还要安装STM32F7的包安装器(Software Packs):Keil.STM32F7XX_DFP.2.7.0.pack。STM32提供了完整的HAL库(STM32硬件抽象层API),只需要了解这些API函数的用法即可,就可以进行高效率开发。

CAN通信网络是一种遵循ISO11898标准的高速、短距离“闭环网络”,它的总线最大长度为40m,通信速度最高为1Mbps。CAN通信节点由一个CAN控制器及CAN收发器组成。

2.硬件实现

2.1 CAN收发器TJA1050

TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口。该器件为总线提供差分发射能力并为CAN控制器提供差分接收能力。完全兼容ISO11898标准,电磁辐射(EME)极低,未通电的节点不会干扰总线线路,输入电平兼容3.3V和5V器件,差分接收器具有宽共模范围,实现了高电磁抗扰性(EMI),至少可连接110个节点。

2.2 CAN通信电路设计

STM32F7作为CAN控制器,TJA1050作为CAN收发器,加上供电电路,STM32时钟/复位电路、程序下载电路等最小系统,构成整个CAN总线通信电路。

TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口。该器件为总线提供差分发射能力并为CAN控制器提供差分接收能力。完全兼容ISO11898标准,输入电平兼容3.3V和5V器件,差分接收器具有宽共模范围,实现了高电磁抗扰性(EMI),至少可连接110个节点。12.png图1 CAN总线电路图

3.软件实现

3.1协议层

CAN协议具有5种类型的帧:数据帧、遥控帧、错误帧、过载帧、间隔帧;数据帧和遥控帧有标准格式和扩展格式。标准格式有11个位的标识符(ID),扩展格式有29个位的标识符(ID)。数据帧一般由7个段构成:帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束。

3.2软件设计

打开MDK,建立基于HAL库的工程(方法略)。HAL库中CAN相关的函数在文件stm32f7xx_hal_can.c和对应的头文件stm32f7xx_hal_can.h中。

1.设置PA11(CAN1_RX)和PA12(CAN1_TX)为复用功能(AF9),并使能PA口时钟:

_HAL_RCC_CAN1_CLK_ENABLE();//使能CAN1

_HAL_RCC_GPIOA_CLK_ENABLE();//开启GPIOA时钟

2.设置波特率:

CAN1_Mode_Init(CAN_SJW_1TQ,CAN_BS2_6TQ,CAN_BS1_11TQ,6,CAN_MODE_LOOPBACK);//CAN初始化环回模式,波特率500Kbps

3.设置模式

CAN1_Handler.pTxMsg->StdId=0X12;//标准标识符ID

CAN1_Handler.pTxMsg->IDE=CAN_ID_STD;//使用标准帧

CAN1_Handler.pTxMsg->RTR=CAN_RTR_DATA;//数据帧

4.发送数据

data=CAN1_Send_Msg(canbuf,8);//发送8个字节

5.接收数据

rec=CAN1_Receive_Msg(canbuf);//接收数据

4. 结束语

在本项目开发中,核心部件为意法半导体的STM32F7和恩智浦的TJA1050, ST为用户提供了丰富的HAL库函数,用户只需了解相应的库函数功能,就可以进行相应开发,该设计实现方法适合于汽车电子、航空航天、导航定位、学习开发、工业控制等各领域,在实际开发过程中,可以根据实际情况进行借鉴。

参考文献

【1】 刘火良 杨森.STM32库开发实战指南.北京:机械工业出版社,2017.2

【2】 杨余柳 张叶茂 伦砚波.基于ARM Cortex-M3的STM32微控制器实战教程(第二版).北京:电子工业出版社,2017.9

》在线投稿系统

*文章题目:
*作者姓名:
*电子邮箱:
*通讯地址:
*联系方式:

  备      注:

*上传稿件:

支持上传.doc,.docx,.pdf,.txt,.wps文件

投稿须知:

1、审稿结果将于1~7个工作日以邮件告知,请注意查收(包含录用通知书、审稿意见、知网CNKI查重报告)。

2、提交投稿后,若7个工作日之内未接到录用通知,则说明该文章未被录用,请另投他刊。

3、凡投寄本刊稿件,如在内容上有侵权行为或不妥之处,均应文责自负。本刊有权对来稿进行文字编辑、加工和修改,如不同意,请附说明,以便妥善处理。

4、多作者文稿署名时须征得其他作者同意,排好先后次序,通知用稿后不再改动。

5、凡投往本刊稿件一经录用发表,其版权归本刊所有。

6、本刊已全文录入中国知网、万方、维普等数据库,如作者不同意被收录,请提前申明,未申明者,本刊一律视为同意被收录。

7、请勿一稿多投。