摘要:针对本单位某测试设备的设计需求,需要用到5路CAN总线接口,利用具有总线协议控制器MCP2515通过主控制器STM32F407的3路SPI接口,实现STM32F407的CAN总线扩展,满足了该设备的控制精度、处理速度以及5路CAN总线接口的设计要求,具有较强的工程实用价值。
关键词:MCP2515, CAN总线,SPI总线,STM32F407
0引言
CAN(Controller Area Network)即控制器局域网络总线,是德国博世公司提出的一种串行总线通讯技术,是目前国际上应用最广泛的一种现场总线技术之一。CAN总线的数据通讯在工业应用中相比其他总线在可靠性、实时性和灵活性等方面具有较大优势[1]。CAN遵从IOS/OSI模型,采用了其中的物理层、数据链路层,通信速率最高可达到1Mbps(通讯距离不超过40m)。本公司某测试设备需要5路独立的CAN总线接口,才能满足系统对外部数据的实时采集和控制需求。控制器芯片STM32F407是STMicroelectronics即意法半导体公司开发的一款32位ARM内核的微控制器芯片,是目前控制领域流行的处理器之一,该微控制器主频168MHz,带浮点数运算功能,精度和数据处理能力均可以满足系统要求。仅依靠控制器自带2路CAN总线接口,不能满足系统5路独立CAN总线接口的需求,但是同时又自带有3路SPI(Serial Peripheral Interface)即串行外设接口。MCP2515是Microchip公司开发的CAN控制器芯片,具有SPI接口的独立CAN控制器,它完全支持CAN V2.0B技术规范,因此可以STM32F407的SPI接口与MCP2515进行多路CAN总线接口扩展。
1 系统硬件电路设计
硬件主要包括三部分:STM32F407微控制器,CAN控制器MCP2515,CAN收发器CTM8251。
ST公司推出的STM32F407是基于ARM架构Cortex-M4为内核的一款高性能微处理器,带FPU和DSP指令集,主频达168MHz,192KB的片内SRAM,带有2路CAN 2.0B和3路SPI,拥有ART自适应实时加速器,在闪存中运行的程序,可以达到相当于FLASH零等待周期的性能,工业级温度为-40℃~+85℃。[2]
Microchip公司开发的CAN控制器MCP2515具有SPI独立接口,主频可达10MHz;具有3个发送缓冲器,2个接收缓冲器,自带2个验收屏蔽寄存器和6个验收滤波寄存器,最大传输波特率为1Mbps,完全支持CAN V2.0技术规范,能发送和接收标准数据帧、扩展数据帧及远程帧,提供五种工作模式,配置、工作、休眠、监听和环回模式,工作温度为-40℃~+85℃。[3]
为了增加CAN总线的抗干扰能力,本设计采用广州致远电子有限公司开发的CAN隔离收发器CTM8251。
该芯片内部集成了所有必需的CAN隔离及CAN收发器件,其主要功能是将CAN控制器的逻辑电平转换为CAN总线的查分电平并且具有DC2500V的隔离功能,从而增强CAN总线的抗干扰能力, 其最大传输速率可达1Mbps,至少可连接110个节点。
在CTM8251的CANH和CANL引脚与地之间连接2个30pF的电容,可以过滤CAN总线上的高频干扰;2个二极管可以在总线电压发生瞬变干扰时起到保护作用。
图1 MCP2515 CAN总线接口转换电路
2 软件设计
2.1 SPI接口编程
STM32F407的SPI接口编程主要包含初始化SPI_Init()、SPI速度设置SPI_SetSpeed()及SPI读写字节操作SPI_ReadWriteByte()。SPI_Init()初始化函数主要完成配置相关引脚的复用功能,并使能SPI时钟;SPI_SetSpeed()主要完成传输速率波特率的设置;SPI_ReadWriteByte()主要将发送缓冲区的数据发送出去以及取接收缓冲区中的数据。
2.2 CAN控制器初始化
要使控制器MCP2515能正常工作,需要先对其进行初始化。初始化函数MCP2515_Init(),主要完成软件复位、工作波特率设置、标识符相关配置等工作。首先进行软件复位,进入设置模式,然后设置CAN通信的波特了,接着配置缓冲区、滤波器等一系列标识符,然后配置CAN中断使能,最后退出设置模式,设置为正常模式。
2.2 CAN控制器的数据发送
先读取某些状态指令,将TXREQ标志清零,表明发送缓冲器无等待发送的报文,此时将需要发送的数据写入发送缓冲寄存器中,并启动发送。
2.3 CAN控制器的数据接收
首先检测起始帧,检测到起始帧后读取接收缓冲器中接收到的数据,并放入指定的缓冲区内,防止数据溢出,然后清除中断标志位。
3 结束语
文中主要介绍了基于微控制器STM32F407的SPI接口与CAN控制器MCP2515的CAN总线扩展的方法,设计出了详细的硬件电路和软件设计方法,目前该测试设备已经投产应用,进一步证明了该方案的正确性。
参考文献
【1】饶云涛.现场总线CAN原理与应用技术【M】.北京:北京航空航天大学出版社,2007.
【2】STMicroelectronics.STM32F407 datasheet,2012.
【3】STMicroelectronics.MCP2515 datasheet,2005.
【4】吕宝锋.基于MCP2515的CAN总线扩展[J].电子科技,2012,25(6):44.