16位单片机及语音嵌入式系统.ppt

上传人:本田雅阁 文档编号:3099438 上传时间:2019-07-08 格式:PPT 页数:233 大小:6.16MB
返回 下载 相关 举报
16位单片机及语音嵌入式系统.ppt_第1页
第1页 / 共233页
16位单片机及语音嵌入式系统.ppt_第2页
第2页 / 共233页
16位单片机及语音嵌入式系统.ppt_第3页
第3页 / 共233页
16位单片机及语音嵌入式系统.ppt_第4页
第4页 / 共233页
16位单片机及语音嵌入式系统.ppt_第5页
第5页 / 共233页
点击查看更多>>
资源描述

《16位单片机及语音嵌入式系统.ppt》由会员分享,可在线阅读,更多相关《16位单片机及语音嵌入式系统.ppt(233页珍藏版)》请在三一文库上搜索。

1、1,16位单片机 及语音嵌入式系统,赵定远 马洪江 主 编,2,第1章 SPCE061A单片机简介,3,一、nSP家族的模块式结构,4,体积小、集成度高、可靠性好且易于扩展 具有较强的中断处理能力 高性能价格比 功能强、效率高的指令系统,二、nSP家族的特点,5,性能,三、 SPCE061A简介,16位nSP微处理器; 工作电压:VDD为2.6-3.6V(cpu), VDDH为VDD- 5.5V(I/O) CPU时钟:0.32MHz-49.152MHz ; 内置2K字SRAM; 内置32K字FLASH; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电小 于2A/3

2、.6V;,6,2个16位可编程定时器/计数器(可自动预置初始计数值); 2个10位DAC(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; 锁相环PLL振荡器提供系统时钟信号;,性能,7,32768Hz实时时钟; 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; 具备串行设备接口; 具有低电压复位(LVR)功能和低电压监测

3、(LVD)功能; 内置在线仿真电路ICE(In- Circuit Emulator)接口; 具有保密能力; 具有WatchDog功能(由具体型号决定)。,性能,8,四、SPCE061A简介的结构,9,芯片引脚排列,10,SPCE061A实物图,1.2 SPCE061A简介,11,SPCE061A最小系统的构成,12,五、SPCE061A开发方法,通过在线调试器PROBE实现。 它既是一个编程器(即程序烧写器),又是一个 实时在线调试器。 PROBE工作于凌阳IDE集成开发环境软件包下, 其5芯的仿真头直接连接到目标电路板上 SPCE061A相应管脚,直接在目标电路板上的 CPU-SPCE061

4、A调试、运行用户编制的程序。 PROBE的另一头是标准25针打印机接口,直接连 接到计算机打印口与上位机通讯,在计算机IDE集 成开发环境软件包下,完成在线调试功能。,13,计算机、PROBE、用户目标板连接图,14,计算机、PROBE、用户目标板连接实物图,15,本章内容结束,16,第2章 SPCE061A单片机硬件结构,17,2.1 nSP的核心结构,18,2.1.1 ALU算术逻辑运算单元,16位算术逻辑运算 nSP提供了基本算术运算与逻辑操作指令,加法、减法、比较、补码、异或、或、与、测试、写入、读出等16位算术逻辑运算及数据传送操作。,19,2.1.1 ALU算术逻辑运算单元,结合算

5、术逻辑的16位移位运算 包括:算术右移ASR、逻辑左移LSL、逻辑右移LSR、旋转左移ROL及旋转右移ROR。 nSP的移位指令是复合式指令,一个指令会同时完成移位和算术逻辑运算。程序设计者可利用这些复合式的指令,撰写更精简的程序代码,进而增加程序代码密集度 (Code Density)。,20,2.1.1 ALU算术逻辑运算单元,16位16位的乘法运算和内积(乘加)运算 高速的16位16位乘法运算指令MUL和16位内积运算指 令MULS。 可以用于有符号数相乘 (signedsigned) 或无符号数与 有符号数相乘 (unsignedsigned)的运算。MUL指令只 需花费12个时钟周期

6、,MULS指令花费10n+6个时钟周 期,其中n为乘加的项数。例如:“MR=R2*R1 ,4” 表示求4项乘积的和,MULS指令只需花费46( 104+6=46)个时钟周期。这两条指令大大的提升了 nSP的数字信号处理能力。,21,2.1.2 寄存器组,共有8个16位寄存器 分为通用寄存器和专用寄存器两大类 通用寄存器包括:R1R4,作为算术逻辑运算的来源及目标寄存器 专用寄存器包括: SP、BP、SR、PC,是与CPU特定用途相关的寄存器,22,2.1.2 寄存器组,通用寄存器R1R4 (General-purpose registers) 可用于数据运算或传送的来源及目标寄存器。寄存器R4

7、、R3配对使用,还可组成一个32位的乘法结果寄存器MR;R4为MR的高字符组,R3为MR的低字符组,用于存放乘法运算或内积运算结果,23,2.1.2 寄存器组,堆栈指针寄存器SP (Stack Pointer) SP用来记录堆栈地址,指向堆栈顶端。 堆栈是一个先进后出的内存结构,nSP的堆栈结构由高地址往低地址方向储存。 CPU执行push、子程序调用call及进入中断服务子程序(ISR,Interrupt Service Routine) 时,会在堆栈里储存寄存器内容,这时SP会递减以反映堆栈用量的增加。当CPU执行pop、子程序返回ret及从ISR返回reti时,SP会递增以反映堆栈用量的

8、减少。 nSP堆栈的大小限制在2K字的SRAM内,即地址为0x0000000x0007FF的内存范围中。,24,2.1.2 寄存器组,基址指针寄存器BP (Base Pointer),nSP提供了一种方便的寻址方式,即基址寻址方式BP+IM6;程序设计者可通过BP来存取ROM与RAM中的数据,包括:局部变量(Local Variable)、函数参数(Function Parameter)、返回地址(Return Address)等。BP还可做为通用寄存器R5,用于数据运算传送的来源及目标寄存器。,25,2.1.2 寄存器组,程序计数器PC (Program Counter),用来记录程序目前执

9、行位置,以控制程序走向。CPU每执行完一个指令,就会改变PC的值,使其指向下一条指令的地址。在nSP里,16位的PC寄存器与SR寄存器的CS字段,共同组成一个22位的程序代码地址。,26,2.1.2 寄存器组,状态寄存器SR (Status Pointer),状态寄存器SR内含许多字段,每个字段都有特别的用途。其中包含两个6位的区段选择字段: CS (Code Segment),DS (Data Segment),它们可与其它16位的寄存器结合在一起形成一个22位的地址,用来寻址 4M字容量的内存。 SPCE061A只有32K字的闪存,只占用一页的存储空间,所以CS和DS字段在SPCE061A

10、中都是设为0。 算数逻辑运算的结果会影响CPU内的标志(flag),标志的内容可以作为条件判断的依据。 nSP有四个1位的标志: N、Z、S、C,即SR寄存器中间的4个位(B6B9)。,27,2.1.3 数据总线和地址总线,nSP是16位单片机,它具有16位的数据线和22位地址线。所以其基本数据类型是16位的“字”型,内存都是按“字”操作,22位地址线最多可寻址到4M字的内存空间。地址线中的高6位A16A21来自SR寄存器中6位的CS字段或是6位的DS字段,低16位A0A15则来自内部寄存器。通常,地址线的高6位称为内存地址的Page Selector,简称为页码(Page);而低16位则称为

11、内存地址的偏移量(Offset)。 nSP通过对区段(Segment)的编码来实现内存分页检索,通过Segment与Offset的配合产生22位地址,(注意: SPCE061A只有32K字闪存FLASH,仅占一页存储空间,所以CS字段和DS字段在SPCE061A用不到,都设为0),28,2.2 SPCE061A片内存储器结构,SPCE061A片内有2K字的SRAM和32K闪存。,29,2.2.1 RAM,SPCE061A有2K字的SRAM(包括堆栈区),地址范围从0x0000到0x07FF。前64个字,即0x00000x003F地址范围内,可采用6位地址直接地址寻址方法,存取速度为2个CPU时

12、钟周期;其余范围内(0x00400x07FF)内存的存取速度则为3个CPU时钟周期。,30,2.2.2 堆栈SP,SP是用来记录堆栈地址的寄存器,SP会指向堆栈的顶端。 堆栈是一个先进后出的内存结构,nSP的堆栈结构是由高地址往低地址的方向来储存的。CPU执行push、子程序呼叫call及进入中断服务子程序(ISR,Interrupt Service Routine) 时,会储存寄存器内容在堆栈里,这时SP会递减以反映堆栈用量的增加。当CPU执行pop、子程序返回ret及从ISR返回reti时,SP会递增以反映堆栈用量的减少。 nSP堆栈大小限制在2K字的SRAM内,即地址为0x0000000

13、x0007FF的内存范围中。SPCE061A系统复位后,SP初始化为0x07FF,每执行push指令一次,SP指针减一。,31,2.2.3 闪存Flash,SPCE061A是用闪存替代mask ROM的MTP(multi-time-programmable)芯片,闪存可进行多次擦除与写入,可用来存储程序与数据。SPCE061A具有32K字(32K16位)闪存,32K字的内嵌闪存被划分为128页,每页存储容量为256字。它们在CPU正常运行状态下均可通过程序擦除或写入。全部32K字闪存均可在ICE工作方式下被写入或被擦除。不对用户开放整体擦除功能。,32,2.2.3 闪存Flash,用户通过向P

14、_Flash_Ctrl (写) ($7555H)单元写入0xAAAA启用闪存的存取功能。然后,向P_Flash_Ctrl (写) ($7555H)单元写入0x5511,来擦除页的内容。 为保证数据的正确写入,用户必须在写入之前擦除页的内容。页大小为0x100。第一页地址范围:0x80000x80FF,最后一页的地址范围:0xFF000xFFFF。0xFC000xFFFF范围内的地址由系统保留,用户最好不要用本范围内的地址。,33,2.3 SPCE061A的输入/输出接口,输入/输出接口(简称I/O端口)是单片机 与外设交换信息的通道。 输入端口负责从外界接收检测信号、键盘 信号等各种开关量信号

15、。 输出端口负责向外界传送由内部电路产生 的处理结果、显示信息、控制命令、驱动 信号等。,34,2.3 SPCE061A的输入/输出接口,nSP内有并行和串行两种方式的I/O口。 并行口线路成本较高,但是传输速率也较高; 串行口的传输速率较低但可以节省大量的线路成本。,35,2.3 SPCE061A的输入/输出接口,SPCE061A有两个16位的通用并行I/O口:A口和B口。这两个端口的每一位都可通过编程单独定义成输入或输出口。 A口的IOA0-IOA7作为输入端口时,具有唤醒功能,即当输入电平发生变化时,会触发CPU中断。在电池供电、追求低耗电的应用场合,可以让CPU进入睡眠模式(利用软件控

16、制)以降低功耗,需要时才以按键来唤醒CPU,使其进入工作状态。例如:手持遥控器、电子字典、PDA、计算器、无线电话等。,36,2.3.1 I/O端口结构,SPCE061A提供了位控制结构的I/O端口,每一位可单独用于数据输入或输出。每个独立的位可通过以下3种控制向量来作设定: 数据向量Data 属性向量Attribution 方向控制向量Direction,37,2.3.1 I/O端口结构,每3个对应控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。例如,需要IOA0是下拉输入引脚,则对应的Data、Attribution和Direction的值均被设为“0”

17、。如需要IOA1是带唤醒功能的悬浮式输入引脚,则Data、Attribution和Direction的值被设为“010”。与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。,A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O端口设置时要特别注意这一点,38,2.3.2 并行I/O端口的控制向量组合,方向向量_Dir、属性向量_Attrib和数据向量_Data 分别代表三个控制口。 三个端口中每个对应的字节合在一起,形成一个控 制字,来定义相

18、对应I/O端口位的输入/输出状态和 方式。,39,2.3.2 并行I/O端口的控制向量组合,_Dir位决定端口位的输入/输出方向:0为输入,1为输出。 _Attrib位决定在端口位的输入状态下是为悬浮式输入还是非悬浮式输入:0为带上拉或下拉电阻式输入,1为悬浮式输入。在端口位输出状态下决定其输出是反相还是同相:0为反相输出,1则为同相输出。 _Data位在端口位的输入状态下被写入时,与_Attrib字节合在一起形成输入方式的控制字00、01、10、11,以决定输入端口是带唤醒功能的上拉电阻式、下拉电阻式或悬浮式以及不带唤醒功能的悬浮式输入。_Data位在端口位的输出状态下被写入的是输出数据,不

19、过,数据是经过反相器输出还是经过同相寄存器输出要由_Attrib位来决定。,40,2.3.2 并行I/O端口的控制向量组合,设置举例: 1、把A口的B0定义成下拉电阻式的输入口,则A口_Dir、_Attrib和_Data三个向量对应的B0组合应设为000。 2、把A口的B1定义成具有唤醒功能的悬浮式输入口,只需将_Dir、_Attrib和_Data向量对应的B1组合设置为010即可。 A口的IOA0IOA7作为唤醒来源,常用于键盘输入。要启用IOA0IOA7的唤醒功能,必先读取P_IOA_Latch单元,以此锁存IOA0IOA7引脚上的按键状态。随后系统才可通过指令进入低功耗的睡眠状态。当有按

20、键按下时,IOA0IOA7的输入状态会与其在进入睡眠前被锁存时的状态不同,从而引起系统的唤醒。,41,2.3.3 B端口的特殊功能,42,2.4 时钟电路,nSP的时钟电路采用晶体振荡器电路。外接晶振采用32768Hz。推荐使用外接32768Hz晶振,RC阻容振荡的电路时钟不如外接晶振准确。,43,2.4 时钟电路,实时时钟RTC(Real Time Clock) 32768Hz实时时钟常用于钟表、实时时钟延时及其它与时间相关类产品。SPCE061A通过对32768Hz实时时钟来源分频,提供了多种实时时钟中断。如,用作唤醒的中断来源IRQ5_2Hz,表示系统每隔0.5秒被唤醒一次,可作为精确的

21、计时基准。 SPCE061A 还支持RTC振荡器强振模式/自动模式的转换。,44,2.5 PLL锁相环(Phase Lock Loop),PLL的作用:将系统提供的实时时钟基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。系统预设的PLL振荡频率为24.576MHz。,45,2.6 系统时钟,32768Hz的实时时钟经PLL倍频电路后,产生系统时钟频率Fosc,Fosc再经分频得到CPU时钟频率(CPUCLK),可通过设定P_SystemClock(写)(7013H)单元来控制。预设的Fosc、CPUCLK分

22、别为24.576MHz和Fosc/8。用户可以通过对P_SystemClock单元编程完成对系统时钟和CPU时钟频率的定义。,46,2.6 系统时钟,32768Hz RTC振荡器有两种工作方式: 强振模式和自动弱振模式。 强振模式时,RTC振荡器始终运行在高耗能 的状态下。 自动弱振模式时,系统在上电复位(power on reset) 后的前7.5秒内处于强振模式, 然后自动切换到弱振模式以降低功耗。CPU 被唤醒后预设的时钟频率为Fosc/8,用户 可以根据需要调整该值。,47,2.6 系统时钟,在SPCE061A内,P_SystemClock(写 )(7013H)单元控制系统时钟和CPU

23、时钟。 第02位用来改变CPUCLK,若将第02 位设为“111”可以使CPU时钟停止工作,系 统切换至低功耗的睡眠状态; 第57位可以改变系统时钟的频率。 此外,在睡眠状态下,通过设置该单元的第4 位可以开打或关闭32768Hz实时时钟。,48,2.7 时间基准信号,简称时基信号,来自32768Hz实时时钟,通过频率选择组合而成。 时基信号产生器的频率选择TMB1,为TimerA的时钟来源B提供了各种频率选择信号,并为中断系统提供中断源(IRQ6)信号。 时基信号产生器还可通过分频产生2Hz、4Hz、1024Hz、2048Hz以及4096Hz的时基信号,为中断系统提供各种实时中断源(IRQ4

24、和IRQ5)信号。,49,2.7 时间基准信号,50,2.8 Timer定时器/计数器,SPCE061A提供了两个16位的计时/计数 器:TimerA和TimerB。 TimerA为通用计数器, TimerA的时钟源由时钟源A和B进行“与”操作而形成。 TimerB为多功能计数器,其时钟源仅为时钟源C。 定时器发生溢出后,会产生一个溢出信号(TAOUT/TBOUT),它会传送到CPU中断系统以产生定时器中断信号;此外,还可用于触发ADC输入的自动转换过程和DAC输出的数据锁存。,51,2.8 Timer定时器/计数器,52,2.8 Timer定时器/计数器,53,2.9 睡眠与唤醒,2.9.1

25、 睡眠 IC在上电复位后就开始工作,直到接收到睡眠信号,才关闭系统时钟(PLL振荡器),进入睡眠状态。 用户可通过P_SystemClock(读)(7013H)单元写入CPUClk STOP控制字(CPU睡眠信号)使系统从运行状态转入备用状态。 系统进入睡眠状态后,程序计数器(PC)会停在程序的下一条指令计数上,当有任一唤醒事件发生后,由此继续执行程序。,54,2.9.2 唤醒,系统收到唤醒信号后接通PLL振荡器,同时 CPU响应唤醒事件的处理并进行初始化。 IRQ3_KEY为触键唤醒来源(IOA70), 其它中断信号 (FIQ、IRQ1IRQ6 及 UART IRQ)都可作唤醒来源。 唤醒操

26、作完成后,由进入睡眠状态时的断点 处,继续执行程序。CPU需要200s的时 间才能完成唤醒的动作,所以睡眠/唤醒的 频率不能超过5KHz,否则CPU无法进入睡 眠模式。,55,2.10 模拟数字转换器ADC,2.10.1 ADC的控制,SPCE061A有8个10位ADC通道,其中一个通道(MIC_In)用于语音输入,模拟信号经自动增益控制器和放大器放大后进行A/D转换。其余7个通道(Line_In)和IOA06 引脚共享,可将输入的模拟信号 (如电压信号) 转换为数字信号。 A/D转换范围是整个输入范围,即0VAVdd。无效的A/D模拟信号(超过VDD+0.3V或是低于VSS0.3V)将影响转

27、换电路的工作范围,从而降低ADC的性能。由于Line_In通道和IOA06共享引脚,建议用户选择其它的IO引脚(非IOA06),以避免由于无效IO信号造成电压不稳(超过VDDIO+0.7V或低于VSSIO0.7V)而降低ADC的性能。,56,2.10.1 ADC的控制,ADC最大输入电压由P_ADC_Ctrl(写)($7015H)的第7和第8位的值决定。第7位VEXTREF决定了ADC的参考电压为AVdd或是外部参考电压。第8位V2VREFB决定了2V电压源是否起作用。 A/D转换选择输入通道: 通过设置P_ADC_MUX_Ctrl(写)($702BH)的第02位,可以为A/D转换选择输入通道

28、。通道包括MIC_In和Line_In两种。 用户通过读取P_ADC(读)($7014H)单元,取得从MIC_In通道输入的模拟信号转换结果。用户可通过读取P_ADC_LINEIN_Data(读)($702CH)单元,取得从指定的Line_In通道输入的模拟信号转换结果。,57,2.10.1 ADC的控制,选择MIC_In通道后,可通过设置P_DAC_Ctrl(写) ($702AH)的第3和4位,选择A/D转换的触发事件。 睡眠状态,ADC被关闭(包括AGC和VMIC)。 注意,供电复位后不论ADC是否被启用,VMIC信号都预设为ON。VMIC用于向外部的MIC提供电源,VMIC =AVDD。

29、即,VMIC的状态和ADC的状态无关。所以,不使用VMIC时,用户必须把P_ADC_Ctrl(写)($7015H)单元的第1位MIC_ENB设为1,以关闭VMIC。,58,2.10.1 ADC的控制,硬件ADC的最高速率限定为(Fosc/32/16)Hz,如果速率超过此值,当从P_ADC(读)($7014H)/ P_ADC_LINEIN_Data(读)($702CH)单元读出数据时会发生错误。 P_ADC_Ctrl(写)($7015H)单元的第5位DAC_OUT,可用来选择两通道音频DAC的最大输出。最大输出电流可为2mA或是默认值3mA。DAC_OUT的设置可改变DAC输出的功率。,59,2

30、.10.1 ADC的控制,P_ADC(读/写)(7014H) P_ADC储存MIC输入的A/D转换数据。逐次逼近式的ADC由一个10位DAC(DAC0) 、一个10位寄存器DAR0、一个逐次逼近寄存器SAR和一个比较器COMP组成。 P_ADC(读):读出本单元实际为A/D转换输出的10位数值。如果P_DAC_Ctrl (702AH)单元第3、4位被设为00,那么在转换过程里读出本单元(7014H)亦会触发A/D转换重新开始。,60,2.10.1 ADC的控制,P_ADC_Ctrl(读/写)(7015H) ADC的控制口。,P_ADC_MUX_Ctrl (读/写)( 702BH) ADC多通道

31、控制通过控制P_ADC_MUX_Ctrl(702BH)单元来实现。,P_MUX_Data(读)(702CH) 用于读出LINE_IN7-10位ADC转换的数据。,61,2.10.2 MIC_IN通道方式ADC,ADC范围 MIC_In 通道方式的ADC,最大参考电压可达AVdd,即0V到AVdd。信号从MIC_In引脚输入,经寄存器后被放大。放大器的增益倍数可通过外部电路调整,然后AGC把MIC_In信号控制在指定的范围内。,62,2.10.2 MIC_IN通道方式ADC,设置 用户须先把P_ADC_Ctrl(写)($7015H)单元的第0位ADE设为1,第1位MIC_ENB设为0,从而启用A

32、/D和MIC_In通道(供电复位之后,VMIC预设被打开)。然后,把第2位AGCE设为1,启用AGC。第3、4位用于设定MIC_In通道的ADC触发方式(Timer锁存或直接模式)。P_ADC_MUX_Ctrl(读/写)($702BH)的第02位为0时,模拟电压信号经MIC_In通道输入。,63,2.10.2 MIC_IN通道方式ADC,操作 当触发MIC_In通道输入后,产生一个开始信号(b15(RDY) = 0)。逐次逼近式ADC首先设置最高位,然后清除SAR 的其它位(10 0000 0000B)。这时,DAC0输出电压(1/2 AVdd) 与输入电压Vin进行比较。如果VinVDAC,

33、保持原先设置为1的位(最高有效位)仍为1;否则,该位会被清为0。这个过程重复10次,直到这些位都被比较过。转换结果将会保存在SAR内。A/D转换完成之后,P_ADC_Ctrl (读) ($7015H)的第15位RDY被置为”1”。,64,2.10.2 MIC_IN通道方式ADC,1. 定时器锁存模式 当A/D转换完成时,用户通过读取P_ADC ($7014H) 或P_ADC_MUX_Data($702BH) 单元,以获得10位的A/D转换数据。 定时器事件可由Timer A或Timer B触发。从P_ADC(R) ($7014H)读取数据后,不论处于直接状态还是定时器状态,P_ADC_Ctrl

34、 (读) ($7015H)的第15位RDY将被清除为”0”,并且重新进行A/D转换。若A/D转换结果没被读取,第15位RDY将继续保持为”1”,且不会继续执行A/D转换。 注意:P_ADC_Ctrl (读) ($7015H)第15位RDY与P_ADC_MUX_Ctrl (R) ($702BH) 第15位RDY的作用相同。,65,2.10.2 MIC_IN通道方式ADC,2. 直接模式 设置P_DAC_Ctrl(W)($702AH)的第3和4位,可以指定MIC ADC的工作模式为直接模式。进行A/D转换之前,用户必须先读取P_ADC (读) ($7014H)单元的内容,以启用ADC,然后通过读取

35、P_DAC_Ctrl ($702AH)单元的第15位,循环查询ADC的状态。完成A/D转换之后,程序再一次读取P_ADC (读) ($7014H)单元的内容来得到转换结果。,66,2.10.3 LINE_IN模式的ADC操作,SPCE061A提供7个Line_In通道, 与IOA6-0共享7个引脚,67,2.11 DAC方式音频输出,SPCE061A为音频输出提供2个DAC通道: DAC1和DAC2, 由DAC1和DAC2引脚输出。 DAC输出范围:0X0000到0XFFFF。,68,2.11 DAC方式音频输出,P_DAC2(读/写)(7016H) DAC2为10位的D/A转换单元。在DAC

36、方式该单元带一个10位的缓冲寄存器DAR2。,P_DAC2(写): 通过此单元直接写入10位数据到10位寄存器DAR2来锁存DAC2的输入数值(无符号数)。,P_DAC2(读): 从DAR2内读出10位数据。,69,2.11 DAC方式音频输出,P_DAC1(读/写)(7017H) DAC1为10位的D/A转换单元。在DAC方式该单元带一个10位的缓冲寄存器DAR1。,P_DAC1(写): 通过此单元直接写入10位数据到10位寄存器DAR1来锁存DAC1的输入数值(无符号数)。,P_DAC1(读): 从DAR1内读出10位数据。,70,2.11 DAC方式音频输出,P_DAC_Ctrl(写)(

37、702AH) 第1位:0, 用于双DAC音频输出 第3、4位:控制A/D转换方式 第5-8位:选择DAC的数据锁存方式,71,2.12 低电压监测/低电压复位(LVD/LVR),低电压监测LVD(Low Voltage Detect) 提供系统内电源电压使用情况 系统电压低于用户设定的低限电压VDD, P_LVD_Ctrl单元第15位(LVD监测标志位) 置1,否则为0 SPCE061A有3级可编程低限电压:2.4V, 2.8V, 3.2V,通过对P_LVD_Ctrl编程控制,72,2.12 低电压监测/低电压复位(LVD/LVR),低电压复位LVR(Low Voltage Reset) 通过

38、某种方式使单片机内各寄存器的值为初始的操作叫复位 SPCE061A是在RESB端加一个低电平可令其复位,73,2.13 串行设备输入输出端口(SIO),功能: SIO提供一个1位的串行接口,用于与其它设备进行数据通讯。在SPCE061A内通过IOB0和IOB1这2个口来实现与设备进行串行交换数据的功能。其中,IOB0为时钟口(SCK),IOB1为数据端口(SDA),用于串行数据的接收或发送。 串行输入输出口的启用: 设定P_SIO_Ctrl (701EH)(读/写)单元,通过P_IOB_Dir (7007H),P_IOB_Attrib(7008H),P_IOB_Data(7005H) 三个IO

39、B向量,将IOB0(SCK)设定为输出引脚。,74,2.13 串行设备输入输出端口(SIO),SIO传输速率最快可设为CPUCLK/4,默认值为CPUCLK/16。SPCE061A的SIO速率最快可达12288KHz。 SIO可根据外设的差别来选择不同的寻址模式,有8/16/24位三种寻址模式可选择。用户通过写入P_SIO_Start (701FH)单元,来启动数据交换的过程。串行传输的起始地址是由P_SIO_Addr_Low、P_SIO_Addr_Mid 和 P_SIO_Addr_High 这3个单元所指定。,75,2.13 串行设备输入输出端口(SIO),写入操作步骤 向P_SIO_Sta

40、rt(写)单元写入任一数值,以启动数据传输; 将要传送的八位数据写入P_SIO_Data (写) (701AH),这时SIO开始向串行外设传送起始地址,接着传送P_SIO_Data单元中的8位数据; 连续检查P_SIO_Start(读)的内容,以得知目前的传送状态; 再次对P_SIO_Data (写) 写入下一个八位数据;对P_SIO_Stop(写)(7020H)写入数据,结束本次传输。,76,2.13 串行设备输入输出端口(SIO),读取操作步骤 向P_SIO_Start(写)单元写入任一数值,启动数据 传输; 从P_SIO_Data (读) (701AH)单元读取传送过 来的数据,这时SI

41、O会开始向串行外设传送起始地 址,接着接收串行外设传回的8位数据; 连续检查P_SIO_Start(读)的内容,以得知目前传 送的状态; 当传送完成时,再次对P_SIO_Data (读) 读取下 一个八位数据; 对P_SIO_Stop(写)(7020H)写入数据,结束本 次传输。,77,2.13 串行设备输入输出端口(SIO),P_SIO_Ctrl(读/写)(701EH),用户必须设置P_SIO_Ctrl (701EH) (读/写)单元的第7位,将IOB0、IOB1分别设置为SCK引脚和SDA引脚。第6位用来决定串行接口是处于读取或是写入模式。第3、4位的作用是让用户自行指定数据传输速度;而通

42、过设置第0、1位,可以指定串行设备的寻址宽度。,78,2.13 串行设备输入输出端口(SIO),P_SIO_Data(读/写)(701AH),功能: 收发串行数据缓冲单元, 向此单元写入或读出数据, 可使串行端口发送或接收数据字节,P_SIO_Addr_Low(读/写)(701BH),功能: 串行设备起始地址低字节,默认值为00H,79,2.13 串行设备输入输出端口(SIO),P_SIO_Addr_Mid(读/写)(701CH),P_SIO_Addr_High(读/写)(701DH),功能: 串行设备起始地址的中字节,默认值为00H,功能: 串行设备起始地址的高字节,默认值为00H,80,2

43、.13 串行设备输入输出端口(SIO),P_SIO_Start(读/写)(701FH),P_SIO_Stop(写)(7020H),功能: 启动数据传输,向此单元写入任意数值均可启动。读此单元数据可得到SIO的数据传输状态,第7位为busy标志位,如果为 1则表示正在传输数据,传输完成,该位被清零,可传输新的字节。,功能: 停止数据传输,向此单元写入任意数值停止数据传输。,81,2.14 通用异步串行接口UART,功能:提供一全双工标准接口,用于SPCE061与外设之间的串行通信。,借助于IOB端口和UART IRQ中断,可同时完成UART接口的接收和发送。UART还可通过缓冲来接收数据,即可在

44、寄存器数据被读出之前开始接收数据。,82,2.15 保密设定,系统正常运行时,每隔一定周期该定时器清零,如果在规定时间没有清零,CPU认为系统故障,进行系统复位(reset)。 SPCE061A的看门狗定时器周期为0.75s。,功能:监视系统正常运行。,83,2.16 看门狗计数器(WatchDog),将PAUSE接5V,PVIN接GND并维持1s以上,可将内部保险丝熔化,此后不能进行read、download和debug操作。 注意:使用时一定要慎重。,84,第3章 指令系统,85,3.1 指令系统的概述及符号约定,nSP单片机指令按其功能可划分为:,1) 数据传送指令:包括立即数到寄存器、

45、寄存器到寄存 器、寄存器到存储器存储器到寄存器的数据传送操作; 2) 算术运算:包括加、减、乘运算; 3) 逻辑运算:包括与、或、异或、测试、移位等操作; 4) 转移指令:包括条件转移、无条件转移、中断返回、子程序调用等操作; 5) 控制指令:如开中断、关中断、FIR滤波器的数据的自由移动等操作。,86,寻址方式:,1、立即数寻址: 这种寻址方式是操作数以立即数的形式出现,例如:R1 = 0x1234,是把16进制数0x1234赋给寄存器R1。 2、存储器绝对寻址: 这种寻址方式是通过存储器地址来访问存储器中的数据,例如:R1 = 0x2222,访问0x2222单元的数据。 3、寄存器寻址:

46、这种寻址方式是操作数在寄存器中,例如:R1 = R2,是把寄存器R2 中的数据赋给寄存器R1。 4、寄存器间接寻址: 这种寻址方式是操作数的地址由寄存器给出,例如:R1 = BP,是把由BP指向的内存单元的数据送寄存器R1。 5、变址寻址: 这种寻址方式下,操作数的地址由基址和偏移量共同给出,例如:R1 = BP+0x34。,87,表3-1 符号约定,88,3.2 数据传送指令,一、立即数寻址: 【影响标志】 N,Z 【格式】 Rd = IM16 /16位的立即数送入目标寄存器Rd Rd = IM6 /6位的立即数扩展成16位后送入目标寄存器Rd,89,二、寄存器寻址: 【影响标志】 N,Z

47、【格式】 Rd = Rs /将源寄存器Rs的数据送给目标寄存器Rd,三、直接地址寻址: 【影响标志】 N,Z 【格式】 A6 = Rs /将源寄存器Rs中的数据送给以A6为地址的存储单元 A16 = Rs /把Rs数据存储到A16指出的存储单元 Rd = A6 /把A6指定的存储单元数据读到Rd寄存器 Rd = A16 /把A16指定的存储单元数据读到Rd寄存器,四、变址寻址: 【影响标志】 N,Z 【格式】 BP + IM6 = Rs /把Rs的值存储到基址指针BP与6位的立即/数之和指出的存储单 元。 Rd = BP +IM6 /把基址指针BP与6位的立即数的和指定的存储单元数据读到Rd寄

48、存器。,90,五、寄存器间接寻址: 【影响标志】 N,Z 【格式】 Rd = Rs /把Rs的数据存储到Rd的值所指的存储单元Rd 中存放的是 操作数的地址。,例3.1:将R3的值保存于0x25单元 R3 = 0x5678 /把16位立即数0x5678赋给R3 方法1: 0x25 = R3 /将R3的值存储于0x25存储单元,直接地址寻址 方法2: /0x25单元的内容为0x5678 R2 = 0x25 /立即数0x25送入R2中 R2 = R3 /将R3的值存储于0x25存储单元,寄存器间接寻址 方法3: /0x25单元的内容为0x5678 BP = 0x20 /立即数0x20送入BP中; BP + 5 = R3 /将R3的值存储于0x25存储单元,变址寻址0x2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1