引言
8位嵌入式单片机8051 自1980年投入市场后,深受业界欢迎,由于信价比优越,已广泛应用于各种电子产品中,成为8位微控制器的主流。但随着电子产业的快速发展,市场上迫切需要的新一代8051是:向上能扩展到16位,以满足复杂程序的要求;向下能兼容过去大量已开发出来的软件。尤其在工业控制系统内,由于对系统可靠性和灵活性的更高要求,控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散,为了能够实现设备之间大量数据的充分共享,有效地支持分布式控制和实时控制,单纯依靠传统的串行通信口,已不能满足需求。而CAN总线系统恰是一种特性卓越,可靠性高和设计独特的多主总线,特别适合于工业过程监控设备的互联,是公认的最有前途的现场总线之一。因此,具有内嵌CAN控制器和相关硬件的16位嵌入式单片机将能较好地适应当代工业过程控制和生产自动化的需求。
Philips半导体公司最新推出的80C51XA家族中的P51XA-C3就是这样一种芯片。
1 P51XA-C3芯片功能概述
Philips公司推出的新一代16位80C51XA增强型结构系列,支持80C51应用广泛的位操作功能,同时支持多任务操作系统和C高级语言。
80C51XA增强型结构系列的速度为80C51的10~100倍。P51XA-C3是Philips
80C51XA系列产品中的最新派生产品之一,是一种极适合于工业控制应用的16位单芯片微控制器,基本结构框图略(详见《单片机与嵌入式系统应用》2002.7)。
P51XA-C3的主要功能包括:
*2.7~5.5V的宽电压范围工作;
*1024字节在片数据RAM;
*32KB在片EPROM/ROM程序存储器;
*带有增强功能,具有输出端的三个标准记数器/定时器(等效于80C51的T0、T1和T2);
*CAN功能模块支持CAN2.0B,支持11或29位ID,并可达1Mbps的速率;
*监视跟踪定时器(WDT);
*1个UART;
*低电压检测;
*具有4种可编程输出配置的3个8位输入/输出口;
*EPROM/OTP版本可在线编程;
*商用条件下,当VCC为4.5~5.5V时可工作于25MHz,2.7~3.6V时可工作于16MHz;
*40引脚的DIP,44引脚的PLCC和44引脚的QFP封装形式。
2 P51XA-C3片内CAN控制器
2.1 片内CAN控制器和内嵌传输层协同处理器特点
*P51XA-C3中集成的CAN 2.0B控制器与外挂式芯片SJA1000中独立的CAN控制器的性能一样,都能支持11位或29位的标识符(ID),最大的CAN总线数据传输速率(1
Mbps)以及CAN总线诊断能力。
*硬件的“信息管理”支持几乎所有的高层传输协议:DeviceNet,CANopen,OSEK。
*分段信息的自动(硬件)组合。
*32个信息块(message
object),32个分开的信息滤波器(对每一个信息块均有1个信息滤波器)。
*每一个信息块都能被设置为接收或发送。
*每一个信息块都有1个独立的信息缓冲区,32个信息缓冲区都被定位在XRAM中并被32个DMA通道管理。每一个信息块的信息缓冲区的大小都能独立地设置(从2~256B)。
*对一个单片系统,在片共有512B的XRAM信息缓冲区。它是独立于1KB的在片数据RAM的,而且信息缓冲区能在片外扩展到总共8KB(也就是说,32个信息缓冲区每一个都能达到256B)。
2.2 P51XA-C3中CAN总线通信相关的寄存器
每个信息块都有专门为之设置的8个存储器映射寄存器MMR(Memory
Mapped Register)。对于信息块n而言,这8个寄存器是:
(1)MnMIDH-存放信息块n的ID号的高16位。
(2)MnMIDL-存放信息块n的ID号的低16位。
(3)MnMSKH-对于接收块而言,存放该块的ID号屏蔽代码的高16位;对于发送块而言,存放待发送数据的长度代码(DLC)。
(4)MnMSKL-对于接收块而言,存放该块的ID号屏蔽代码的低16位;对于发送块而言,无意义。
(5)MnCTL-存放信息块n的控制信息,包括是否激活信息块n、信息接收或发送完毕中断允许、设置信息块n为接收或发送、是否激活分段信息硬件重组和是否允许处理远程帧共6项控制信息。
(6)MnBLR-存放信息块n缓冲区24位地址中的低16位。
(7)MnBSZ-存放信息块n缓冲区的大小设置信息。
(8)MnFCR-信息块n接收分段信息时,存放信息的帧数。
另外,还有2个适用于32个信息块的全局寄存器
(1)MBXSR-存放所有信息缓冲区和XRAM的基地址(即24位地址中的高8位)。
(2)GCTL-存放控制信息,包括是否选择自动应答、预仲裁模式选择和系统高层协议的选择共3项控制信息。
2.3 P51XA-C3对CAN总线通信的管理
P51XA-C3支持CAN技术规范2.0A和2.0B。
对发送而言,任意一个P51XA-C3中的发送信息块(Tx
message object),都不能提供分段信息发送是硬件支持,也就是说,用户程序都必须将信息帧一帧一帧地分别装入发送缓冲区,在一帧发送成功后,再装下一帧。然而,通过巧妙利用P51XA-C3的发送预仲裁(Tx
Pre-Arbitra -tion)过程利用多个信息块,也可以连续发送分段的信息,即设置全局控制寄存器GCTL中的预仲裁位(Pre-Arb
bit)GCTL[2]=0,并将分段信息的每一帧都存在块编号单调递增的发送块中,同时赋予每个块相同的ID号,并且只允许最后一帧所在的块产生信息发送完毕中断,然而激活所有发送块,这样就能连续发送多帧信息了。
对于接收而言,在一个没有任何高层协议的系统中,P51XA-C3只能处理单帧的CAN信息,并且会在接收的每一帧之前自动加上一个字节的帧信息。但是,它对三种常用的高层协议(DeviceNet,CANopen和OSEK)和用户自定义的CAN/generic协议中的分段信息,提供分段信息连续接收和自动重组的硬件支持。以DeviceNet作为系统高层协议时为例,对分段信息的接收过程如下:首先,设置全局控制寄存器GCTL中的最低两位[Prtc11,Prtc10]=01,就可以选择系统协议为DeviceNet;然后,设置MnCTL中的FRAG=1,可以激活接收信息块n的分段信息硬件自动重组功能;最后,启动接收功能即可。DeviceNet对一段分段信息的第一帧和最后一帧有特殊的编码形式,所以硬件能够识别分段信息的起始和结束,从而做出相应的处理。被成功接收的一段分段信息在缓冲区中并不像单帧接收信息在每帧之前插有帧信息,只在起始位置插入了总的字节数,即分段传输的多帧信息被自动重组,是P51XA-C3片内CAN控制器和相关硬件的突出特点。
需要说明的是,P51XA-C3中的硬件分段信息自动重组只为DeviceNet
I/O信息设置,分段的DeviceNet显性信息只能作为一批单帧信息处理,而由软件来组合。
3 P51XA-C3应用举例
当P51XA-C3应用在CAN总线网络中时,系统总体结构图略(详见《单片机与嵌入式系统应用》2002.7)。
由于CAN总线通信的特点,数据的打包、拆包、编码、发送、接收以及校验均由硬件完成,因此在正确的初始化后,用户的发送和接收程序相当简单。下例着重说明初始化程序中参数的设置,并给出接收和发送软件的流程图。
假定P51XA-C3在20MHz的晶振下运行,CAN总线通信速率为500kbps。
设定信息块0为接收块,采用标准格式,其匹配ID=000
0000 1000,接收单帧信息,且成功接收一帧后CPU中断,其基地址为008000H。
初始化程序如下:
INIT:MOV.W CANBTR, #2541H
MOV.B CANCMR, #00H;
初始化CAN内核寄存器
MOV.B MBXSR, #00H;
初始化全局寄存器
MOV.B XRAMBASE, #81H;
定位XRAM
MOV.B GCTL,
#00H; 初始化全局寄存器
MOV.W M0MSKH, #001FH
MOV.W M0MSKL, #FFF8H
MOV.W M0MIDH, #0100H
MOV.W M0MIDL, #0000H
MOV.W M0BLR, #8000H
MOV.B M0BSZ, #03H;
信息块0初始化完毕
MOV.W M2MIDH, #1000H
MOV.W M2MIDL, #0000H
MOV.W M2MSKH, #0008H
MOV.B M2BSZ, #02H
MOV.W M2BLR, #8030H
MOV.B M2CTL, #00H;
信息块2初始化完毕
发送和接收程序流程图略(详见《单片机与嵌入式系统应用》2002.7)。
结束语
Philips公司新推出的16位单片机P51XA-C3,在保留了传统80C51单片机应用广泛的位操作功能的基础上,极大提高了执行速度,
能够满足电力系统数据采集和实时监控的要求。同时结合当代工业控制分散化的发展特点,芯片内又嵌入了功能强大的CAN2.0B控制器和相关硬件,
可以充分利用CAN总线网络比以太网构造和应用简单、造价低廉,比传统的RS-485/232通信数据精简、实时性好、可靠性强的特点。因此,
P51XA-C3非常适合于当代分散式工业控制系统,尤其是分散式变电站自动化系统,为设计者提供可一个有效的真正高性能嵌入控制的简便易行途径。
转载自《单片机与嵌入式系统应用》2002.7