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

发布者:快乐的天使最新更新时间:2011-12-15 关键字:单片机  CAN控制器  嵌入式系统 手机看文章 扫描二维码
随时随地手机看文章

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型控制器为核心,实际开发了一种探测系统。

 

 

关键字:单片机  CAN控制器  嵌入式系统 引用地址:基于单片机和CAN控制器的嵌入式系统设计

上一篇:P89LPC903FD单片机制作射频识别装置
下一篇:自动图像报警系统研究及单片机实现

推荐阅读最新更新时间:2024-03-16 12:48

PIC32单片机IO口操作之LED灯
#include plib.h #define uchar unsigned char #define uint unsigned int /*void delay(uint x) { uint a,b; for(a=x;a 0;a--) for(b=110;b 0;b--); } int main(void) { TRISB=0x00;//设置端口输出;可以参看数据手册 while(1) { PORTB=0x3C00;//四个控制LED的端口输出高电平; delay(100); PORTB=0x00;//关闭LED delay(100); } }//以上代码实现了LED灯的同时闪烁。*/ /*void delay(uint
[单片机]
单片机汇编语言调用C语言的方法
在keil中新建工程,先用汇编编写主体程序,在主体程序中要对要调用的子程序进行声明,如EXTRN CODE (function) EXTRN DATA (DATT0,DATT1,DATT2) ,然后,另建立一个c语言的文件,(千万不要把汇编和c放到一个文件中)并加入到新的工程中,进行编译。下面给一个在网上搜的,有空我编一个例子。 汇编语言调用C语言    这是我刚开始学硬件时做过的一个项目,刚开始是从汇编开始的,从下位机采集上来的数据是浮点数(4字节)我要用接收下来,然后再送到数码管去显示这个浮点数,这首先要把接收到的数(4字节数)再变成浮点数,虽然有浮点数的变换原理但要是用汇编程序来实现非常的繁琐,我想到用C语言来自动实现
[单片机]
如何利用STM32单片机发送字符串
一、STM32有自己的字符发送函数。 void PC_SendChar(uint8_t DataToSend) { USART_SendData (USART1 ,DataToSend); while(USART_GetFlagStatus (USART1 ,USART_FLAG_TC )!=SET ); } 二、发送字符串函数是在字符发送函数的基础上编写的 void PC_SendString(uint8_t *str) { while(*str) { PC_SendChar (*str); str++; } } 三、发送字符串示例 PC_SendString((u8*) Welcome to the NDIR wo
[单片机]
节能微控制器设计使电池寿命长达20年
     在设计电池供电产品时,人们显然希望电池寿命应该尽可能长些。作为一个快速发展的设备种类,从单电池发展起来的应用不仅仅停留在规格上:而是以整个产品的概念为中心。能源敏感的产品应用大致分为能源计量系统、家庭与楼宇自动化、安全和医疗系统(图1)。这些产品通常会围绕一个微控制器(MCU),必须用单一的原电池运作很长时间。在某些应用中,要想更换电池是很难的甚至不可能的:在其它应用中,最终用户不愿意支付更换电池的成本。 图1:人们期望新一代的计量产品能定期报告其读数给计费和资源管理人员,同时在二十年里其运行无人看管。        在这样的应用中采用的是占空比非常低的很活跃的微处理器,在“深度睡眠”状态下时间可能占了99%-
[电源管理]
节能<font color='red'>微控制器</font>设计使电池寿命长达20年
MCS-51单片机控制字详解
PSW:程序状态字 寄存器地址D0H,位寻址D7H~D0H。 位地址 D7 D6 D5 D4 D3 D2 D1 D0 位符号 CY AC F0 RS1 RS0 OV - P CY 进位标记 AC 半进位标记 F0 用户设定标记 RS1、RS0 4个工作寄存器区的选择位。 VO 溢出标记 P 奇偶校验标记 PCON:电源控制器及波特率选择寄存器 字节地址=87H,不可位寻址
[单片机]
MSP430教程8:MSP430单片机复位电路
从上MSP430系统复位电路功能模块图中可以看到了两个复位信号,一个是上电复位信号POR(Power On Reset)和上电清除信号PUC(Power Up Clear)。 POR信号是器件的复位信号,此信号只有在以下的事件发生时才会产生: 器件上电时。 RST/NMI引脚配置为复位模式,当RST/NMI引脚生产低电平时。 当POR信号产生时,必然会产生PUC信号;而PUC信号的产生时不会产生POR信号。会引起产生PUC信号的事件: POR信号发生时。 启动看门狗时,看门狗定时器计满时。 向看门狗写入错误的安全参数值时。 向片内FLASH写入错误的安全参数值时。 MSP430单片机系统复位后器件的初始 当POR信号或PUC
[单片机]
51单片机四位数数字温度计设计
1.温度传感器AD590基本知识 AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测的温度范围为-55℃-+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1uA。 AD590温度与电流的关系如下表所示 2.电路原理图 图4.30.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 (2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 (3).把“单片机系统”区域中的P3.0与“模数转换
[单片机]
51<font color='red'>单片机</font>四位数数字温度计设计
单片机抢答器的设计资料详细说明
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。 ! 系统工作原理本系统采用8051单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、语音模块、抢答开关模块。该抢答器系统通过开关电路四个按键输入抢答信号;利用语音芯片ISD1420 完成语音的录放功能; 利用存储程序; 利用一个数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号
[单片机]
<font color='red'>单片机</font>抢答器的设计资料详细说明
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved