微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机和CAN控制器在嵌入式系统中的应用

单片机和CAN控制器在嵌入式系统中的应用

时间:05-05 来源:百度文库 点击:

3.软件设计

在32位机系统中,由于软件较复杂,基于操作系统的软件开发占有重要地位。操作系统的作用是负责整个系统的任务调度、存储分配、时钟管理和中断管理,并提供文件管理等基本服务,S1C33 32位芯片使用EPSON公司的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.结束语

为了进行资源开发,对海洋油田进行探测及对污染进行监测和预防,本文采用EPSON公司的32位单片机S1C33209和SJA1000型控制器设计了一个探测系统,该系统具有高速、功耗低、体积小、易于扩展的特点,实验表明,系统与上位机通信可靠,基本可以满足实际需要。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top