使用凌阳SPCE061A的嵌入式应用系统设计

发布者:EnchantedMelody最新更新时间:2011-11-17 关键字:SPCE061A  嵌入式应用 手机看文章 扫描二维码
随时随地手机看文章

  SPCE061A是凌阳科技新推出的u課SP内核的十六位单片机,内嵌32K字 Flash的SPCE061A时是适用于数字语音识别应用领域的一种经济的选择。它支持精简指令系统,片内具有丰富的硬件资源。只需设计少量的片外扩展电路即可实现应用系统的硬件功能要求。μC/OS-II是一个源代码公开的精简的实时性很强的操作系统内核,移植性强,基于μC/OS-II来设计系统可以提高系统软件开发的效率。将μC/OS-II移植到SPCE061A上,在μC/OS-II的平台上设计软件对于提高相关嵌入式应用系统产品的质量,减少开发周期和降低成本方面有着重要的意义。

  基于SPCE061A的硬件最小系统的设计

  SPCE061A的系统结构

  SPCE061A具有丰富的片上系统资源,结构如图1所示,其片内包括:

  ·16位的高性能u課sp内核单片机

  ·CPU时钟范围:0.32MHz~ 49MHz

  ·片内32k字的Flash程序存储器、2k字的SRAM数据存储器

  ·2个16位I/O端口

  ·14个中断源

  ·1通道专用音频A/D转换通道

  ·7通道A/D转换通道

  ·内置MIC放大电路和自动增益(AGC)放大电路

  ·2路电流输出型的D/A转换通道

  ·2个16位通用定时器/计数器

  ·实时实钟(RTC)

  ·低电压复位、低电压监测

  ·内置在线仿真接口(ICE)

  ·具有保密功能

  ·具有WatchDog功能

  基于SPCE061A的最小应用系统的构建

  基于SPCE061A丰富的片内资源,在它的OSCO、OSCI端接上32768 Hz晶体振荡器及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容、电阻后,再加上复位电路即可构成一个最小系统。如图2所示。外围电路接口可扩展LCD液晶显示器用于对有关数据的实时显示。

  μC/OS-II 在SPCE061A上的移植

  μC/OS-II内核移植的主要内容

  μC/OS-II是为微控制器和应用软件开发而设计的抢占式实时多任务操作系统,其内核主要实现任务调度、任务间的通信、内存管理和时间管理。其软件体系结构以及与硬件的关系如图3所示.
多任务应用程序位于最上层,通过调用内核的API函数来实现任务的调度和切换、存储管理和任务进程的通讯. μC/OS-II的大部分代码是用C语言编写,而与硬件相关的三个源程序文件0S_CPU.H,OS_CPU_A.A,OS_CPU_C.C含有与硬件处理器相关的汇编语言代码,来实现对处理器寄存器的访问以及堆栈的操作.因而μC/OS-II操作系统在SPCE061A上的移植主要是对0S_CPU. H,OS_CPU_A.A,OS_CPU_C.C三个源程序的编写。

  其中OS_CPU.H 中包括了用#define定义的与处理器相关的常量,宏和类型定义.这样与μC/OS-II所定义的变量类型相一致.OS_CPU_A.A 中要求用户编写四个简单的汇编函数:(1)OSStartHighRdy()函数的作用是用于运行最高优先级的就绪任务.(2)OSCtxSw()是实现 CPU 在正常运行时任务间的切换,即对当前任务堆栈的保存和对高优先级任务堆栈的弹出,使最高优先级任务获取CPU 的控制权. (3)OSIntCtxSw()是在中断服务程序中执行任务切换功能的函数.(4)OSTickISR()是系统时钟的中断服务程序.该程序执行频率为10~100 Hz,主要功能是检查是否有由于延时而被挂起的任务成为就绪任务,如果有就调用OSIntCtxSw()进行任务切换,从而运行高优先级的任务. OS_CPU_C.C中主要是编写任务堆栈初始化函数OSTaskStklnit().

  移植中的关键问题

  多任务系统在运行时,任一当前正在运行的任务好像独占CPU一样,需要为每个任务开辟一段内存空间作为该任务的任务堆栈,该堆栈的作用是保存任务被切换前时CPU各寄存器的值以及系统堆栈的数据。由于不同的处理器其内部的寄存器分配不一样,有时堆栈的增长方式也不一样,因而移植的关键问题就是要针对不同的处理器如何在任务切换时做好寄存器的状态的保护,以及系统堆栈和任务堆栈的切换,从而编写好介于底层硬件和操作系统之间的软件层。凌阳 SPCE061A单片机有R1~R5五个通用寄存器,以及段寄存器SR, 程序计数器PC,共有7个CPU内部寄存器在任务切换前需要保存。μC/OS-II系统通过调用OSCtxSw()来实现任务的切换。

  语音识别系统实例

  本系统通过设计一个语音识别系统来验证μC/OS-II在SPCE061A上的移植成功,系统共创建4个实时任务,硬件实现上只需在最小系统上增加相应的音频电路和液晶显示模块。

  //建语音识别初始化任务

  OSTaskCreate(Task1, (void * )0, (void*) tackl[-TASK—STK—SIZE一1],1);

  //建立语音训练任务

  OSTaskCreate(Task2, (void * )0, (void*) tack2[-TASK—STK—SIZE一1],2);

  //建立语音识别任务

  OSTaskCreate(Task3, (void * )0, (void*) tack3[-TASK—STK—SIZE一1],3);

  //LCD显示的任务

  OSTaskCreate(Task4, (void * )1, (void*) tack4[-TASK—STK—SIZE一1],4);

  同时采用信号量来实现语音识别任务和LCD显示的任务之间的通讯,使得系统在成功识别语音后同时控制LCD输出识别的正确与否的信息。系统运行结果:系统初始化,调用训练函数进行语音识别训练;训练成功后,进入语音识别循环,并将语音识别的结果在LCD上显示出来。

  μC/OS-II操作系统具有较强的实时性,而且代码量较小(总计8K 多),现已被移植到许多处理器上。而将μC/OS-II移植到SPCE061A芯片上,具有一定的应用价值,使得基于SPCE061A的应用系统的设计可以更加灵活。同时μC/OS-II 实时操作系统的在SPCE061A移植,不但可以提高基于SPCE061A的应用系统的实时性、可靠性和稳定性,还提高了应用软件的可移植性,降低了研发周期。

  参考文献:

  1.  JEAN J,LABROSSE.uC/OS-II源码公开的实时嵌入式操作系统[M].邵贝贝,译.北京:中国电力出版社,2001

  2.  邵贝贝. 单片机嵌入式的在线开发方法[M]. 北京:清华大学出版社, 2004

  3.  任哲. 嵌入式实时操作系统uC/OS-II原理及应用[M]. 北京:北京航空航天大学出版社, 2005
  
  4.  刘海成,秦近平,韩喜春. MCU-DSP型单片机原理及应用[M]. 北京:北京航空航天大学出版社, 2006

关键字:SPCE061A  嵌入式应用 引用地址:使用凌阳SPCE061A的嵌入式应用系统设计

上一篇:基于单片机软核的SOPC系统设计与实现
下一篇:TI加大C2000设计与生产投资,应对中国市场需求

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

采用集成DSP与微处理器内核的嵌入式应用
嵌入式应用包括信号处理算法与控制算法,在多种实时嵌入式系统中,这两种算法共同执行必需的功能,因此我们应了解控制算法与数字信号处理器 (DSP) 算法是如何实现互操作性的。在手机和 MP3 播放器等应用中,要解决上述互操作性问题,传统做法是分别用 RISC 处理器和DSP来处理控制算法与信号处理算法。例如,在手机中,信号处理功能负责处理音视频应用中的回声消除与编解码工作。由于DSP 架构是专门设计用于执行信号处理算法的,因此信号处理算法在 DSP 上的 运行效率很高;而手机中的控制软件则负责执行状态机,即控制用户界面、键盘及其它非信号处理功能。 开发包括信号处理与控制算法且要求这两种算法间实现互操作性的嵌入式应用时,我们要面临几大挑
[应用]
基于二维物体斜面黑线运动智能小车的设计
二维物体斜面运动算法是2005年全国大学生索尼杯电子竞赛E题“悬挂运动控制系统”延伸出的研究课题,其主要内容是设计一个电机控制系统,控制物体在倾斜(仰角≤100°)的板上运动。在一个白色底板上固定两个滑轮,两只电机(固定在板上)通过穿过滑轮吊绳控制一个物体在板上运动,并达到如下要求: 1)控制物体在80x100 cm的范围内做自行设定的运动; 2)控制物体作圆心可任意设定、直径为50 cm的圆周运动; 3)控制物体跟随板上标出的任意曲线运动,线宽1.5~1.8 cm,总长度约50 cm,颜色为黑色,曲线的前一部分是连续的,长约30 cm,后一部分是两段总长约20 cm的间断线段,间断距离不大于1 cm,沿连续曲线运动限定在2
[单片机]
基于二维物体斜面黑线运动智能小车的设计
SPCE061A使用时基,实现定时器
//以下代码主要实现SPCE061A每隔0.5秒就运行一次,注意以下代码一定要在ICE模式下运行! #include SPCE061.H main() { asm( INT OFF );//关中断 *P_IOB_Dir=0xFFFF; *P_IOB_Attrib=0xFFFF; *P_IOB_Data=0xFFFF; *P_INT_Ctrl=C_IRQ5_2Hz;//只要把2Hz改为4Hz就可以改变频率 asm( INT IRQ );//开中断 while(1) { *P_Wat
[单片机]
基于SPCE061A单片机汇编语实现的流水灯
//====================================================================// //名称:流水灯 //功能描述:发光二极管单向循环点亮。SPCE061A单片机汇编语言实现 //===================================================================// .include SPCE061A.inc //包含头文件 .ram .var R_LEDControl //定义LED控制变量 .var R_DaleyControl /
[单片机]
基于SPCE061A和CPLD的电动自行车充电系统研制
电动车由于具有无废气污染、无噪音、轻便美观等特点,受到众多使用者的青睐。但使用中也暴露出它的局限性,那就是蓄电池的容量决定了它的使用范围,而且存在充电时间长的缺点。目前随着电动自行车的发展,急需解决的问题就是如何实现快速灵活的充电。   随着电子技术、可编程逻辑器件(FPGA,CPLD)、EDA技术的飞速发展,基于硬件编程语言的自上而下(TOP-TO-DOWN)设计方法给数字系统的开发设计带来了革命性变革,仅使用单片机来实现系统控制的传统方法正在被越来越多的以MCU+FPGA/CPLD为核心的最新设计理念取代。采用这种混合设计方案的最大优点是两者的优势互补,电路结构简单,这给数字电路系统的设计带来极大的方便。利用CPLD控
[单片机]
基于<font color='red'>SPCE061A</font>和CPLD的电动自行车充电系统研制
智能停车场车辆检测系统的设计与实现
摘 要:本文介绍了一种以SPCE061A型单片机为主控芯片的停车场车辆检测系统。系统利用地感线圈对进出停车场的车辆进行检测,控制闸杆机的自动起落,并具备车位显示以及语音提示功能。该系统配合IC卡和图像监测处理装置可以构成一套完整的智能停车系统,从而实现大型停车场的智能化管理。文中重点介绍了车辆检测部分的设计原理,并给出了相应的硬件接口电路及软件编程要点。 1、引言   在现代化的大型停车场中,智能停车管理系统使得车辆进出手续简单,安全性高,实现了对车辆的自动检测、计费、统计、显示等功能,大大节省了人力资源,提高了工作效率。整个停车管理系统中,车辆检测部分是系统的关键。本设计介绍了一种停车场车辆检测系统,通过分布在进出口
[汽车电子]
智能停车场车辆检测系统的设计与实现
基于SPCE061A的高精度多通道温度测量系统设计
   0 引 言   温度的测量与控制在工农业生产、日常生活及科学研究中有着广泛的应用。由于常用温度传感器的非线性输出及一致性较差,使温度的测量方法和手段相对较复杂,也给电路的调试增加了难度。为此,设计了以台湾凌阳公司生产的SPCE061A 16位高性能单片机为系统控制核心。采用DALLAS公司的DS18820作为温度传感器的三通道高精度温度测控仪,该测控仪实现了温度数据和日期、时间的显示与保存;可输出显示三组温度和三路控制信号,具有故障和报警状态提示等功能,保证了测试的精度以及系统的可靠性和控制要求。    1 系统硬件设计   多通道智能温度测控仪的硬件电路原理框图如图1所示,测控仪主要由SPCE061A单片机、温度传感
[模拟电子]
Xen Project 4.9全新功能进一步提高汽车和嵌入式应用的可用性
Xen Project Hypervisor为阿里云提供原动力;该项目在中国的应用和增长继续保持强劲势头 Linux基金会旗下的Xen Project今天发布Xen Project Hypervisor 4.9版本。这一最新版本的高级功能适用于嵌入式、汽车和原生云计算应用。它还改进了启动配置,方便在不同硬件平台间进行迁移,x86新指令可加速机器学习计算,并增强了与ARM®架构相关的现有功能及设备模型操作hypercall等功能。 Xen Project在嵌入式和汽车领域的应用保持持续增长,这是因为越来越多的公司希望把虚拟化扩展到嵌入式设备中,同时继续发挥hypervisor的优势,这包括通过整合降低成本;把硬件抽象出来,使
[嵌入式]
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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