欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>基于凌阳单片机的语音信号实时采集

基于凌阳单片机的语音信号实时采集

2022-12-30 08:35:36 收藏本文 下载本文

“总关三若”通过精心收集,向本站投稿了7篇基于凌阳单片机的语音信号实时采集,下面是小编整理后的基于凌阳单片机的语音信号实时采集,欢迎您能喜欢,也请多多分享。

基于凌阳单片机的语音信号实时采集

篇1:基于凌阳单片机的语音信号实时采集

基于凌阳单片机的语音信号实时采集

摘要:语音信号采集是语音信号处理的基础。本文利用凌阳公司16位单片机――SPCE061A所具有的数字信号处理(DSP)功能及其所提供的音频压缩函数库来实现语音信号的实时采样与压缩;通过RS232接口,将采集到的语音信号实时上传到PC机中存储。

关键词:语音信号处理 RS232 串口通信 语音采样 语音压缩

引言

随着单片机集成化程度的不断提高,现代单片机已经具备了数字信号处理功能,使语音信号处理用单片机实现成为可能。台湾凌阳科技公司(SunPlus)推出的一款SPCE061A就是这样的产品。SPCE061A是以μ'nSP TM16位微控制器及信号处理器芯片为内核的16位单片机,采用模块式集成结构,片内集成了2KB RAM、32KB Flash、ADC、DAC、并行I/O等,特别适合语音信号处理。本文介绍如何实现用SPCE061A单片机采集语音信号,并传送到PC机中的方法。

(本网网收集整理)

1 硬件系统结构

1.1 SPCE061A结构

SPCE061A的内部结构如图1,其特点如下:

*16位μ'nSP TM微控制器;

*工作电压:VDD为2.6~3.6V(CPU),VDDH为VDD~5.5V(I/O);

*CPU时钟为0.32~49.152MHz;

*内置存储器:SRAM为2KB,内存Flash为32KB;

*可编程音频处理;

*2个16位可编程定时器/计数器;

*7通道10位ADC(内置麦克风放大和自动增益控制功能);

*2个10位DAC;

*32路可编程通用输入输出端口;

*串行输入输出接口;

*低电压监测/低电压复位功能;

*14个中断源可来自定时器、外部时钟输入、键唤醒等;

*内置在线仿真电路ICE。

1.2 SPCE061A开发方法

SPCE061A的开发是通过在线调试器PROBE实现的,如图2所示。它利用了SPCE061A内置的在线仿真电路ICE和凌阳公司的在线串行编程技术。如果读者想要使用该芯片及开发系统,可上网www.unsp.com.cn查询,并寻求大学计划的免费支持。

1.3 语音采集的硬件电路

语音采集的硬件电路如图3所示。MIC采用驻极体电容话筒,这种话筒具有灵敏度高、无方向性、重量轻、体积小、频率响应宽、保真度好等优点。

与PC机的.串行通信用SPCE061A的UART接口,用MAX232芯片进行电平转换,即可实现RS232通信。

2 软件设计与实现

2.1 语音信号的采集压缩与数据传输

(1)语音信号的采集压缩

语音信号处理的基础是对语音信号进行数字化,并采样存储。SRCE061A内置专门用于语音信号采集的自动增益控制放大器(AGC)的麦克风输入通道(MIC_IN)。语音信号经麦克转换成电信号,由隔离电容隔掉直流成分,然后输入至内部前置放大器。SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增器时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使谐波减至最小。

ADC初始化程序如下:

INT OFF;

R1=0x0030;

[P_TimerA_Ctrl]=R1;

//时钟频率为CLKA的fosc/2

R1=0xfa00;

[P_TimerA_Data]=R1;

//采样率为16kHz

R1=0x003d;

[P_ADC_Ctrl]=R1; //设置AGC功能

R1=0x00A8;

[P_DAC_Ctrl]=R1; //采用自动方式且通过MIC_IN通道输入,通过定时器A的溢出锁存数据,ADC为自动方式

R1=0x1000;

[P_INT_Ctrl]=R1; //开中断IRQ1_TM

INT IRQ;

图3 语音采集的硬件连接图

采样后的数字语音信号数据量非常大,且由于语音信号采样点幅度分布的非均匀性和样本间的相关性等原因,使语音信号中含有大量的冗余信息。因此,在实际应用中采用各种信源编码技术来消除语音信号的冗余度。语音编码方法主要有波形编码、参数编码和混合编码。

*波形编码的基本原理是以波形逼近为原则,在时域上把幅度样本分层量化并用代码表示;特点是语音质量高、抗噪性强编码率高,适于语音及高保真音乐。

*参数编码是基于某种语音产生模型,在编程端分析出该模型参数选择适当的方式进行编码;特点是语音质量差、抗噪抗弱和编码率低。

*混合编码综合了波形和参数编码之优点。

凌阳SPCE061A提供了压缩算法库――SACMLIB(见表1),其处理的语音信号范围是200Hz~3.4kHz的电话语音,并将A/D、编/解码、存储及D/A做成相应的模块,对于每个模块都有其应用程序接口API。

表1 SACM-LIB库中模块及其算法

模块名称压缩算法采样率/kHz语音压缩编码率/Kb/s用   途SACM_A子带编码1616、20、24播放语音及高保真音乐SACM_S480/S720CELP混合编码164.8、7.2播音SACM_S240参数编码242.4播音SACM_MS01FM音乐合成1616、20、24音乐合成SACM_DVR子带编码1616Kb/s的传输率,8Ksps的采样率ADC信道录音和DAC放音

(2)语音数据的传输

SPCE061A的通用异步串口(UART)提供了一个8位全双工标准接口,用于完成SPCE061A与外设之间的串行通信。借助于IOB口的特殊功能和UART IRQ中断,可以同时完成UART接口的接收与发送数据的过程。根据应用需求,把UART设置为中断方式接收数据,以查询方式发送数据。

UART初始化程序InitUART见网络补充版(收集整理)。

2.2 上位机控制和存储模块

目前,Mircosoft公司的VC++6.0是基于Windows程序设计的主流开发工具之一。VC++不仅秉承了C++简便、灵活及面向对象等优点,而且提供了功能强大的MFC类库,并能自动生成应用程序框架,提供标准化的程序结构和用户接口。特别需要指出的是,为了今后调用低层的音频处理API函数,对由下位上传的音频数据进一步进行语音识别方面的处理,我们使用VC来编写上位机的控制及存储程序。

在实验室和工业应用中,RS232串口是常用的计算机与外部串行设备(单片机)之间的数据传输通道,由于串行通信简单易用,所以应用广泛。通常在VC++中有三种方法可以实现串行通信:

*使用VC++的标准通信函数_inp和_outp来实现串口通信;

*把串口看成是一个特殊的设备文件,使用有关文件处理的API函数来实现串口通信;

*使用ActiveX的串行通信控件MSComm来实现串口通信。

对于本实例来说,主要考虑的因素是实时语音数据存取,以及位机与下位机的配合。因此,采用了串行通信MSComm控件方法来实现串口通信。另外,可以采用二进制流文件Cfile类来存储声音文件。具体步骤见网络补充版。

结语

通过以上实例录制的语音数据,可以从PC机下载到SPCE061A中(或者作为资源文件放入工程中),使用SACM_A2000模块的函数播放验证,效果能够满足进一步语音信号处理需要。

用凌阳SPCE061A处理语音信号有如下独特之处:

*硬件电路简单,因SPCE061A是一款专门为语音信号处理设计的,麦克和喇叭可直接接入,用户不必外接放大电路等;

*软件编程容易,有相应的API函数,可直接调用。

*用ICE和图形界面编译软件,调试方便。

篇2:基于凌阳单片机的语音信号实时采集

基于凌阳单片机的语音信号实时采集

摘要:语音信号采集是语音信号处理的基础。本文利用凌阳公司16位单片机――SPCE061A所具有的数字信号处理(DSP)功能及其所提供的.音频压缩函数库来实现语音信号的实时采样与压缩;通过RS232接口,将采集到的语音信号实时上传到PC机中存储。

关键词:语音信号处理 RS232 串口通信 语音采样 语音压缩

引言

随着单片机集成化程度的不断提高,现代单片机已经具备了数字信号处理功能,使语音信号处理用单片机实现成为可能。台湾凌阳科技公司(SunPlus)推出的一款SPCE061A就是这样的产品。SPCE061A是以μ'nSP TM16位微控制器及信号处理器芯片为内核的16位单片机,采用模块式集成结构,片内集成了2KB RAM、32KB Flash、ADC、DAC、并行I/O等,特别适合语音信号处理。本文介绍如何实现用SPCE061A单片机采集语音信号,并传送到PC机中的方法。

1 硬件系统结构

1.1 SPCE061A结构

SPCE061A的内部结构如图1,其特点如下:

*16位μ'nSP TM微控制器;

*工作电压:VDD为2.6~3.6V(CPU),VDDH为VDD~5.5V(I/O);

*CPU时钟为0.32~49.152MHz;

*内置存储器:SRAM为2KB,内存Flash为32KB;

*可编程音频处理;

*2个16位可编程定时器/计数器;

*7通道10位ADC(内置麦克风放大和自动增益控制功能);

*2个10位DAC;

*32路可编程通用输入输出端口;

*串行输入输出接口;

*低电压监测/低电压复位功能;

*14个中断源可来自定时器、外部时钟输入、键唤醒等;

*内置在线仿真电路ICE。

1.2 SPCE061A开发方法

SPCE061A的开发是通过在线调试器PROBE实现的,如图2所示。它利用了SPCE061A内置的在线仿真电路ICE和凌阳公司的在线串行编程技术。如果读者想要使用该芯片及开发系统,可上网www.unsp.com.cn查询,并寻求大学计划的免费支持。

1.3 语音采集的硬件电路

[1] [2] [3] [4]

篇3:利用USB2.0单片机实现全数字图像的实时采集

利用USB2.0单片机实现全数字图像的实时采集

摘要:主要论述利用USB2.0单片机接口技术实现高分辨率(640×480点阵以上)、快速(24帧/s以上)全数字图像的实时采集、传输的原理、方法和系统实现,以及相应的固件程序设计。

关键词:USB2.0接口技术数字图像单片机

引言

传统的方法是用视频采集卡(如1394)对视频信号进行采集,利用相应的软件传给PC机,既不方便,也不经济。本文介绍一种利用Cypress公司发布的世界上第一块带有USB2.0接口的芯片CY7C68013与PC机(主板为支持USB2.0的华硕主板PB533)实现了高分辨率(640×480点阵以上)、快速(24帧/s以上)、全数字图像的实时采集系统。

1数字图像的实时采集原理

数字图像的实时采集原理如图1所示。在图1中,以Omnivisiontechnologies公司的OV7620/7120芯片作为图像采集芯片,其主要特点是该芯片可提供0.5――30帧/s,640×480像素点阵CMOS的彩色或黑白数字图像,工作频率为27MHz,像素时钟为27MHz;以Cypress公司的CY7C68013作为CPU控制和USB2.0接口芯片,该芯片的主要特点是在一块芯片上集成了USB2.0内核和引擎、一个增强型51系列的微处理器,及可编程外围接口的芯片,提供了高效率的时序解决方案,在这种有独创性的结构下,仍然使用低价位的51系列的微处理器,其数据传输速度可以达到56MB/s,可以提供USB2.0的最大带宽。因此在图1中,CPU控制和USB2.0接口芯片选择了上述芯片。图像芯片(OV7620/7120)所采集的图像数据按设定的频率(0.5――30帧/s),在CY7C68013内部51CPU的控制下,直接将其送到CY7C68013的FIFO缓冲区,再由其内部的USB2.0接口通过USB电缆将其图像数据传输到计算机。

2数字图像的实时传输

为了实现数字图像的实时传输,必须解决影响实时传输的几大因素:一是图像芯片采集速度;二是图像芯片与CY7C68013的FIFO缓冲区之间的传输速度;三是CY7C68013内部的USB2.0与带有USB2.0接口计算机之间的传输速度;四是计算机中应用软件的接收图像、处理图像速度。以下将分别加以具体说明。

(1)图像芯片采集速度

图像芯片采集速度是选择图像芯片的关键指标,在该指标满足的前提下,选取图像分辨率相对较高的图像芯片。如可以选取Photobit公司的PB-0300或Omnivision公司的.OV7620以及Philips公司的SAA7111等高分辨率图像采集及处理芯片。

(2)图像芯片与CY7C68013的传输速度

一般的,对于大多数CMOS数字图像采集和处理芯片,其数据传输速度为其像素时钟,与其工作频率基本一致,其周期小于40ns;而当CY7C68013工作在主频48MHz时,其内部的通用编程接口可以将外部5――48MHz的数据传输到内部FIFO缓冲区。可见,应选取像素数据传输速度合适的图像采集及处理芯片。

(3)CY7C68013与计算机之间的传输速度

在USB1.0和USB1.1接口中,只支持低速和全速两种传输方式。在低速方式下其最大传输速度为1.5Mbps;在全速方式下其最大传输速度为12Mbps.显然,在这两种方式下要完成高分辨率(640×480像素点阵以上)的数字图像实时传输(24帧/s以上)是不可能的。而USB2.0接口,除支持低速和全速两种传输方式外,还支持高速传输方式。在高速传输方式下,其最大传输速度为480Mbps.因此选取带有USB2.0内核的CY7C68013芯片作为USB2.0接口芯片及带有USB2.0接口的计算机,满足数字图像的实时传输速度要求。

(4)计算机中应用软件的处理速度

计算机中,应用软件的接收图像、处理图像速度,也是完成高分辨率数字图像实时传输所面临的一个很大挑战。特别是在Windows多任务作业下的延迟,更是如此。

此外,USB总线的带宽、操作系统等也会影响数字图像的实时传输。

3系统实现及固件程序设计

(1)系统实现

本系统的具体和详细设计如图2所示的数据采集逻辑原理图。在图2中,图像采集处理芯片用OV7620/7120,时钟频率为27MHz,像素时钟为27MHz;CPU控制和USB2.0接口芯片用CY7C68013,时钟频率为24MHz,通过对CY7C68013内部的CPUCS寄存器进行修改,使其工作在48MHz方式下。根据芯片OV7620/7120及CY7C68013内部的FIFO、通用编程接口等特点,其具体接法是:将OV7620/7120的像素时钟PCLK接到CY7C68013的IFCLK上;

OV7620/7120的HREF、VSYNC分别接到CY7C68013的RDY0、RDY1上;同时将OV7620/7120的VSYNC、CHSYNC分别接到CY7C68013的INT0、INT1上。将CY7C68013的PE0、PE1接在OV7620/7120的I2CBUS上。

图2

(2)固件程序设计

按照图2数据采集逻辑原理图,其固件程序设计主要由以下几部分组成。

①USB2.0接口的初始化程序设计。本段程序主要通过对CY7C68013的CPUCS寄存器进行设定,使CY7C68013重枚举后工作在频率48MHz下;通过对CY7C68013的USBCS寄存器设定,使其USB内核工作在USB2.0方式下,由固件程序应答USB的传输,而不是由USB内核应答;同时通过对CY7C68013的IFCONFIG寄存器设定,使其CY7C68013工作在通用编程接口方式下。

②图像芯片的初始化程序设计。本段程序主要通过CY7C68013的PE0、PE1模拟I2CBUS的时序,完成对图像芯片的初始化、显示窗口大小、数据格式、显示帧数等工作。

③通用编程接口(GPIF)程序设计。本接口程序设计主要完成对CY7C68013通用编程接口的初始化以及控制信号RDYx和CTLx(本设计中未用)、数据宽度(8位)、FIFO缓冲区、计数器等的编程设计,并对OV7620/7120的输入信号HREF、VSYNC等进行逻辑控制,即当HREF为高电平、VSYNC为底时,数据开始传输。

④USB2.0等时传输程序设计。本段程序主要完成USB2.0的等时传输功能。要实时采样数据,必须使用USB2.0的等时传输技术及中断技术。

⑤主程序设计。在主程序中,除要完成①――④中断论述的功能外,还要给出USB控制传输的固件应答程序及相应的中断初始化和中断服务程序,其完整程序见本刊网站。

4结论

本系统在工业在线检测、无人驾驶汽车等领域得到了很好的应用,满足了应用的需求。

篇4:利用USB2.0单片机实现全数字图像的实时采集

利用USB2.0单片机实现全数字图像的实时采集

摘要:主要论述利用USB2.0单片机接口技术实现高分辨率(640×480点阵以上)、快速(24帧/s以上)全数字图像的实时采集、传输的原理、方法和系统实现,以及相应的固件程序设计。

关键词:USB2.0 接口技术 数字图像 单片机

引言

传统的方法是用视频采集卡(如1394)对视频信号进行采集,利用相应的软件传给PC机,既不方便,也不经济。本文介绍一种利用Cypress公司20发布的世界上第一块带 有USB2.0接口的芯片CY7C68013与PC机(主板为支持USB2.0的华硕主板PB533)实现了高分辨率(640×480点阵以上)、快速(24帧/s以上)、全数字图像的实时采集系统。

1 数字图像的`实时采集原理

数字图像的实时采集原理如图1所示。在图1中,以Omnivision technologies公司的OV7620/7120芯片作为图像采集芯片,其主要特点是该芯片可提供0.5~30帧/s,640×480像素点阵CMOS的彩色或黑白数字图像,工作频率为27MHz,像素时钟为27MHz;以Cypress公司的CY7C68013作为CPU控制和USB2.0接口芯片,该芯片的主要特点是在一块芯片上集成了USB2.0内核和引擎、一个增强型51系列的微处理器,及可编程外围接口的芯片,提供了高效率的时序解决方案,在这种有独创性的结构下,仍然使用低价位的51系列的微处理器,其数据传输速度可以达到56MB/s,可以提供USB2.0的最大带宽。因此在图1中,CPU控制和USB2.0接口芯片选择了上述芯片。图像芯片(OV7620/7120)所采集的图像数据按设定的频率(0.5~30帧/s),在CY7C68013内部51CPU的控制下,直接将其送到CY7C68013的FIFO缓冲区,再由其内部的USB2.0接口通过USB电缆将其图像数据传输到计算机。

2 数字图像的实时传输

为了实现数字图像的实时传输,必须解决影响实时传输的几大因素:一是图像芯片采集速度;二是图像芯片与CY7C68013的FIFO缓冲区之间的传输速度;三是CY7C68013内部的USB2.0与带有USB2.0接口计算机之间的传输速度;四是计算机中应用软件的接收图像、处理图像速度。以下将分别加以具体说明。

(1)图像芯片采集速度

图像芯片采集速度是选择图像芯片的关键指标,在该指标满足的前提下,选取图像分辨率相对较高的图像芯片。如可以选取Photobit公司的PB-0300或Omnivision公司的OV7620以及Philips公司的SAA7111等高分辨率图像采集及处理芯片。

(2)图像芯片与CY7C68013的传输速度

一般的,对于大多数CMOS数字图像采集和处理芯片,其数据传输速度为其像素时钟,与其工作频率基

[1] [2] [3]

篇5:基于单片机的脉冲信号采集与处理分析论文

单片机应用系统是通过核心CPU设备来显示工业领域各个设备环节的系统。单片机的应用程序比较复杂,现代经济的发展对单片机的应用提出了更高的要求,特别在当下机械加工、化工和石油工程等多个领域,对单片机的各种性能要求十分高。而在我省工业自动化控制领域中,缺乏相应的单片机技术体系,难以满足当下工程的数据采集、计算机处理应用、数据通信等方面的需要。为了确保工业自动化控制模式的正常开展,实现机械应用与计算机应用技术的协调发展,可通过优化单片机内部结构程序或使用内部倍频技术和琐相环技术等,达到提升其运算和内部总线速度的目的。

篇6:基于单片机的脉冲信号采集与处理分析论文

1.1单片机模拟信号采集

单片机系统采集器的信号有模拟电压信号、PWM信号和数字逻辑信号等,其中,应用较广泛的是模拟信号采集。模拟信号指的是电压和电流,采用的处理技术主要有模拟量的放大和选通、信号滤波等。因为单片机测控系统有时需要采集和控制多路参数,如果对每条路都单独采用一个较为复杂且成本较高的回路,就会对系统的校准造成较大影响,几乎不能实现。因此,可以选用多路模拟开关,方便多种情况下共用。但在选择多路模拟开关时,要注意考虑通道数量、数漏电流设计、切换速度、通导电阻、器件封装、开关参数的漂移性和每路电阻的一致性这几点。信号滤波是为了减少或消除工作过程中的噪声信号,滤波常用的有模拟滤波电路和数字滤波技术,后者在单片机系统中发展较快。

1.2随机脉冲信号采集卡的设计

随机脉冲信号采集卡的硬件组成主要有输入输出接口、单片机运行和控制、复读采集和控制、信号重放和主机接口控制这五个电路模块。该系统的`主要硬件电路包括单片机主系统中的随机脉冲放大和限幅电路、脉冲幅度、脉冲宽度测量电路、高速信号采集、存储电路以及由EPLD等构成的控制信号电路等。单片机除了负责随机脉冲信号的采集以外,还要将相关的数据与随机脉冲数据组织成一个完整的信号数据结构。

1.3单片机脉冲信号采集优化模式

单片机脉冲信号的采集应用必须要做好相关软硬件的应用、采集模式等的剖析准备工作。在硬件系统中,需要主机板与接口板设备的配合。在应用软件子系统过程中,要采用模块化分区结构,确保脉冲信号的有效采集和处理。在单片机脉冲信号采集过程中,要注重对单片机CPU的选择,确保其与接口板等设备相协调。优化编制程序结构,使其满足脉冲信号采集的需求。例如SOC单片机嵌入系统,该系统的应用效果良好,是单片微控制器设备的延伸。采集单片机脉冲信号时,需要单片微控制器的配合,才能应用多个微处理器协调接口板,实现CCL信号、信号、t信号等的应用。该模式要求单片机具有运作速度快、功耗成本低、处理效率高等特点,同时,要为软件系统的运行提供稳定的工作环境,实现单片机脉冲信号采集的优化,并确保整体系统硬件功能的正常使用。在对单片机脉冲信号采集模式进行优化设计时,要掌握硬件的运行环境。在脉冲信号采集处理过程中,要保障单片机应用系统的自检模式、加源刻度模式等各个模块的协调统一配合,保证软件系统中不同软件模块之问的正常运行,实现人机对话模式的优化。通过优化模块结构应用,实现综合运作效益的提升。通过对CCL信号的处理和对输出模块的分析,实现对周期性脉冲信号数据的收集和模拟量数据的输出。在该模式中,信号是一种随机信号,通过数字滤波技术中的中值滤波技术、加权滤波技术等的应用,获取有效、准确的数据并消除误差,提升薄层分辨能力。在系统试调中,要确保软硬件之问的有效适配,确保其调试环节的协调,满足系统各功能需求,实现对单片机脉冲信号的有效采集和处理。

2单片机脉冲信号测量

2.1单片机脉冲信号测试仪

以单片机为核心的脉冲信号参数测试仪和控制装置,具有体积小巧、便于携带、可拓展性较强的特点。例如C8051F340单片机,此种单片机具有较强大的集成模块功能,简化了硬件电路设计。该测试仪主要包括显示模块、单片机模块、按键模块、电源模块和信号调理电路模块,软件采用C51语言编程,主要由主程序、按键子程序、信号采集子程序、信号处理子程序、液晶显示程序和中断子程序等部分组成。此种单片机具有丰富的中断资源,外部中断和定时器溢出中断子程序可完成电压值、周期、频率和占空比的测量。

2.2单片机脉冲信号测量采集方法

单片机脉冲信号的测量采用高电平宽度的方法,将四位数码管用于显示正脉宽度,利用单片机外中断INT 1和定时器TI配合测量得出外脉冲高电平持续时问。当ITN1脚出现下降时,进入INT 1中断服务程序来判断脉冲位置。如果是第一个脉冲,则打开计数器T1的开关;否则,关闭T1开关。T1等到P3.4脚出现高电压时开始计数。主函数在关闭TI的情况下读取TI计数值,并送达四位数码管显示。例如AT89C51单片机脉冲信号的测量,脉冲信号测量仪用来测量脉冲的宽度、频率等参数,主要由单片机、晶振电路设计、显示电路设计和复位电路设计几个部分构成。AT89C51具有低耗能、高性能且经济的微处理器,与MCS51的指令设置和芯片引脚可相互兼容。电路设计在外围接一个晶振和一个复位电路,然后给单片机接上电源和接地就可开始工作。在单片机运行工作中,时钟电路在脉冲信号的测量中十分重要,各个部件的运行都以时钟频率为基准。利用时钟电路提高单片机的时钟信号,利用复位电路提高单片机的电平复位信号,显示电路可显示当前测量的脉冲宽度,按键电路负责测量脉冲信号。

篇7:μC/OS-II在凌阳单片机SPCE061A上的移植

μC/OS-II在凌阳单片机SPCE061A上的移植

摘要:以凌阳单片机为例详细介绍μC/OS-II的移植方法;重点讲解在系统移植过程中一些难以理解的概念,并首次实现了μC/OS-II在凌阳SPCE061A单片机上的移植。

关键词:μC/OS-II凌阳单片机嵌入式系统

目前,实时操作系统已广泛应用于工业控制的各个领域。μC/OS-II作为一个实时内核,由于其源码公开、代码规范,广受开发人员的喜爱。SPCE061A是凌阳公司继μ‘nSPTM系列产品SPCE500A等之后新推出的一款16位单片机,内部集成A/D、D/A等多种接口电路,能很方便地嵌入工业控制的各种场合。更重要的是,其内嵌2K字的SRAM和32K的FlashROM,因此,在不需要扩展外部存储器的情况下就可以实现μC/OS-II系统的移植。

1μC/OS-II实时操作系统介绍

μC/OS-II是一种专门为微控制器设计的抢占式实时多任务操作系统,它以源代码的形式给出。其内核主要提供进程管理、时间管理、内存管理等服务。系统最多支持56个任务,每个任务均有一个独有的优先级。由于其内核为抢先式,所以总是处于运行态最高优先级的任务占用CPU.系统提供了丰富的API函数,实现进程之间的通信以及进程状态的转化。

2μC/OS-II系统结构分析与移植

μC/OS-II的软件体系结构如图1所示。从图1中可以看到,如果要使用μC/OS-II,必须为其编写OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM三个文件。这三个文件是与芯片的硬件特性有关的,它们主要提供任务切换与系统时钟的功能。其它文件用C写成,它们为系统提供任务管理、任务之间通信、时间管理以及内存管理等功能。

众所周知,μC/OS-II是一个多任务操作系统。既然是多任务,就需要解决任务切换的问题。任务切换是在进行系统移植过程需要解决的最主要的问题。由于任务切换涉及到对芯片寄存器的操作,所以它主要用汇编语言写成,因此,对于不同的单片机,其任务切换的代码是不同的;但是只要理解其原理,就能举一反三,以不变应万变。下文将重点讲解任务切换的原理。多任务系统在运行时每个任务好像独立占用CPU一样,因此系统必须为每个任务开辟一块内存空间作为该任务的任务堆栈。该堆栈的作用是保存任务被切换前时CPU各寄存器的值以及系统堆栈的数据。根据以上讨论,可总结出在进行任务切换时需要完成的工作,主要步骤如下:

①将当前任务CPU所有的寄存器压栈;

②将CPU系统堆栈的数据全部拷贝到当前任务的任务堆栈中;

③得到下一个处于运行态优先级最高的任务的任务堆栈的指针;

④恢复下一个任务的CPU寄存器的值;

⑤恢复下一个任务的系统堆栈中的.数据;

⑥通过中断返回指令或函数返回指令,间接修改PC寄存器的值来进行任务切换。

在为μCOS-II编写任务切换代码时需要注意的是:μCOS-II在每次发生中断后都会产生任务调度,但在中断结束后进行的任务切换,不能调用普通任务切换函数,这是因为在中断过程中往往伴随将CPU的状态寄存器压栈操作。以凌阳单片机为例,在中断后,芯片将PC和SR寄存器的值压入堆栈,因此,在中断结束后进行的任务切换中必须对堆栈指针进行调整。

在系统移植过程中另一个较为重要的部分是系统时钟。μCOS-II要求系统能产生10――100Hz的时钟节拍。该时钟节拍由硬件定时器产生。仍以凌阳单片机为例,可选用时基信号TMB2产生128Hz中断,作为系统时钟节拍的产生源。系统时钟中断服务子程序用汇编语言写成,由于其主要功能在用C编写的子函数中实现,因此,编写该服务子程序的难度不大。

3μC/OS-IIBSP代码的编写

BSP(板级支持包)是介于底层硬件和操作系统之间的软件层,它对底层硬件进行封装,使得操作系统不再面对具体的硬件。我们以凌阳SPACE061A单片机为例介绍BSP代码的编写。

3.1任务切换

凌阳SPACE061A单片机有R1――R5五个通用寄存器,还有1个SR(CPU状态寄存器),再加上PC,总共有7个CPU内部寄存器在任务切换时需要保存。μCOS-II系统调用OSCtxSw()来实现任务的切换,下面给出其部分代码:

_OSCtxSw:

PUSHALL//将所有寄存器压栈

OSIntCtxSw_in:

//求出系统堆栈的长度,并将其存入R2

R1=SP

R2=OSStkStart

R1+=1

R2=R2-R1

R1=[_OSTCBCμγ]//R1≤OSTCBStkPtr,R1为任

//务堆栈的头指针

R1=[R1]//首先将系统堆栈长度保存在任

//务堆栈中

[R1]=R2

R3=OSStkStart//得到堆栈的起始地址

//保存系统堆栈到任务堆栈

save_stack:

R3-=1

R1+=1

R4=[R3]

[R1]=R4

R2-=1

JNZsave_stack

CALL_OSTaskSwHook

R1=[_OSTCBHighRdy]

[_OSTCBCur]=R1

R1=[_OSPrioHighRdy]

[_OSPrioCur]=R1

JMPOSCtxSw_in

3.2μCOS-II系统时钟

以凌阳SPCE061A单片机的TMB2时基信号作为系统时钟,每经历一个时钟节拍的时间将产生一次中断,在中断服务子程序中会调用OSTickISR()函数,汇编代码如下:

_OSTickISR:

PUSHALL

R1=0x0001

testR1,[P_INT_Ctrl]

JZOUT

R1=0x0001

[P_INT_Clear]=R1

CALL_OSIntEnter

CALL_OSTimeTick

CALL_OSIntExit

OUT:

R1=0x0001

[P_INT_Clear]=R1

POPALL

RETI

结语

RTOS是当今嵌入式应用的热点。应用RTOS,可以提高产品的可靠性,降低研发周期。μCOS-II具有很好的实时性和很小的代码量,因此掌握μCOS-II的移植方法是相当重要的。本文移植修改的源代码请参见本刊网络补充版。

【基于凌阳单片机的语音信号实时采集】相关文章:

1.RTLinux在雷达信号采集处理系统的应用

下载word文档
《基于凌阳单片机的语音信号实时采集.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

基于凌阳单片机的语音信号实时采集相关文章
最新推荐
猜你喜欢
  • 返回顶部