CAN总线接口优化设计与质量能力提升

/ 2

CAN总线接口优化设计与质量能力提升

郭海波  纪昌  陈伟杰

天津航空机电有限公司   天津   300308引言

CAN总线的诸多优点,总线通信使用CAN总线的场景日益增多,致使处理器自带的CAN接口数量已不满足实际需求。对处理器进行CAN接口扩展的成为一种趋势,主要思路是利用处理器的空闲硬件资源,与外部CAN控制器进行通信,从而达到CAN接口扩展的目的。目前工程应用中,MCP2515作为外扩CAN总线控制器,使用SPI串行总线通信实现CAN接口的扩展

1.MCP2515介绍

1.1.芯片功能

Microchip推出的MCP2515是一款完全支持CANV2.0B技术规范的CAN控制器,可通过SPI方式与处理器通信,实现CAN接口扩展,CAN总线最高通信速率可达到1MbpsMCP2515能够接收和发送标准数据帧和扩展数据帧以及远程帧,通过两个接收屏蔽寄存器和六个接收过滤寄存器滤除无关报文,从而减轻处理的运行负担。MCP2515主要功能参数及电气特性如下

1)支持CAN技术规范2.0A/B,最高传输速率达到1Mbps;

2)支持标准数据帧、扩展数据帧和远程帧每帧数据长度可为0~8个字节;

3)内含两个接收缓冲器和三个发送缓冲器并且可编程设定优先级;

4)内含六个29(bit)的接收过滤寄存器和两个29(bit)的接收屏蔽寄存器;

5)高速SPI接口接口时钟频率最高可达10 MHz支持SPI 0,01,1模式;

6)工作温度范围- 40+125

1.2.内部结构和工作原理

MCP2515内部主要由三个模块组成:CAN协议模块,主要包括CAN协议驱动、屏蔽器、过滤器、以及发送和接收缓冲器,主要负责与CAN总线的数据传输控制逻辑和静态寄存器,用于设置芯片及其操作模式SPI接口模块主要负责MCU的数据传输。其工作原理如图1所示。

1MCP2515内部结构和工作原理

MCP2515CAN总线上的数据接收是通过2个接收缓冲器、2个接收屏蔽器、6个接收过滤器的组合来实现的。CAN总线数据帧只有同时满足至少任意1个接收屏蔽器和1个接收过滤器的条件才可以进入接收缓冲器。MCP25158个中断源包括发送、接收中断,各种错误中断以及总线唤醒中断等。处理器可以通过MCP2515的中断允许控制寄存器CANINTE的设置来设定和屏蔽各种中断的发生条件,并可以通过读取MCP2515的中断标志位寄存器CANINTF或者通过MCP2515ReadStatus(读状态寄存器)命令读取CANSTAT寄存器中的I-COD部分来判断当前中断的中断源。

1.3.MCP2515SPI接口

处理器通过SPI接口可以读取接收缓冲器数据。MCP2515CAN总线的数据发送则没有限制,只要用处理器通过SPI接口将待发送的数据写入MCP2515的发送缓存器,然后再调用RTS(发送请求)命令即可将数据发送到CAN总线上。在时钟SCK的上升沿,令和数据通过SI引脚送入MCP2515。在时钟SCK的下降沿,通过SO引脚把数据送出。操作中片选引脚CS保持低电平。

1.4.SPI接口操作指令

处理器数据和命令通过SPI接口SI引脚传送到MCP2515中,且数据在SCK时钟信号的上升沿传送进去。MCP2515SCK的下降沿通过SO引脚传送出去。在进行任何操作时,CS引脚都必须保持为低电平。在MCP2515操作指令中,最常用的是读操作、写操作2种指令。

1.5/操作

CS引脚拉低后,向MCP2515依次发送读指令和8位地址码MCP2515会将指定地址寄存器中的数据通过SO引脚移出。每一数据字节移出后,器件内部的地址指针将自动加一以指向下一个地址。因此,通过持续提供时钟脉冲,可以对下一个连续地址寄存器进行读操作。通过该方法可以顺序读取任意个连续地址寄存器中的数据。通过拉高CS引脚电平可以结束读操作。将CS引脚拉低后,向MCP2515依次发送写指令、地址码和至少一个字节的数据

2.MCP2515初始化配置

MCP2515上电之后,需要处理器通过SPI接口对MCP2515进行配置

2.1.复位

MCP2515上电时自动复位,但手册中建议在初始化之前进行复位操作,可通过两种方法进行复位:1硬件复位拉低RESET引脚;2软件复位执行SPI复位指令MCP2515复位之后会进入配置模式,在配置模式下才能对MCP2515进行波特率配置滤波配置

2.2.波特率配置

CAN在通信时,总线上的波特率必须保持一致,MCP2515使用数字锁相环DPLL,将每个位时间分解成由最小时间周期组成的多个段,这个最小时间周期称为时间量(TQ),改变CNF1CNF2CNF3寄存器,可以达到设定波特率的目的,其中Normal Bit Rate为通用比特率,以下简称NBR

2.3.接收配置

如果MCP

2515使能了接收中断,当接收到有效的CAN总线数据,MCP2515INT引脚会输出低电平,此时处理器可以判断出MCP2515已经缓存了总线数据,并且可以及时的从MCP2515中读取CAN数据。如果MCP2515没有使能接收中断,处理器只能采用轮询的方式,定时读取MCP2515接收缓冲器,这样会导致处理器无法及时接收MCP2515缓存数据,从而大幅度增加产品的响应时间,影响产品可靠性。甚至导致MCP2515接收缓存寄存器溢出,影响MCP2515功能

2.4.滤波器设置

MCP2515 具有两个接收缓冲器,分别为RXB0RXB1RXB0接收缓冲器有2个验收滤波器RXF0RXF1,以及1个屏蔽滤波器RXM0RXB1接收缓冲器有4个验收滤波器RXF2~RXF5,以及1个屏蔽滤波器RXM1

滤波和屏蔽寄存器用于确定滤波器对CANID中的哪些位进行校验。真值表,显示了标识符中的每一位是如何与验收屏蔽器(RXM)和滤波器(RXF)进行比较,以确定该报文是否应被载入接收缓冲器。屏蔽寄存器主要确定对标识符中的哪些位进行滤波。如果某屏蔽位设置为零,对应的标识符位将被自动接收而不进行滤波。

2.4.中断配置

MCP25158个中断源,8个中断源分别为3个发送中断,2个接收中断,1个消息错误中断,1个总线活动中断,一个错误中断。CANINTE寄存器包含了使能各中断源的中断使能位。当发生中断时,INT 引脚将输出低电平,并保持低电平状态直至处理器清除中断。为及时接收CAN总线数据,需要将接收中断开启;同时,为实时反馈CAN总线上的错误情况,需要将错误中断使能;实际使用中,可以配置INT引脚对应的处理器引脚为外部中断,在触发后读取CANINTF寄存器查询当前中断源,再进行进一步处理。

2.5.配置为正常模

MCP2515复位之后会处于配置模式,在该模式下可以配置CAN总线的波特率、屏蔽寄存器和滤波寄存器。正常模式为MCP2515 的标准工作模式。处于此模式下,MCP2515会主动监视总线上的所有数据,并产生确认位和错误帧等。只有在正常模式下,MCP2515才能在CAN总线上进行数据的传输。

3.总线数据接收

2.4小节中断配置当中,开启了接收中断。因此当MCP2515接收到有效的CAN数据,MCP2515INT引脚会输出低电平信号,此时处理器便可以进行读取总线数据。

4.总线数据发送

总线数据发送前需要配置好标准和扩展标识符、8个数据字节以及数据长度。以发送一包扩展帧为例,帧数据包中含有8个数据字节。需要配置的寄存器分别为TXBnSIDH(标识符bit21~bit28)TXBnSIDL(标识符bit16~bit20)TXBnEID8(标识符bit8~bit15)TXB0EID0 (标识符bit0~bit7)TXBnDLC(数据长度)TXBnD0~ TXBnD7(数据字节1~数据字节8),在写入发送缓冲器之前,必须将TXREQ 位清零,表明发送缓冲器无等待发送的报文。之后处理器将TXREQ位置1,可以启动发送缓冲器的CAN数据发送。

5.结论

本文详细描述了基于MCP2515扩展CAN接口的软件设计方法,配置MCP2515的总线波特率500K,扩展帧,数据长度8字节,通信持续25分钟。通过CAN分析仪表明,总线数据未出现丢包总线上出现错误帧MCP2515没有出现接收缓存溢出能够满足实际的外扩CAN接口的功能需求。

基于试验结果,MCP2515软件设计方法可以为CAN接口资源紧张的处理器提供解决方法硬件电路设计提供了一种总线备选方案。

1