关键词:CAN总线 扩充器 MCP25050
1 概述
MicroChip公司生产的CAN(Controller Area Net-work)总线I/O扩充器MCP25050,可用于在CAN总线系统中扩充CAN总线节点,它可以独立构成一个CAN节点而不需要再加微控制器。该器件采用14脚小型封装和低功耗CMOS工艺技术,可在2.7~5.5V电压范围内正常工作。它能够支持的CAN2.0B标准位速率可达1Mbit/s;NCP25050内含一个可编程的屏蔽器、二个可编程的接收过滤器、4路10位A/D转换器、两路PWM输出、三个自动传送数据缓冲区、两个接收数据缓冲区及低功耗工作方式;其芯片配置信息可通过CAN总线在线修改,并可工作在1-WireCAN总线工作模式;同时,它还可使系统具有远程输入和输出功能。因此,在扩充简单的瘦客户CAN总线远程节点时,使用它会带来意想不到的便利。
2 MCP25050内部结构
MCP25050内部功能图如图1所示,引脚图如图2所示。从图中可看出:该器件主要由用户存储区、时钟产生器、控制逻辑、CAN协议模块、A/D转换和PWM模块组成。以下分别介绍:
控制逻辑部分主要起着把其它几部分接合在一起的作用,另外它还控制数据的传送和接收以及在上电初始化时对内部寄存器的控制操作。
时钟产生器部分可为其它芯片提供时钟脉冲。
用户存储区是一块ROM区,主要是一些控制寄存器,利用它可以先对用户存储区进行编程,以使MCP25050在上电复位后工作在用户事先定义的模式。这些寄存器可通过CAN总线来访问。
A/D部分主要是对输入的模拟信号自动进行A/D转换。
CAN协议模块主要是对要发送的数据进行CAN数据包的封装,或是对接收到的CAN数据包进行解包。它有二个彼此独立的接收缓冲区,且每个接收缓冲区都有自己的接收过滤器。同时,错误管理逻辑也位于此模块内。因此,CAN协议模块是MCP25050的核心模块。
利用GPIO模块可对八个输入输出引脚进行管理,并可通过设置寄存器来使每个引脚工作在不同的方式。MCP25050各引脚功能说明如表1所列。
表1 MCP2505的引脚功能说明
引脚名称 | 脚 号 | 功 能 |
复用功能 |
GP0/AN0 | 1 | 双向IO口 | 模拟输入通道0 |
GP1/AN1 | 2 | 双向IO口 | 模拟输入通道1 |
GP2/AN2/PWM1 | 3 | 双向IO口 | 模拟输入通道2/PWM输出 |
GP3/AN3/PWM2 | 4 | 双向IO口 | 模拟输入通道3/PWM输出 |
GP4/VREF- | 5 | 双向IO | 参考电源负端 |
GP5/VREF+ | 6 | 双向IO口 | 参考电源正端 |
VSS | 7 | 电源地线 | 无 |
OSC1/CLKIN | 8 | 外部晶体输入 | 外部时钟信号输入 |
OSC2 | 9 | 外部晶体输出 | 无 |
GP6/CLKOUT | 10 | 双向IO口 | 时钟信号输出 |
GP7/RST/VPP | 11 | 双向IO口 | 复位端 |
RXCAN | 12 | CAN数据输入 | 无 |
TXCAN/TXRXCAN | 13 | CAN数据发送 | 1-Wire操作下的发送接收端 |
VDD | 14 | 电源 | 无 |
3 工作原理
在MCP25050上电后,系统将首先进入复位操作模式,此时它将会禁止接收和发送数据,同时,A/D转换器和PWM也被禁止;而后MCP25050进行自初始化,自初始化主要通过把用户存储区的数据读入SRAM中实现;当自初始化完成后,MCP25050将进入正常工作模式,以准备接收或发送数据,这时A/D转换器和PWM都可以正常工作;接下来MCP25050会在CAN总线上发一个“在线”信号给网络,以通知整个网络存在这个站点。
MCP25050通过一个通用屏蔽器、二个接收过滤器及二个接收缓冲区来确定接收到的数据是否被接受。MCP25050有三种数据类型:信息请求数据、输出数据和输入数据。其中信息请求数据是指MCP25050接收到的数据,输出数据则是指MCP25050回应信息请求而发出的数据,而输入数据指的是MCP25050接收到的可用来修改寄存器的数据。
MCP25050还具有自动传送功能,它有三个彼此独立的发送数据ID:TXID0、TXID1和TXID2。其中TXID0用来发送“在线”信号,TXID1用来发送“命令确认”信号、接收缓冲区溢出信号和出错信息,TXID2则用来传送A/D转换结果。
4 实际应用
在传统的CAN总线系统中,如果需要再增加一个节点,一般的做法是用一片MCU?微控制器?和一片CAN总线控制器?如SJA1000、MCP2510等?为主来构成。这样虽然节点的功能很强,但在有些应用中是完全不必要的,如在瘦客户的CAN应用中,通常不需要节点有多少功能,只要求节点能够采集数据即可,此时,MCU+CAN控制器的方式就显得有些过于复杂和昂贵;但如果采用CAN总线扩充器MCP25050来组建,则不但可简化系统设计,也可减少设计成本,因为这种方案只需要一片MCP25050和一片CAN总线驱动器即可,而完全不需要MCU和CAN总线控制器。其常用电路如图3所示。
应用MCP25050扩充CAN总线节点是一个既方便又经济的办法。在现存或新的CAN总线系统中使用它会带来很多便利,其最大的好处是不需要MCU。笔者在设计监测多点温度的CAN系统中成功地使用了这一方案。实践证明,MCP25050可靠性高,运行稳定。