×
嵌入式 > 技术百科 > 详情

基于单片机和CAN控制器的嵌入式系统设计

发布时间:2020-06-13 发布时间:
|

1. 引言
单片机作为嵌入式设备的心脏,在从消费电子到工业应用等广泛的领域中得到应用。从单片机的历史来看,随着嵌入式设备对单片机功能和性能的要求提高,其经历了从4位机到8位机的发展过程。目前嵌入式产品的不断发展,8bit单片机的处理能力面对越来越多的挑战。而32bit单片机在嵌入式领域得到越来越多的应用。根据市场的发展,EPSON 公司专为高级数据处理的便携式设备推出了32位MCU(Microcontroller Unit )S1C33 系列,下面简单介绍一下EPSON 32 位单片机的特点:
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)电路。
下面我们采用S1C33209,设计一个探测系统。
2. 系统描述及组成
我们的目标是设计一个功耗低、易于扩展、体积小的便携设备,探测系统需要测量参数包括PH值、溶解氧、化学元素、深度等。测控系统工作时需要接收来自上位机控制中心的命令,要求将采集到的数据传送到上位机,两者的最大通信距离大于5Km。由于CAN总线具有较高的可靠性、实时性和灵活性,其最大通信距离可到达10Km,受干扰概率低,因此我们采用CAN总线作为通信方式。

图1 系统总体结构图

系统总体结构如图1所示,CAN采用双绞线,信号以差分电压传送。SJA1000一端与单片机相连,另一端与CAN总线相连。为了提高单片机对CAN总线的驱动能力,把PCA82C250作为CAN控制器和物理总线间的接口,以提高对总线的差动发送能力和对CAN控制器的差动接收能力,其工作方式(高速方式和斜率方式)由引脚RS控制,RS接地为高速,RS串接一个电阻后再接地,用于控制上升和下降斜率,可以减少射频干扰。系统从功能上分为两个主要部分:测控子模块和通信子模块。测控子模块主要功能是根据命令启动系统并完成参数提取、数据处理、存储及发送等操作,为了满足探测系统多路数据的快速采集与分析的特殊要求,该模块以EPSON公司的S1C33209为核心,扩展信号调理电路及与CAN总线的接口;通信子模块的功能是完成水下测控系统与上位机的通信,此模块主要是Philips公司的SJA1000型CAN控制器。
SJA1000是一款独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制,它是PCA82C200型CAN控制器的替代产品,增加了PeliCAN操作模式,支持CAN2.0B协议。在本文中它与单片机的接口比较简单,单片机可以以访问外部存储器的方式来访问SJA1000,由于SJA1000内部寄存器分布在连续的地址内,所以完全可以把SJA1000当作外部RAM。[page]

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总线上接收信息采用中断方式,即SJA1000无错地接收到信息后使INT变为低电平,下降沿触发S1C33209外部中断0,使其进入中断服务程序,其流程如图2所示。

图2 接收流程图

[page]

如果要向CAN控制器发送数据,则必须将符合PeiCAN帧格式的一组数据写入SJA1000的发送缓冲区,然后调用发送子程序,我们采用查询方式实现发送,如图3流程所示。

图3 发送流程图

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

本文作者创新点:本文结合EPSON公司的32位单片机S1C33209功耗低、丰富的周边电路、开发方便等特点,以S1C33209和SJA1000型控制器为核心,实际开发了一种探测系统。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
实时控制.安全.如何加速实现未来工厂落地?