单片机和CAN控制器在嵌入式系统中的应用
1.引言 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。下面简单介绍一下EPSON 32位单片机的特点: 中央处理器(英文CentralProcessingUnit,CPU)是一台计算机的运算核心和控制核心。CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。电脑中所有操作都由CPU负责读取指令,对指令译码并执行指令的核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。所谓的计算机的可编程性主要是指对CPU的编程。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。差不多所有的CPU的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。 A.强大的CPU内核:S1C33采用RISC(精简指令集)结构,三级流水线,105条16位长指令,其大多数指令在一个时钟周期内执行,大大提高了指令的执行效率。 B.丰富的周边电路:除了强大的CPU内核外,S1C33的周边电路也很有特色,考虑到对嵌入式芯片SOC(System On Chip)的要求,EPSON公司在设计中在单片机内集成了许多周边电路,用户在开发中,基本不需增加许多外部器件就可构成完整的系统,大大减少了系统成本和设计复杂度。以本文将要用到的S1C33209为例,它包括8KSRAM、直接内存存取控制器DMAC、中断控制器ITC、可编程定时器计数器Programmable Timer、脉宽调制电路PWM、串行接口电路SIO、A/D转换器等等,还包含高速的晶振电路OSC3、锁相环(PLL)、低速晶振电路和一个实时时钟。 C.低功耗:功耗是很多嵌入式系统设计必须考虑的问题,S1C33 CPU支持三种类型的省电模式:两种HALT模式和一种SLEEP模式;此外,S1C33中时钟电路设计有一个预分频器(PSC),时钟信号经预分频器分频输出合适的工作频率到Timer、SIO、AD等,这样芯片每个功能模块都工作在合适的频率上,系统功耗可降到最低。 D.良好的性价比:S1C33 CPU核非常小,逻辑门数在100K左右,并采用0.35um及以上加工工艺,使CPU core占用的芯片的面积较小,以达到良好的性价比。 E.独特的ASIC Micro(门阵结构CPU):S1C33 Core CPU和周边电路都是用与非门单元组成的ASIC宏单元,这样的设计使S1C33在芯片设计上有很大的灵活性,S1C33209芯片内部有20K用户可以自定义的门阵列(Gate Array)电路。 ASIC是ApplicationSpecificIntegratedCircuit的英文缩写,在集成电路界被认为是一种为专门目的而设计的集成电路。目前,在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点 下面我们采用S1C33209,设计一个探测系统。
2.系统描述及组成 我们的目标是设计一个功耗低、易于扩展、体积小的便携设备,探测系统需要测量参数包括PH值、溶解氧、化学元素、深度等。测控系统工作时需要接收来自上位机控制中心的命令,要求将采集到的数据传送到上位机,两者的最大通信距离大于5Km.由于CAN总线具有较高的可靠性、实时性和灵活性,其最大通信距离可到达10Km,受干扰概率低,因此我们采用CAN总线作为通信方式。
图1系统总体结构图 系统总体结构如图1所示,CAN采用双绞线,信号以差分电压传送。SJA1000一端与单片机相连,另一端与CAN总线相连。为了提高单片机对CAN总线的驱动能力,把PCA82C250作为CAN控制器和物理总线间的接口,以提高对总线的差动发送能力和对CAN控制器的差动接收能力,其工作方式(高速方式和斜率方式)由引脚RS控制,RS接地为高速,RS串接一个电阻后再接地,用于控制上升和下降斜率,可以减少射频干扰。系统从功能上分为两个主要部分:测控子模块和通信子模块。测控子模块主要功能是根据命令启动系统并完成参数提取、数据处理、存储及发送等操作,为了满足探测系统多路数据的快速采集与分析的特殊要求,该模块以S1C33209为核心,扩展信号调理电路及与CAN总线的接口;通信子模块的功能是完成水下测控系统与上位机的通信,此模块主要是SJA1000型CAN控制器。 SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。它是PCA82C200 CAN控制器(BasicCAN)的替代产品,而且它增加了一种新的操作模式——PeliCAN,这种模式支持具有很多新特性的CAN 2.0B协议。
3.软件设计 在32位机系统中,由于软件较复杂,基于操作系统的软件开发占有重要地位。操作系统的作用是负责整个系统的任务调度、存储分配、时钟管理和中断管理,并提供文件管理等基本服务,S1C33 32位芯片使用ROS33操作系统,其核心为广泛应用于各种嵌入式系统的iTron 3.0 OS Kernel,ROS33 Kernel具有:支持μITRON 3.0标准、内核优化并紧凑(最小可为1.7k)、响应快(CPU主频为33MHz时,最快调度响应时间为7.8μs)、支持基于ANSI标准的C语言等特点。本设计的主应用程序框架如下: #include "ros33.h" void main() { sys_ini();//用于初始化ROS33所用的参数和资源 vcre_tsk(task ID, task startup address, priority, initial address of stack);//定义被执行的任务 … sta_tsk(task ID, task startup code);//激活执行 … sys_sta(); } 该系统通信协议采用"ID+命令+数据+校验"的形式,其中,ID为网络设备标识符,采用ID.18~ID.20.标识符ID.21~ID.28作为固定命令,不参与验收滤波。数据表示通信的具体内容,校验采用校验和的形式,为1个字节。由于CAN总线本身有15位CRC校验,并且本系统节点数较少,竞争不会十分激烈,所以通信可靠性较高。 软件设计思路如下:系统上电后,S1C33209先对自身和SJA1000初始化,以确定工作主频、波特率及输出特性等,然后接收来自上位机的控制命令,同时将获取的采用数据通过SJA1000传送到CAN总线上或备份到Flash存储器中。其中对SJA1000初始化是设计的重点,必须对写入每个寄存器的内容进行仔细和全面考虑,否则系统将无法正常工作。设上位机SJA1000适配卡的ACR为xx20,AMR为FF00,下位机测控中心SJA1000的ACR为xx40,AMR为FF00.下面是初始化程序: Void CAN_Init(viod) { CANMODE=ox09; //进入复位模式,单项验收滤波,对SJA1000初始化 CANCDR=0x88; //选择PeilCAN模式 CANIER=0x1A; //开放接收中断、超载中断和错误中断 CANAMR0=0xFF; //接收屏蔽寄存器内容在单片机RAM中的值 CANACR1=0x40; CANBTR0=0x03; //总线定时寄存器 CANBTR1=0xFF; CANOCR=0xAA; //输出控制寄存器 CANMODE=0x08; //返回工作状态 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是由研发和生产汽车电子产品着称的德国BOSCH公司开发了的,并最终成为国际标准(ISO118?8)。是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。 由于测控系统对通信实时性要求较高,一旦接收到来自上位机的控制命令必须及时响应,为此CAN总线上接收信息采用中断方式,即SJA1000无错地接收到信息后使INT变为低电平,下降沿触发S1C33209外部中断0,使其进入中断服务程序,其流程如图2所示。
图2接收流程图 如果要向CAN控制器发送数据,则必须将符合PeiCAN帧格式的一组数据写入SJA1000的发送缓冲区,然后调用发送子程序,我们采用查询方式实现发送,如图3流程所示。
图3发送流程图
4.结束语 为了进行资源开发,对海洋油田进行探测及对污染进行监测和预防,本文采用32位单片机S1C33209和SJA1000型控制器设计了一个探测系统,该系统具有高速、功耗低、体积小、易于扩展的特点,实验表明,系统与上位机通信可靠,基本可以满足实际需要。
|