1、第4章 SPCE061A单片机硬件结构1 1第第 4 4 章章 SPCE061ASPCE061A单片机硬件结构单片机硬件结构4.1 SPCE061A输入/输出接口4.2 系统时钟4.3 定时器/计数器4.4 A/D转换器4.5 D/A转换器4.6 通用异步串行通信口UART4.7 工作方式本章小结第4章 SPCE061A单片机硬件结构2 24.1 SPCE061A输入/输出接口4.1.1 I/O接口结构及工作原理SPCE061A单片机共有2组通用I/O端口:IOA和IOB,每组16位。I/O端口除了用做外设的输入、输出,还是片内定时器、UART、ADC等模块的输入/输出接口。SPCE061A单
2、片机的I/O结构如图4.1所示。图中读引脚和读Buffer端连接的小三角形为输入缓存,用来整形外部的模拟信号为数字信号0或,然后读入I/O寄存器。图中的大三角形则为输出缓存,是三态门,用来放大输出信号。第4章 SPCE061A单片机硬件结构3 3图4.1 I/O结构图第4章 SPCE061A单片机硬件结构4 4图4.2 上拉电阻、下拉电阻示意图第4章 SPCE061A单片机硬件结构5 5图4.3 上拉、下拉输入方式结构图第4章 SPCE061A单片机硬件结构6 6图4.4 悬浮输入结构图第4章 SPCE061A单片机硬件结构7 7图4.5 带缓冲的同相输出端口结构图第4章 SPCE061A单片
3、机硬件结构8 84.1.2 I/O接口控制寄存器SPCE061A单片机的I/O端口主要有4个控制寄存器:方向寄存器、属性寄存器、缓冲寄存器和数据寄存器。表4.1为I/O端口的寄存器功能说明表。第4章 SPCE061A单片机硬件结构9 9第4章 SPCE061A单片机硬件结构10 101P_IOA_Dir(0 x7002)IOA的方向寄存器。用于设定IOA各I/O位的输入或者输出。当某一位为“1”时,对应的I/O位被设为输出;当某一位为“0”时,对应的I/O位被设为输入。2P_IOA_Attrib(0 x7003)IOA的属性寄存器。它同P_IOA_Dir和P_IOA_Buffer相互配合可以将
4、I/O设为不同的输入输出属性,具体的设置可以参照表4.2。第4章 SPCE061A单片机硬件结构11 113P_IOA_Buffer(0 x7001)IOA的缓冲寄存器。用于配合P_IOA_Dir、P_IOA_Attrib寄存器完成端口配置,或者向端口发送数据。当某一位为“1”且对应的I/O位已被设置为同相输出时,该I/O位将会输出高电平,若对应的I/O位已被设置为反相输出,则该I/O位将会输出低电平,若对应的I/O位已被设置为非悬浮的输入,则该I/O位将会被设置为带上拉电阻输入;当某一位为“0”且对应的I/O位已被设置为同相输出时,该I/O位将会输出低电平,若对应的I/O位已被设置为反相输出
5、,则该I/O位将会输出高电平,若对应的I/O位已被设置为非悬浮的输入,则该I/O位将会被设置为带下拉电阻输入。第4章 SPCE061A单片机硬件结构12 124P_IOA_Data(0 x7000)IOA的数据寄存器。该寄存器通常用于读取端口的电平状态。寄存器写:该寄存器写作用同P_IOA_Buffer寄存器写。寄存器读:读取结果为对应I/O管脚的电平状态(管脚电平为高则读回值为“1”,管脚电平为低则读回值为“0”)。5P_IOB_Dir(0 x7007)IOB的方向寄存器。该寄存器的功能同P_IOA_Dir。第4章 SPCE061A单片机硬件结构13 136P_IOB_Attrib(0 x7
6、008)IOB的属性寄存器。该寄存器的功能同P_IOA_Attrib。7P_IOB_Buffer(0 x7006)IOB的缓冲寄存器。该寄存器的功能同P_IOA_Buffer。8P_IOB_Data(0 x7005)IOB的数据寄存器。该寄存器的功能同P_IOA_Buffer。第4章 SPCE061A单片机硬件结构14 144.1.3 I/O接口操作SPCE061A单片机I/O端口的每一位都可以通过编程独立地设置为上拉输入、下拉输入、悬浮输入、同相输出或反相输出中的任一种。具体的设置参考表4.2。第4章 SPCE061A单片机硬件结构15 15第4章 SPCE061A单片机硬件结构16 16【
7、例4.1】按以下要求设置端口A:IOA15:12下拉输入;IOA11:8悬浮输入;IOA7:4同相输出,且输出高电平;IOA3:0反相输出,且输出低电平。第4章 SPCE061A单片机硬件结构17 17【例4.2】采用SPCE061A实现以下功能:IOA7:0外接8个按键,IOB7:0外接8个LED,当IOA口有键按下时在IOB对应位的LED显示,如图4.6所示。第4章 SPCE061A单片机硬件结构18 18图4.6 硬件原理图第4章 SPCE061A单片机硬件结构19 19第4章 SPCE061A单片机硬件结构2020【例4.3】IOA0外接LED,每隔一定时间翻转IOA0的输出状态,使该
8、LED秒闪烁。硬件电路原理图如图4.7所示。第4章 SPCE061A单片机硬件结构21 21图4.7 硬件电路原理图第4章 SPCE061A单片机硬件结构2222第4章 SPCE061A单片机硬件结构2323第4章 SPCE061A单片机硬件结构24241IOA的复用功能IOA端口主要具有的复用功能为按键唤醒和AD输入通道。具体复用情况如表4.3所示。第4章 SPCE061A单片机硬件结构2525第4章 SPCE061A单片机硬件结构26262IOB的复用功能IOB端口主要具有的复用功能为UART接口、SIO接口、Feedback接口和外部中断输入。具体复用情况如表4.4所示。第4章 SPCE
9、061A单片机硬件结构2727第4章 SPCE061A单片机硬件结构28284.1.4 I/O接口应用注意事项单片机的I/O接口的控制字很多,工作状态也很多。只有很好地理解这样设计I/O口的原因和I/O口芯片各个功能相互之间的影响,才能很好地使用I/O口。第4章 SPCE061A单片机硬件结构29294.2 系 统 时 钟4.2.1 时钟电路单片机是按时钟一拍一拍工作的,因此CPU一定要有时钟电路。单片机内部结构中包括选频放大器及振荡电路,当外接晶体从输入端输入振荡信号时,就形成振荡。时钟电路由输入端和输出端引到芯片外部。当外接晶体时,外部还要接两个电容到地。当输出端产生与晶体一样频率的正弦波
10、形,其峰峰值为1V左右时,说明电路已经起振了。第4章 SPCE061A单片机硬件结构30304.2.2 锁相环振荡器PLL电路的作用是将系统提供的实时时钟的基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.48MHz。系统默认的PLL自激振荡频率为24.576MHz。PLL电路框图如图4.8所示。第4章 SPCE061A单片机硬件结构31 31图4.8 PLL电路框图第4章 SPCE061A单片机硬件结构32324.2.3 系统时钟SPCE061A时钟电路采用晶体振荡器。图4.9为SPCE061A时钟电路的接线图。外接晶振
11、采用32768Hz。PLL电路的作用是将系统提供的实时时钟的基频(32768Hz)进行倍频,输出系统时钟Fosc。SPCE061A片内集成了PLL电路,只需在外围接上简单的电路就可以使片内PLL电路正常工作了,如图4.10所示。第4章 SPCE061A单片机硬件结构3333图4.9 SPCE061A时钟电路的接线图 第4章 SPCE061A单片机硬件结构3434 图4.10 PLL电路 第4章 SPCE061A单片机硬件结构3535第4章 SPCE061A单片机硬件结构3636第4章 SPCE061A单片机硬件结构3737第4章 SPCE061A单片机硬件结构38384.2.4 时间基准信号S
12、PCE061A内嵌时间基准信号发生器,简称时基。该模块通过一个计数器对32768Hz时钟信号进行分频,一共产生12个可操作时基信号:4kHz、2kHz、1kHz、512Hz、256Hz、128Hz、64Hz、32Hz、16Hz、8Hz、4Hz、2Hz。该部分的结构如图4.11所示。第4章 SPCE061A单片机硬件结构3939图4.11 时基模块结构图第4章 SPCE061A单片机硬件结构4040图4.12 2Hz时基工作时序图第4章 SPCE061A单片机硬件结构41 411控制寄存器1)P_Timebase_Setup(0 x700E)P_Timebase_Setup为TMB1和TMB2时
13、基输出选择位。81024Hz区间的时基信号(1024Hz例外)没有像其他的时基信号一样独立对应中断,这8个时基信号只能通过多路开关选择性输出。其中8Hz、16Hz、32Hz、64Hz被分配在TMB1,可以通过TMB1SEL选择四者之一;128Hz、256Hz、512Hz、1024Hz被分配在TMB2,可以通过TMB2SEL选择四者之一。表4.8表示P_Timebase_Setup单元。第4章 SPCE061A单片机硬件结构4242第4章 SPCE061A单片机硬件结构43432)P_Timebase_Clear(0 x700F)P_Timebase_Clear为时基清除控制寄存器。通过向该寄存
14、器写入任意数值,将时基计数器清零,以保证产生的第一个时基信号准确(正常输出周期的1/2)。表4.9为P_Timebase_Clear单元。第4章 SPCE061A单片机硬件结构4444第4章 SPCE061A单片机硬件结构45452操作时基的使用一般采取中断形式,因为时基本身是作为中断源出现并通过中断标志位反映出来的。时基的使用包括时基的初始化操作和时基的中断服务。1)时基的初始化时基的初始化包括时基的选择、时基中断的允许和时基同步。第4章 SPCE061A单片机硬件结构4646图4.13 时基初始化流程图第4章 SPCE061A单片机硬件结构47472)时基的中断服务时基的中断服务包括中断现
15、场保护、中断源识别、中断处理、清中断标志、恢复现场和中断服务函数的返回。【例4.4】IOA0外接LED,利用2Hz时基中断使该LED秒闪烁。硬件电路原理图如图4.14所示。第4章 SPCE061A单片机硬件结构4848图4.14 硬件电路原理图第4章 SPCE061A单片机硬件结构4949第4章 SPCE061A单片机硬件结构5050第4章 SPCE061A单片机硬件结构51 514.3 定时器/计数器4.3.1 定时器/计数器的结构SPCE061A内嵌两个16位定时器/计数器:TimerA和TimerB。第4章 SPCE061A单片机硬件结构5252图4.15 TimerA结构图第4章 SP
16、CE061A单片机硬件结构5353图4.16 TimerB结构图第4章 SPCE061A单片机硬件结构54544.3.2 定时器/计数器的工作方式1控制寄存器1)P_TimerA_Ctrl(0 x700B)TimerA控制寄存器P_TimerA_Ctrl用于TimerA的计数时钟源选择以及PWM输出控制。表4.10为P_TimerA_Ctrl单元。第4章 SPCE061A单片机硬件结构5555第4章 SPCE061A单片机硬件结构5656第4章 SPCE061A单片机硬件结构57572)P_TimerA_Data(0 x700A)P_TimerA_Data为TimerA的数据寄存器。写该寄存器
17、用于对TimerA赋计数初值,读该寄存器的结果为当前的计数值。3)P_TimerB_Ctrl(0 x700D)P_TimerB_Ctrl为TimerB控制寄存器。该寄存器用于TimerB的计数时钟源选择,以及TimerB的PWM输出控制。表4.11为P_TimerB_Ctrl单元。第4章 SPCE061A单片机硬件结构5858第4章 SPCE061A单片机硬件结构59594)P_TimerB_Data(0 x700C)P_TimerB_Data为TimerB的数据寄存器。写该寄存器用于对TimerB赋计数初值,读该寄存器的结果为TimerB内部计数器当前的计数值。第4章 SPCE061A单片机
18、硬件结构60602操作TimerA/B用作定时操作,首先根据定时范围和定时公式确定时钟源和计数初值。然后将计数初值送入P_TimerA/B_Data寄存器,并通过P_TimerA/B_Ctrl寄存器选择对应的时钟源。第4章 SPCE061A单片机硬件结构61 61图4.17 TimerA/B定时/计数初始化流程第4章 SPCE061A单片机硬件结构6262【例4.5】利用TimerA实现0.5s延时,并控制IOA0外接的LED,使该LED秒闪烁。其硬件电路原理图如图4.18所示。第4章 SPCE061A单片机硬件结构6363图4.18 电路原理图第4章 SPCE061A单片机硬件结构6464要
19、实现0.5s延时可以通过多种时钟源实现,这里采用4096Hz时钟源,由定时公式可得计数初值为800 xF04096/15.010000 x010 xFFFF0tTn第4章 SPCE061A单片机硬件结构6565第4章 SPCE061A单片机硬件结构6666第4章 SPCE061A单片机硬件结构6767【例4.6】利用TimerB进行外部计数,计数脉冲通过IOB2引入,通过LED以二进制显示当前计数结果,当计数满100后开始新一轮的计数。电路原理如图4.19所示。第4章 SPCE061A单片机硬件结构6868图4.19 电路原理图第4章 SPCE061A单片机硬件结构6969第4章 SPCE06
20、1A单片机硬件结构7070第4章 SPCE061A单片机硬件结构71 71 4.4 A/D转换器4.4.1 A/D转换器的分类1并行A/D转换器本节所介绍的五种A/D转换器中,速度最快的是并行转换器。这种A/D转换器的转换速度极快,采样速度达几十兆赫兹甚至1吉赫兹都没有什么困难。这种极高速度转换受到数量巨大的比较器所产生的功耗以及参考电压精度的限制,因此并行A/D一般精度只有8位。第4章 SPCE061A单片机硬件结构72722逐次逼近A/D转换器 这种转换技术基于逐次逼近寄存器(SAR),或称为权衡转换。采用一个比较器对输入电压和一个N位数模转换器(D/A转换器)的输出结果进行比较(权衡)。
21、将DAC输出做为参考电压,经过N次比较就可以得到最终转换结果。第4章 SPCE061A单片机硬件结构73733积分型A/D转换器 积分型ADC又称双斜率或多斜率数据转换器,是应用最为广泛的转换器。经典的双斜率转换器包括两个主要部分:一部分用于电路采样并量化输入电压,产生一个时域脉冲序列;另一部分实现由一个计数器将量化的输入电压转换为数字量输出。第4章 SPCE061A单片机硬件结构74744S-D A/D转换器 S-D A/D转换器具有相对简单的结构,它又称为过采样转换器。这种转换器由S-D调制器及其后的数字滤波器构成。调制器的结构类似于双斜率A/D转换器,包括一个积分器和一个比较器,以及1位
22、的DAC的反馈环。第4章 SPCE061A单片机硬件结构75755“流水线”A/D转换器 由于“流水线”在尺寸、速度、分辨率、功能和设计难度等性能方面提供很好的平衡,因此已经引起大多模数转换器设计者和使用者的关注。“流水线”A/D转换器又称为子区式模数转换器,由级联的若干线性电路组成,每一级包括一个采样/保持(T/H)放大器、一个低分辨率A/D转换器和DAC,以及一个求和电路,还包括提供增益的级间放大器。第4章 SPCE061A单片机硬件结构76764.4.2 A/D转换器的技术指标1分辨率分辨率取决于输出二进制的位数。如果转换器有8位输出,则它的分辨率为1/256(1/28)。2精度由于转换
23、器内部电路的误差等原因,它的实际输出与期望输出之间有一定的误差,这就是A/D转换器的精度,通常用偏差值与满量程输出电压的百分比来表示。第4章 SPCE061A单片机硬件结构77773线性度线性度即偏离理想转换的最大偏差与满量程之间的百分比。一般要求线性误差不大于1/2 LSB。4转换时间转换时间是转换器对输入电压信号进行A/D转换并输出合法二进制编码所用的时间。第4章 SPCE061A单片机硬件结构78784.4.3 A/D转换器的选择A/D转换器的选择是至关重要的,所选择的A/D转换器应能确保模拟信号在数字位流中被准确地表示,并提供一个具有任何必需的数字信号处理功能的平滑接口,这一点很重要。
24、第4章 SPCE061A单片机硬件结构79794.4.4 SPCE061A的A/D转换器结构SPCE061A提供了一个10 bit逐次逼近型模/数转换(ADC)模块,它具有一个专用的MIC输入通道以及7个普通LineIn通道。MIC输入通道具有自动增益控制(AGC)功能,可设置为手动转换、Timer触发转换等工作模式。第4章 SPCE061A单片机硬件结构8080图4.20 A/D转换模块结构框图第4章 SPCE061A单片机硬件结构81 814.4.5 SPCE061A的A/D转换器设置1控制寄存器1)P_ADC_Ctrl(0 x7015)P_ADC_Ctrl单元(如表4.12所示)为ADC
25、的控制口,ADC的最大输入电压由P_ADC_Ctrl(写)的第7和第8位的值决定。第7位VEXTREF决定了ADC的参考电压为AVDD或是外部参考电压。第4章 SPCE061A单片机硬件结构8282第4章 SPCE061A单片机硬件结构8383第4章 SPCE061A单片机硬件结构84842)P_ADC_MUX_Ctrl(0 x702B)ADC多通道控制是通过控制P_ADC_MUX_Ctrl(702BH)单元(如表4.13所示)来实现的。第4章 SPCE061A单片机硬件结构8585第4章 SPCE061A单片机硬件结构8686第4章 SPCE061A单片机硬件结构87873)P_ADC(0
26、x7014)P_ADC单元(如表4.14所示)储存MIC输入的A/D转换数据。逐次逼近式的ADC由一个10位DAC、一个10位寄存器DAR、一个逐次逼近寄存器SAR和一个比较器COMP组成。第4章 SPCE061A单片机硬件结构8888第4章 SPCE061A单片机硬件结构89894)P_ADC_MUX_Data(0 x702C)P_ADC_MUX_Data(表4.15所示)单元用于读出LINE_IN7:1位ADC转换的数字数据。第4章 SPCE061A单片机硬件结构9090第4章 SPCE061A单片机硬件结构91 915)P_DAC_Ctrl(0 x702A)DAC音频输出方式的控制单元(
27、如表4.16所示),其中第58位用于选择DAC的数据锁存方式;第3、4位用来控制A/D转换方式;第1位为“0”,用于双DAC音频输出。b9b15为保留位。第4章 SPCE061A单片机硬件结构9292第4章 SPCE061A单片机硬件结构93932操作1)MIC通道转换对于MIC通道的A/D转换,可以选择“手动触发转换”和“定时器溢出触发转换”两种方式。手动触发转换的方法是对P_ADC_Mic_Data(0 x7014)控制寄存器进行一次“读”操作。在默认状态下,MIC通道的转换触发方式是手动触发。关于“定时器溢出触发转换”见4.3节。第4章 SPCE061A单片机硬件结构9494【例4.7】
28、ADC模块选择内部参考电压,不开启AGC,连续从MIC通道采集20个A/D转换值,保存在以R_Data为首地址的SRAM中。第4章 SPCE061A单片机硬件结构9595第4章 SPCE061A单片机硬件结构96962)MIC通道定时转换MIC通道的A/D转换除可以手动触发外,还可设置为定时器溢出触发。利用定时器溢出触发MIC转换可以使语音的采样频率更加精确。欲使用该触发方式,需要对P_DAC_Ctrl(0 x702A)的ADC_LATCH(bit4:3)进行设置,以选择触发转换的条件。第4章 SPCE061A单片机硬件结构9797【例4.8】ADC模块采用内部参考电压,开启AGC,利用Tim
29、erA(设定溢出频率为8192Hz)溢出触发MIC通道的A/D转换,并把A/D转换结果通过DAC1输出。第4章 SPCE061A单片机硬件结构9898第4章 SPCE061A单片机硬件结构9999第4章 SPCE061A单片机硬件结构1001003)Line In通道A/D转换对于LineIn通道,仅有手动转换模式,触发A/D转换的方法是对P_ADC_MUX_Data(0 x702C)执行一次读操作。【例4.9】ADC模块采用内部参考电压,连续获取20次LineIn3(IOA3)和LineIn5(IOA5)通道的A/D转换值,分别保存至以R_Data3和R_Data5为首地址的SRAM中。第4
30、章 SPCE061A单片机硬件结构101101第4章 SPCE061A单片机硬件结构102102第4章 SPCE061A单片机硬件结构103103第4章 SPCE061A单片机硬件结构104104第4章 SPCE061A单片机硬件结构1051054.5 D/A转换器4.5.1 D/A转换器概述微型计算机在过程实时控制、在线动态测量、对物理过程进行监控以及图像和语音处理领域的应用中,都要与一些连续变化的模拟量(如温度、压力、流量、位移、速度、光亮度、声音等)打交道,但数字计算机本身只能识别和处理数字量,因此,必须经过转换器,把模拟量转换成数字量,或将数字量转换为模拟量,才能实现CPU与被控对象之
31、间的信息交换。第4章 SPCE061A单片机硬件结构1061064.5.2 D/A转换器主要技术指标D/A转换器的性能指标很多,主要有以下几个。(1)分辨率:(2)转换精度:(3)偏移量误差:(4)线性度:(5)输入编码形式:(6)输出电压:(7)转换时间:第4章 SPCE061A单片机硬件结构1071074.5.3 SPCE061A的D/A转换器结构SPCE061A内置两路独立的10 bit电流输出型数/模转换器(DAC),D/A转换的触发方式可设置为手动触发转换或Timer溢出自动触发转换。图4.21是D/A转换器模块的结构框图。第4章 SPCE061A单片机硬件结构108108图4.21
32、 D/A转换器模块结构框图第4章 SPCE061A单片机硬件结构1091094.5.4 SPCE061A的D/A转换器设置1控制寄存器1)P_DAC_Ctrl(0 x702A)DAC音频输出方式的控制单元(如表4.17所示),其中第58位用于选择DAC的数据锁存方式;第3、4位用来控制A/D转换方式;第1位为“0”,用于双DAC音频输出。b9b15为保留位。第4章 SPCE061A单片机硬件结构110110第4章 SPCE061A单片机硬件结构111111第4章 SPCE061A单片机硬件结构1121122)P_DAC1(0 x7017)DAC1(表4.18所示)是个10位的D/A转换单元。在
33、DAC方式下,该单元带有10位的缓冲寄存器DAR1。第4章 SPCE061A单片机硬件结构113113第4章 SPCE061A单片机硬件结构1141143)P_DAC2(0 x7016)DAC2(表4.19所示)是个10位的D/A转换单元。在DAC方式下,该单元带有10位的缓冲寄存器DAR2。第4章 SPCE061A单片机硬件结构115115第4章 SPCE061A单片机硬件结构1161162操作1)手动转换SPCE061A的D/A转换器模块支持手动转换模式和自动转换模式。手动转换即向P_DAC1(0 x7017)或P_DAC2(0 x7016)写入数据时触发相应的D/A转换,把写入的数据转换
34、为模拟量。DAC1的转换模式由P_DAC_Ctrl(0 x702A)的bit8:7确定;DAC2的转换模式由P_DAC_Ctrl(0 x702A)的bit6:5确定。第4章 SPCE061A单片机硬件结构1171172)自动转换DAC1和DAC2可设置为Timer溢出触发的自动转换模式,在该模式下,向P_DAC1(0 x7017)或P_DAC2(0 x7016)写入的数据不会立即被转换为模拟量,而是保存在对应的缓冲器中,直到选定的Timer发生溢出时才触发一次D/A转换,把缓冲器中的数据转换为模拟量。第4章 SPCE061A单片机硬件结构118118【例4.10】DAC2采用手动转换方式,通过
35、编程实现一个锯齿波。参考代码:第4章 SPCE061A单片机硬件结构119119第4章 SPCE061A单片机硬件结构120120 4.6 通用异步串行通信口UART4.6.1 通用异步串行通信方式异步传送是通过一个通用异步收发器UART实现的。在异步传送方式中,字符的发送是随机进行的。因此,对接收方来说就要判断是否有字符发送来,何时是一个新字符的开始。因此,异步通信时对传送字符必须规定一定的格式。第4章 SPCE061A单片机硬件结构1211214.6.2 SPCE061A的UART接口SPCE061A内置一个通用异步串行(UART)模块,可以用来进行异步串行输入/输出通信。该模块具有以下特
36、点:(1)可实现全双工的输入/输出通信;(2)输入/输出端口与IOB7、IOB10复用;(3)波特率可设定;(4)内置奇偶校验功能;(5)数据收发可选择查询方式或中断方式。第4章 SPCE061A单片机硬件结构122122图4.22 UART帧数据格式第4章 SPCE061A单片机硬件结构1231231控制寄存器1)P_UART_Command1(0 x7021)P_UART_Command1单元为UART控制口(如表4.20所示)。该单元的第2、3位用来控制数据的奇偶校验功能。第6、7位用来控制UART IRQ中断,中断可由TxRDY(发送完毕)或是RxRDY(接收完毕)信号来触发。第4章
37、SPCE061A单片机硬件结构124124第4章 SPCE061A单片机硬件结构125125第4章 SPCE061A单片机硬件结构1261262)P_UART_Command2(0 x7022)P_UART_Command2单元(表4.21所示)在写入模式时,为UART数据发送/接收控制口,第6、7位分别控制发送Tx和接收Rx引脚是否启用。P_UART_Command2(写)(7022H)单元的默认值为00H。第4章 SPCE061A单片机硬件结构127127表 4.21 P_UART_Command2 单元 高 8 位 b15 b14 b13 b12 b11 b10 b9 b8 读/写 默认
38、值 名称 低 8 位 b7 b6 b5 b4 b3 b2 b1 b0 读/写 R/W R/W R R R 默认值 0 0 0 0 0 名称 RxEN/RxRdy TxEN/TxRdy FE OE PE RxEN/RxRdy b7 读写意义不同 向该位写入 1 将开启 UART 接收功能;而从该位读到 1时,表明已接收到一帧数据,已准备好接收下一帧数据。写0:不使能 UART 接收,IOB7 作为普通 I/O 口。写1:使能 UART 接收。读0:未接收到数据。读1:已接收到一帧数据。可通过读取 P_UART_Data(0 x7023)控制寄存器来对该标志清零 TxEN/TxRdy b6 读写意
39、义不同 向该位写入 1 将开启 UART 接收功能;而从该位读到 1时,表示当前 UART 发送缓冲区为空,可以进行数据发送操作。写0:不使能 UART 发送,IOB10 作为普通 I/O 口。写1:使能 UART 发送。读0:数据发送未准备好。读1:数据发送已准备好。当 UART 正在发送数据时,该标志位将清零 FE b5 只读 当该位为 1 时,表明接收到的数据存在帧错误(Frame Error)。关于帧错误的详细内容参见 4.3 节。读0:未检测到帧错误。读1:检测到帧错误 第4章 SPCE061A单片机硬件结构128128第4章 SPCE061A单片机硬件结构1291293)P_UAR
40、T_BaudScalarLow(0 x7024)P_UART_BaudScalarHigh(7025H)和P_UART_BaudScalarLow(7024H)单元(表4.22所示)组合,可用来控制数据传输速率。第4章 SPCE061A单片机硬件结构130130第4章 SPCE061A单片机硬件结构1311314)P_UART_BaudScalarHigh(0 x7025)P_UART_BaudScalarHigh(7025H)和P_UART_BaudScalarLow(7024H)单元(表4.23所示)组合,可用来控制数据传输速率。第4章 SPCE061A单片机硬件结构132132表 4.2
41、3 P_UART_BaudScalarHigh 单元 高 8 位 b15 b14 b13 b12 b11 b10 b9 b8 读/写 默认值 名称 低 8 位 b7 b6 b5 b4 b3 b2 b1 b0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 默认值 0 0 0 0 0 0 0 0 名称 HighByte HighByte b7:0 波特率分频器的高 8 位,它与 P_UART_BaudScalarLow(0 x7024)的bit7:0共同组成波特率分频器,用来设定 UART 的传输波特率。关于波特率的设定方法参见 4.6.2 节 第4章 SPCE061A单
42、片机硬件结构1331335)P_UART_Data(0 x7023)P_UART_Data(7023H)(读/写)单元(表4.24所示)可以用于接收和发送数据的缓存,向该单元写入数据,可以将发送的数据送入缓存器,也可以从该单元读数据。第4章 SPCE061A单片机硬件结构134134第4章 SPCE061A单片机硬件结构1351352操作1)波特率设置波特率(BaudRate)是每秒钟传送的数据位数量,单位为“位每秒(b/s)”。SPCE061A的UART可以根据需要对波特率进行设置,这是利用控制寄存P_UART_BaudScalarLow(0 x7024)和P_UART_BaudScalar
43、High(0 x7025)实现的。上述两个控制寄存器分别存储波特率分频器(BaudScalar)的低8位和高8位。BaudScalar与波特率之间的关系是:第4章 SPCE061A单片机硬件结构136136当系统时钟FSYS频率为20.480MHz或24.576MHz时,即 当FSYS为32.768MHz、40.960MHz或49.152MHz时,即第4章 SPCE061A单片机硬件结构137137例如,当FSYS=24.576MHz时,欲将波特率设置为38400b/s,则:第4章 SPCE061A单片机硬件结构1381382)数据收发UART数据的接收和发送都可以通过查询方式或中断方式实现。
44、UART数据接收程序的一般流程如图4.23和图4.24所示。第4章 SPCE061A单片机硬件结构139139图4.23 UART数据接收的一般流程(查询方式)第4章 SPCE061A单片机硬件结构140140图4.24 UART数据接收的一般流程(中断方式)第4章 SPCE061A单片机硬件结构141141图4.25 UART数据发送的一般流程(查询方式)第4章 SPCE061A单片机硬件结构142142图4.26 UART数据发送的一般流程(中断方式)第4章 SPCE061A单片机硬件结构143143【例4.11】UART的波特率设置为9600b/s,无校验(FSYS=24.576MHz)
45、,通过查询方式接收数据,然后将接收到的数据发送出去。根据波特率计算公式,BaudScalar=FSYS/(2BaudRate)=1280,换算成十六进制即0 x0500,因此,应将P_UART_BaudScalarLow设置为0 x00,P_UART_BaudScalarHigh设置为0 x05。第4章 SPCE061A单片机硬件结构144144第4章 SPCE061A单片机硬件结构145145第4章 SPCE061A单片机硬件结构1461463)数据校验SPCE061A的UART模块可以对接收到的数据自动进行校验,能够检测出帧错误(FE)、溢出错误(OE)和奇偶校验错误(PE),并将校验结果
46、通过P_UART_Command2(0 x7022)的bit5:3表现出来。第4章 SPCE061A单片机硬件结构1471473中断源与UART模块相关的中断源有UART接收(Rx)中断源和UART发送(Tx)中断源。这两个中断源都对应IRQ7中断向量。使能Rx中断的方法是将P_UART_Command1(0 x7021)的bit7设置为1;使能Tx中断的方法是将P_UART_Command1(0 x7021)的bit6设置为1。第4章 SPCE061A单片机硬件结构1481484注意事项(1)UART的发送(Tx)中断实际上是“发送准备好”中断,在通常状况下,只要开启了Tx中断就会立即产生中
47、断请求。因此,利用中断方式发送数据时,应等到需要发送数据的时候再开启Tx中断。(2)UART的波特率是由FSYS分频得到的,因此,实际得到的波特率与期望值之间往往存在一定的误差。第4章 SPCE061A单片机硬件结构1491494.7 工 作 方 式4.7.1 单片机低功耗技术近年来单片机低功耗技术有了很大的进展。从半导体制造工艺上讲,芯片功耗依次由大到小为TTL、NMOS、HCMOS、CMOS电路。若从最高工作频率来讲,CMOS最低,其次是NMOS、TTL、HCMOS电路。目前单片机普遍采用HCMOS工艺制造CPU,芯片速度快,且功耗相对较低。第4章 SPCE061A单片机硬件结构15015
48、04.7.2 睡眠与唤醒系统工作中运行和睡眠状态的转换图如图4.27所示。第4章 SPCE061A单片机硬件结构151151图4.27 系统工作中运行和睡眠状态转换图第4章 SPCE061A单片机硬件结构1521521睡眠IC在上电复位后开始工作,直到收到睡眠信号才关闭系统时钟(PLL振荡器)而进入睡眠状态。可以通过对P_SytemClock(写)(7013H)单元写入CPUCLK STOP控制字(CPU睡眠信号b2 b1 b0=111B)而使系统从运行状态转入睡眠状态。系统进入睡眠状态以后,程序计数器(PC)会停在程序的下一条指令上,当有任一唤醒事件发生后开始由此继续执行程序。第4章 SPC
49、E061A单片机硬件结构1531532唤醒系统收到唤醒信号后接通PLL振荡器,同时CPU会响应唤醒事件的处理并进行初始化。IRQ3_KEY为触键唤醒源(IOA7IOA0),其他中断信号(FIQ、IRQ1IRQ6及UART IRQ)都可以作为唤醒源。唤醒操作完成后,程序将会进入睡眠后指令技术的断点处开始继续执行。关于触键唤醒源,请参考I/O端口结构。第4章 SPCE061A单片机硬件结构154154【例4.12】编程实现系统从工作状态进入睡眠状态,然后由触键引起唤醒。在进入睡眠状态之前,首先要将IOA70设置为输入状态且允许RQ3_KEY中断来实现触键唤醒。参考代码:第4章 SPCE061A单片
50、机硬件结构155155第4章 SPCE061A单片机硬件结构156156第4章 SPCE061A单片机硬件结构1571574.7.3 低电压监测(LVD)/低电压复位(LVR)SPCE061A可通过屏蔽选项来设置低电压监测(LVD)和低电压复位(LVR)功能,其主要是通过对系统的电源电压进行监控的,使系统运行在一个正常可靠的工作环境中,并保证电源在出现异常时能够立即采取有效的措施,使系统及时恢复正常工作。第4章 SPCE061A单片机硬件结构158158图4.28 低电压监测(LVD)/低电压复位(LVR)第4章 SPCE061A单片机硬件结构1591594.7.4 复位通过某种方式使单片机内