1、DSP原理与应用第一章 概述第二章 DSP运算基础第三章 DSP的CPU结构及存储器配置第四章 寻址方式及指令系统第五章 系统功能模块及片内外设第六章 DSP设计开发平台第七章 FFT的Matlab仿真第一章 概述1、DSP数字信号处理系统 低通滤波:将连续信号x(t)中的一些次要成分滤出。平滑滤波:滤出多余的高频分量,对时间域模拟信号起平滑作用。低通滤波ADCDSP平滑滤波DACx(t)y(t)2、DSP的发展和分类发展:1978年,AMI第一片DSP器件 1979年,Intel的Intel 2920是第一块脱离了通用型微处理器结构的DSP芯片。1980年,NEC的 PD7720是第一个具有
2、硬件乘法器的商用DSP芯片。1982年,Hitachi推出浮点DSP。1982年,TI推出第一代DSP芯片TMS32010及其系列产品。1986年,Motorola推出MC56001定点DSP芯片;1990年推出与IEEE浮点格式兼容的浮点DSP芯片。分类 按DSP芯片处理的数据格式:定点、浮点 按DSP芯片的用途:通用型:TI公司的系列DSP 专用型:数字滤波、FFT等主要生产厂家 TI:43.5%Agere(Lucent):16.1%Motorola:12.0%ADI:8.2%3、DSP的性能及特点哈佛结构、普通微处理器的冯诺伊曼结构:内部地址总线内部数据总线共享的程序和数据存储器CPU控
3、制ALU、DSP的哈佛结构:地址发生单元数据地址总线程序地址总线程序存储器数据存储器DSP控制ALU数据总线程序总线指令流水线、非流水线操作时钟周期123456789取指令NN+1N+2译码 NN+1N+2执行NN+1N+2指令周期1指令周期2指令周期3、流水线操作:时钟周期123456789取指令NN+1 N+2 N+3 N+4 N+5 译码NN+1 N+2 N+3 N+4 N+5 执行NN+1 N+2 N+3 N+4 N+5 指令周期1指令周期4开始指令周期2开始指令周期5开始指令周期3开始指令周期6开始硬件乘法器 在数字信号处理的算法中(如FFT),需要做大量的乘法和加法。显然,乘法速度
4、越快,数据处理能力就越强。而在一般的微处理器中,根本就没有乘法指令,即使有乘法指令的处理器,其乘法指令的执行时间也较长。DSP器件一般都有一个硬件乘法器,而且一次乘累加最少可在一个时钟周期内完成。特殊DSP指令 DSP芯片采用了特殊的寻址方式和指令。例如TMS320系列的位反转寻址方式及其他一些特殊的指令。采用这些适合于数字信号处理的寻址方式和指令,能进一步减小数字信号处理的时间。4、DSP的应用 数字信号处理数字信号处理,如滤波、FFT、卷积等;通信通信,如调制解调、纠错编码、传真、可视电话等;语音处理语音处理,如语音编码、语音合成、识别、语音存储等;图形图形/图像处理图像处理,如模式识别、
5、图像压缩与传输、动画、机器人视觉等;仪器仪表仪器仪表,如数据采集、函数/波形产生等;军事军事,如保密通信、全球定位、雷达与声纳信号处理、导航与制导等;医疗医疗,如核磁共振、自动治疗仪等。第二章 DSP运算基础1、数的定标TMS320C/F240的字长为16。数的定标:是设定小数点在不同位置,来表示不同大小和不同精度的小数。Q表示法:将16位二进制数由最低有效位(LSB)到最高有效位(MSB)的位置依次排列为015,则Qi表示小数点在数据第i位之后。例如:Q0:表示小数点在数据第0位之后,即为一个整数。Q15:表示小数点在数据第15位之后。Q表示法及其十进制数值范围:Q表示法十进制数值范围Q15
6、-1x 0.9999695Q14-2 x 1.9999390Q13-4 x 3.9998779Q12-8 x 7.9997559Q7-256 x 255.9921875Q3-4096 x 4095.875Q2-8192 x 8191.75Q1-16384 x 16383.5Q0-32768 x 32767例如:对Q15而言,其能表示的最小负值为:1000 0000 0000 0000(补)1111 1111 1111 1111(反)1,0000 0000 0000 0000(原)=-1其能表示的最大正值为:0111 1111 1111 1111 =2-1+2-2+2-3+2-4+2-5+2-6
7、+2-7+2-8+2-9+2-10+2-11+2-12+2-13+2-14+2-15 =1-2-15 =0.9999 6948 2421 875对Q0同样如此.2、IEEE 754浮点数表示法例如:1 0 1 0 0 1 0 0 120.6=24(20+2-1+2-2+2-3+2-4+2-5+2-6+2-7+2-23 )其指数=4+127=131 小数=01001001 S=02-16 小数 2-232-8 小数 2-15202-1 小数 2-7S27 指数 213、定点数与浮点数的转换关系转换公式:浮点数(x)转换为定点数(xd):xd=int x 2Q 定点数(xd)转换为浮点数(x):x
8、=float xd 2-Q 举例:浮点数x=0.4,定标Q=15,则对应的定点数为:xd=int x 2Q=int 0.4 215=13107反之,一个Q15表示的定点数13107对应的浮点数为:x=float xd 2-Q=float 13107 2-15=0.3999939Q数值的确定:设系统中变量表示的数据最大绝对值为|max|,而且|max|小于或等于32767,由下式:2n-1|max|2n 可得:Q=15-n举例:某变量取值范围为-7到15,则变量的|max|=15,n=4,则Q=15-4=11。4、定点数的算术运算加减法:注意:、必须保证两个操作数的定标值一样。、若两个数据的Q值
9、不同,在保证数据准确性的前提下调整Q值使数据精度最高,即尽量将Q值小的数调整为与另一个数的Q值一样大。、注意对溢出的判断和处理。举例:x=0.4,y=0.2,计算x+y 根据分析,采用Q15表示两个数据可以得到最高精度的运算,x、y的Q15定点表示分别为:xd =13107,yd=6553。xd +yd =13107+6553=19660结果转化为浮点数为:19960 2-15=0.5999756 0.6 定点数的乘法 分三种情况:、小数乘小数(数用Q15表示)Q15Q15=Q30,32位的乘积结果有两个符号位,利用移位操作得到乘积结果的Q31表示。举例:0.50.5=0.25操作数用Q15表
10、示为:0.5 215=16384=0100 0000 0000 0000B 0.100 0000 0000 0000 0.100 0000 0000 0000 =00.01 0000 0000 0000 0000 0000 0000 0000将结果左移一位得到乘积结果的Q31表示为:0.01 0000 0000 0000 0000 0000 0000 0000 0=20000000H表示的浮点数即为:0.25、整数乘整数(数用Q0表示)Q0Q0=Q0举例:135=65 操作数用Q0表示为:13=0000 0000 0000 1101B 5 =0000 0000 0000 0101B 0000
11、0000 0000 1101 0000 0000 0000 0101 =0000 0000 0000 0000 0000 0000 0100 0001 =00000041H表示的浮点数即为:65、混合表示法 在对精度和数据范围要求都比较高的情况下,两个数可以采用介于Q15与Q0之间的不同的Q表示法。举例:设参与运算的两个数x和y的数值范围分别不超过 1和 4,两个数的Q值分别为Q15和Q13,为了保证数据范围,应该采用Q13。例如:x=0.4 y=3.2,计算x+y 因为 xd =3276,yd =26214,则 xd +yd =3276+26214=29490 转换为浮点数为:29490 2
12、-13 3.59985 定点数的除法注意:DSP没有专门的除法指令,利用条件减法指令编写 子程序实现。、十进制的除法 在计算之前要保证分子不能大于分母的十倍,否则必须进行如下的处理:将分母乘上10(100或1000)后再按下面的计算过程进行除法运算,得到结果后再把该结果乘以10(100或1000)即可得到最终的正确结果。计算过程(子程序):i=0 STEP1:重复的用分子减去分母(若分子小于分母,则余数即为分子;否则,余数=分子-分母),直到结果为小于分母的数或0。得到执行的减法次数=Ni 及余数。STEP2:i=i+1,余数10作为分子,返回STEP1。STEP3:结果=N0 100+Ni
13、10-i,i=1,2,3,举例1:求40/3=?step1:310=30;step2:40-30=10 30,70-30=4030,4030=1030,70-30=4030,4030=1030,次数=3,余数=10;step6:根据要求的精度结束计算 step7:结果=1 100+3 10-1+310-2+3 10-3+=1.3333 step8:最终结果=1.333310=13.333 举例2:求3/40=?step1:3 40,次数=0,余数=3;step2:310=30,30 40;300-40=260,执行第1次减法;260-40=220,执行第2次减法;220-40=180,执行第3
14、次减法;180-40=140,执行第4次减法;140-40=100,执行第5次减法;100-40=60,执行第6次减法;60-40=20,执行第7次减法;次数=7,余数=20;step4:2010=200,200 40;200-40=160,执行第1次减法;160-40=120,执行第2次减法;120-40=80,执行第3次减法;80-40=40,执行第4次减法;40-40=0,执行第5次减法;次数=5,余数=0;step5:结果=0 100+0 10-1+710-2+5 10-3=0.075、二进制的除法注意:在计算之前要保证分子小于分母的2倍。计算过程同十进制的除法,下面仅举例。计算40/
15、3=?step1:分母左移3位(即乘以8),得分母=24;step2:00101000(=40)-00011000 (=24)=00010000 (=16)次数=1,余数=16 24;step3:00100000(=32)(余数16左移一位)-00011000 (=24)=00001000 (=8)次数=1,余数=8 24;step4:余数=16 (余数8左移一位)24 次数=0;step5:00100000(=32)(余数16左移一位)-00011000 (=24)=00001000 (=8)次数=1,余数=8 24;step6:余数=16 (余数8左移一位)24 次数=0;step7:00
16、100000(=32)(余数16左移一位)-00011000 (=24)=00001000 (=8)次数=1,余数=8 24;step8:余数=16 (余数8左移一位)24 次数=0;step9:00100000(=32)(余数16左移一位)-00011000 (=24)=00001000 (=8)次数=1,余数=8 Vi,位7=000100 00002.5V0Vi,位6=1640110 00003.75V0Vi,位5=164+32=960111 00004.375V0Vi,位4=164+32+16=1120111 10004.69V0Vi,位2=064+32+16+8=1200111 101
17、04.76V0Vi,位1=164+32+16+8+2=1220111 10114.80V0=Vi,位0=164+32+16+8+2+1=123模/数转换器的技术指标:转换精度:指对于一个给定的数字量,其实际的模拟电压值 与理论输入电压值之差。分辨率:指A/D转换器所能分辨的最小量化信号能力,通常用 A/D转换器的位数来表示。如对于12位A/D芯片,其 分辨率为12位。有时,分辨率也用最大容许模拟输 入值/2N来表示。例如,8位A/D芯片,其满量程为5V,则分辨率为5V/28=19.6mV。当模拟输入低于19.6mV 时,A/D转换器分辨不出来,均不转换。转换时间和转换率:转换时间是指转换启动到
18、结束所需的时间,转换率是转换时间的倒数。例如,转换时 间为 200ns,转换率为5MHz。C24DSP中ADC的特点:内部集成了两个10位的A/D转换器,并带有内部采样保持电路,共有16路模拟输入通道。ADC的转换结果保存到两级先进先出(FIFO)寄存器。ADC的预定标功能 作用:每个ADC在1个时钟周期内完成输入的采样,在5个时钟周期内完成模/数转换,所以每个采样/转换需要6个ADC时钟周期(大约需要6s)。对于不同的系统时钟频率,为了保证采样/转换时间大于等于6s,ADC提供了一个预定标功能,来保证无论DSP时钟如何变化都可以确保ADC保持最优性能。预定标值的确定:SYSCLK时钟周期TS
19、YSCLK*预定标值*6 6s 预定标值由ADC的控制寄存器ADCTRL2的其中三位决定,其对应关系见下表:例如:系统时钟周期TSYSCLK=1/10MHz,根据上式可以计算得预定标值应大于等于10。ADCTRL2的ADCPSCALE预定标值BIT1 BIT2 BIT30 0 040 0 160 1 080 1 1101 0 0121 0 1161 1 0201 1 132ADC模块中的寄存器、ADC控制寄存器1(ADCTRL1)地址7032H:其中:位15:仅用于仿真期间。=0:当位14=0时,立即停止;=1:仿真器停止之前,完成本次转换。位14:仅用于仿真期间。=0:操作由位15 确定;=
20、1:仿真器停止时,ADC继续运行。15141312111098SoftFreeADCIMSTARTADC2ENADC1ENADCCONRUNADCINTENADCINTFLAG76543210ADCEOCADC2CHSELADC1CHSELADCSOC位13:ADC立即开始转换。=0/1:无动作/立即启动转换。位12:ADC2的禁止/使能位,可以在转换过程中写入,不影 响本次转换,写入本位的信息在下一次转换时才生效。=0/1:ADC2禁止/ADC2被使能。位11:ADC1的禁止/使能位,同ADC2。位10:ADC连续转换设置位。=0/1:无操作/连续转换。位9:ADC中断允许位。若被置位,则当
21、ADCINTFLAG=1时,将产生一次中断。位8:ADC中断标志位。若该位为1,表示有中断发生。位7:转换结束标志。=0/1:转换结束/转换正在进行。位6位4:ADC2通道选择。=000111:依次选择通道8通道15。位3位1:ADC1通道选择。=000111:依次选择通道0通道7。位0:转换启动位。=0/1:无动作/启动转换。、ADC控制寄存器2(ADCTRL2)地址7034H:其中:位10:事件管理模块启动转换使能位,可以在任何时候写入,不影响本 次转换,写入本位的信息在下一次转换时才生效。=0/1:禁止/允许事件管理模块启动转换。位9:外部信号(即ADCSOC)启动转换使能位。=0/1:
22、禁止/允许ADCSOC启动转换。位7位6:表明ADC1数据寄存器FIFO的状态。=00:FIFO空 01:FIFO 有一个数据。10:FIFO 有两个数据。11:FIFO 有两个数据,而且之前的数据至少丢失一个。位4位3:表明ADC2数据寄存器FIFO的状态。同ADCFIFO1。位2位0:A/D转换输入时钟预定标因子,见前表。15111098RservedADCEVSOCADCEXTSOCRserved7654320ADCFIFO1RservedADCFIFO2ADCPSCALE、A/D转换数字输出寄存器:每个ADC包含一个2级FIFO数字输出寄存器。该寄存器包含一个模拟输入转换后的10位数字
23、结果,存放在寄存器的高10位,即10位A/D转换结果D9 D0,依次存放在FIFO的高10位D15 D6 中,读FIFO时,低6位D5 D0始终为0。ADCFIFO1地址为7036H。ADCFIFO2地址为7038H。ADC初始化编程举例:ADCTRL1 .set 07032h;ADC控制寄存器1的地址ADCTRL2 .set 07034h;ADC控制寄存器2的地址LDP#224;数据页=224(即0E0H)SPLK#1000100100000000B,ADCTRL1;设置ADCTRL1SPLK#0000000000000101B,ADCTRL2;设置ADCTRL19、串行通信接口(SCI)功
24、能:实现DSP与其他计算机或设备之间的异步串行通行,可 以实现半双工或全双工及多机之间的通信。特点:该模块是一个8位片内外设,通过DSP的16位外部数据 总线的低8位与外部设备通信,读高8位的值不确定,写高8位无效。SCI的内部控制寄存器也均为8位。SCI的主要结构模块:发送器:由三部分组成 一个发送数据引脚 SCITXD;一个发送缓冲寄存器(SCITXBUF)包含要发送的数据;一个发送移位寄存器(TXSHF)将SCITXBUF中的数据移位后经由 SCITXD串行输出。接收器:由三部分组成 一个接收数据输入引脚 SCIRXD;一个接收缓冲寄存器(SCIRXBUF)包含接收到的并行数据;一个接收
25、移位寄存器(RXSHF)不断接收SCIRXD引脚的数据,当 为有效数据时,将不数据进行串并转换装配为一个完整的数据,当SCI允许接收时,RXSHF自动将数据送入SCIRXBUF 中。波特率发生器 SCI内部有一个16位的波特率选择器,可以通过编写SCI的两个8位的波特率选择寄存器SCIHBAUD和SCILBAUD来改变。将16位的波特率选择器的十进制值记为BRR,则系统时钟频率、BRR及SCI波特率之间的关系如下表:典型波特率系统时钟频率fSYSCLK1MHZ5MHz10MHzBRRBAUDBRRBAUDBRRBAUD30041630020823004166300600207600104160
26、02082600240051240425924045202399480025480812948082594808960012961564961513095421920061785732189396419231SCI多处理器通信、作用:允许一个处理器在同一串行线上将数据块有效地传 送到其他多个处理器。处理器根据多处理器模式来 识别地址字节。、多处理器模式的种类:空闲线模式 +地址位模式、两种多处理器模式的特点:均使用发送唤醒TXWAKE标志、接收唤醒RXWAKE标志 和休眠SLEEP标志来控制SCI发送器和接收器的特征;空闲线模式,在两块数据之间必须加固定等待(10个或 更多空闲周期)来区分地址
27、和数据区。适合于大的数据 块发送和接收;地址位模式,在每个字节中加入一个额外位将地址和数 据区分开。这种模式在传送多个小数据块时更为有效,因为它在两块数据之间不用加等待。、空闲线模式的通信格式:数据帧格式:通信格式:StartLSB234567MSBParity Stop数据块1数据块2数据块3用来隔开数据块的10位或更多位的空闲周期AddressFirst DataLast Data用来隔开数据帧的小于10位的空闲周期、地址位模式的通信格式:数据帧格式:通信格式:Start LSB 2 3 4 5 6 7 MSB Addr/Data Parity Stop数据块1数据块2数据块3随意大小的空
28、闲周期Addr1Data0Addr1位Addr/Data=1/0、举例1多处理器的接收过程:用户先分配好每个处理器的地址;SLEEP标志位置1,并允许SCI接收器接收和允许接收中断;一旦接收到地址字节,请求中断,进入中断服务程序,检验 唤醒标志位RXWAKE。若该位为1,得到的字节为地址(否 则是一个数据,进行相应处理),并将该地址与本处理器地 址比较;若该地址是本DSP器件地址,那么CPU就清除休眠位SLEEP,准备接收剩余的数据;否则,退出中断服务程序并且SLEEP 依旧置位,CPU继续执行它的主程序而不被串行通信接口所 中断,直到下一个块的开始,重复上述过程。、举例2IEC 60870-
29、5-103规约格式:固定帧长的帧格式:说明:此格式主要用于继电保护设备向控制系统传输的确认帧,或控制系统向继电保护设备传输的询问帧。停止位偶校验位7 位0启动位11起动字符(10H)01P控制域(C)01P地址域(A)01P帧校验和(CS)011结束字符(16H)0可变帧长的帧格式:此格式主要用于继电保护设备向控制系统传输数据,或控制系统向继电保护设备传输数据。格式如下:停止位偶校验位7 位0启动位11起动字符(68H)01PL01PL011起动字符(68H)01P控制域(C)01P地址域(A)01P链路用户数据(可变长度)01P帧校验和(CS)011结束字符(16H)0对帧格式的几个规定:线
30、路空闲状态为二进制1;每个字符有一个启动二进制位0,八位信息位,一个偶 校验位,一个停止位;每个字符间无需线路空闲间隔;两帧之间的线路空闲间隔最少需33位;长度L包括控制域、地址域、用户数据区八位位组的个数 帧校验和是控制域、地址域、用户数据区八位位组的256 模和;接受校验的项:每个字符的启动位、停止位、偶校验位;两个启动字符、两个L值应该一致,接受的字符数为 L+6,帧校验和,结束字符;在校验中,若无差错则数据有效。SCI的主要寄存器、SCI通信控制寄存器(SCICCR)地址7050H:位7:停止位位数。=0/1 一个/两个停止位。位6:奇偶校验选择。=0/1 奇/偶校验。位5:奇偶校验使
31、能位。=0/1 禁止/允许奇偶校验。位4:SCI通信使能位。SCI通信时该位必须置1才能正确操作。位3:SCI多处理器通信模式控制位。=0:选择空闲线路模式协议;=1:选择地址位模式协议;位20:字符长度控制位。设定SCI的通信字符在18之间,如下所示:SCICHAR2SCICHAR0=000 111 1 876543210STOPBITSEVEN/ODD PARITYPARITY ENABLESCI ENAADDR/IDLE MODESCI CHAR2SCI CHAR1SCI CHAR0、SCI控制寄存器1(SCICTL1)地址7051H:位6:SCI接收错误使能位。=0:禁止接收到错误时中
32、断;=1:允许接收到错误时中断。位5:SCI软件复位(低有效)。将0写入该位来初始化SCI的状态和操作标志至复位条件。系统复位后应将1写入该位重新使能SCI。位4:SCI内部时钟使能位。=0/1 禁止/使能内部时钟。位3:SCI发送器唤醒选择位。位2:SCI休眠。=0/1 禁止/使能休眠模式。位1:SCI发送器使能。=0/1 禁止/使能发送器。位0:SCI接收器使能。=0/1 禁止/使能接收器。76543210ReservedRX ERR INT ENASW RESETCLOCK ENATXWAKESLEEPTXENARXENA、SCI波特率选择寄存器(SCIHBAUD和SCILBAUD)SC
33、I波特率选择高位寄存器(SCIHBAUD)地址7052HSCI波特率选择低位寄存器(SCILBAUD)地址7053H当BRR=1 TO 65535时 BRR=SYSCLK/(BRR+1)*8当BRR=0 时 BRR=SYSCLK/1615141312111098BAUD15BAUD14BAUD13BAUD12BAUD11BAUD10BAUD9BAUD876543210BAUD7BAUD6BAUD5BAUD4BAUD3BAUD2BAUD1BAUD0、SCI控制寄存器2(SCITRL2)地址7054H其中:位7:发送缓冲寄存器准备就绪标志。=0:发送缓冲寄存器SCITXBUF满;=1:表明SCIT
34、XBUF空,可以写入一个字符,系统复位或SW RESET=0也可以使TERDY=1。位6:发送移位寄存器空标志。=0:发送移位寄存器TXSHF满;=1:TXSHF空,此时SCITXBUF一定也空。位1:SCI接收缓冲器/间断中断使能位。=0/1:禁止/允许RXRDY/BRKDT中断;位0:SCI发送中断使能位。=0/1:禁止/允许TXRDY中断。765210TXRDYTX EMPTYRESERVEDRX/BK INT ENATX INT ENA、SCI接收状态寄存器(SCIRXST)地址7055H其中:位7:SCI接收错误标志位。=0/1:无/有错误标志被置位;位6:SCI接收器准备就绪位。=
35、0/1:SCIRXBUF无/接收到新的字符;位5:SCI间断检测标志位。在接收到第一个停止位之后,连续从SCIRXD 引脚接收到至少10个0时,该位置1。位4:SCI帧格式错误标志位。=0/1:帧格式正确/错误;位3:SCI溢出标志位。=0/1:没有检测到溢出/接收器溢出;位2:SCI校验错误标志位。=0/1:无/检测到校验错误;位1:接收器唤醒检测标志位。该位为1表明接收到接收器唤醒条件。在 地址位多处理器模式中,RXWAKE反映了保存在SCIRXBUF中字符 的地址位值。在空闲线多处理器模式中,如果检测到SCIRXD数据 线空闲就置位该位。76543210RX ERRORRXRDYBRKD
36、TFEOEPE RXWAKEReserved、SCI端口控制寄存器2(SCIPC2)地址705EH其中:位7:SCITXD引脚的当前值。=0:引脚SCITXD的值读出为0;=1:引脚SCITXD的值读出为1。位6:如果SCITXD被定义为I/O引脚,该位保存向引脚输出的数据。位5:SCITXD引脚功能定义。=0:引脚SCITXD用于通用数字I/O;=1:引脚SCITXD是串行通信接口发送端。位4:SCITXD为通用数字I/O引脚时,输入/输出方向。=0:SCITXD为数据输入引脚;=1:SCITXD为数据输出引脚。低4位确定SCIRXD引脚的功能,同上。76543210SCITXD DATA
37、INSCITXD DATA OUTSCITXD FUNCTIONSCITXD DATA DIRSCIRXD DATA IN SCIRXD DATA OUTSCIRXD FUNCTIONSCIRXD DATA DIR、SCI优先级控制寄存器(SCIPRI)地址705FH其中:位6:SCI发送器优先级选择。=0:高优先级中断请求;=1:低优先级中断请求。位5:SCI接收器优先级选择。=0:高优先级中断请求;=1:低优先级中断请求。位4:SCI仿真暂停允许。该位仅当用XDS仿真器调试程序时才有效。该位确定当程序暂停时,SCI如何操作。=0:当暂停信号变为高电平时,SCI继续工作,直到当前的接收 或发
38、送功能完成;=1:当暂停信号变为高电平时,SCI状态冻结。765430ReservedSCITXPRIORITYSCIRXPRIORITYSCIESPENReservedSCI的初始化编程举例:LDP#00E0HSPLK#0037H,SCICCR ;1个停止位,奇校验,8个字符位,异步模式空闲线协议SPLK#0013H,SCICTL1 ;使能TX,RX,内部SCICLK,禁止RX ERR,SLEEP,TXWAKESPLK#0002H,SCICTL2 ;使能RX INT,禁止TX INTSPLK#0000H,SCIHBAUDSPLK#0040H,SCILBAUD ;波特率=19200b/s(10
39、MHz SYSCLK)SPLK#0022H,SCIPC2 ;使能TXD和RXD针SPLK#0033H,SCICTL1 ;解除SCI的复位状态LAR AR0,#SCITXBUF ;将SCI_TX_BUF的地址装入AR0LAR AR1,#SCIRXBUF ;将SCI_RX_BUF的地址装入AR1LAR AR2,#B2-SADDR ;将TX的数据起始地址装入AR2LDP#0LACC IFRSACL IFR ;清除所有的中断标志SPLK#0001,IMR ;不屏蔽中断INT1CLRC INTM ;使能中断10、事件管理模块(EV)主要结构成分:EV的中断 通用定时器 比较单元 死区单元 捕获单元 正交
40、编码器脉冲电路 EV的中断、中断结构:To DSP INT4To DSP INT3To DSP INT2INTC INTB INTAEV IRQC IRQB IRQACapture 14interruptTimer 2,3 周期中断Timer 2,3 比较中断Timer 2,3 下溢中断Timer 2,3 上溢中断电源保护中断Compare 13 中断Simple compare 13中断Timer 1 周期中断Timer 1 比较中断Timer 1 下溢中断Timer 1 上溢中断、中断的管理 A、B、C三组中断由3组寄存器来组织:中断屏蔽寄存器EVIMRA、EVIMRB、EVIMRC;中断
41、标志寄存器EVIFRA、EVIFRB、EVIFRC;中断向量寄存器EVIVRA、EVIVRB、EVIVRC;、中断的执行情况 中断事件产生;对应的中断标志寄存器的相应位自动置1;若该中断源的中断屏蔽寄存器对应位为1,即未被屏蔽,且一组中只有一个中断标志位被置位;向CPU发出中断请求,同时将该中断源的中断向量偏移地 址(即中断源标志ID)送入本组的中断向量寄存器;若一组有多个中断标志位被同时置1,EV的中断判优逻辑 将 会对这些标志为1的中断源判优,并将优先级最高的中 断源的中断向量偏移地址送入本组的中断向量寄存器,同时向CPU发出中断请求。、事件管理中断屏蔽寄存器A(EVIMRA)地址742C
42、H:其中:位10:通用定时器1上溢中断使能位;=0/1:禁止/使能。位9:通用定时器1下溢中断使能位;=0/1:禁止/使能。位8:通用定时器1比较中断使能位;=0/1:禁止/使能。位7:通用定时器1周期中断使能位;=0/1:禁止/使能。位64:简单比较单元31中断使能位;=0/1:禁止/使能。位31:全比较单元31中断使能位;=0/1:禁止/使能。位0:电源保护中断使能位;=0/1:禁止/使能。1511109876保留T1OFINTENABLETIUFINTENABLETICNTENABLETIPINTENABLESCMP3INTENABLE543210SCMP2INTENABLESCMP1I
43、NTENABLECMP3INTENABLECMP2INTENABLECMP1INTENABLEPDPINTENABLE、事件管理中断标志寄存器A(EVIFRA)地址742FH:其中:位10:通用定时器1上溢中断。读该位:0标志被复位;1标志被置位,表示 有中断请求。写该位:0无效;1复位标志。位9:通用定时器1下溢中断。同上。位8:通用定时器1比较中断。同上。位7:通用定时器1周期中断。同上。位64:简单比较单元31中断。同上。位31:全比较单元31中断。同上。位0:电源保护中断。同上。1511109876保留T1OFINTTIUFINTTICNTTIPINTSCMP3INT543210SCM
44、P2INTSCMP1INTCMP3INTCMP2INTCMP1INTPDPINT、事件管理中断向量寄存器A(EVIVRA)地址7432H图中:位5位0:若EVIFRA中有中断标志被设置,则这6位中存 放最高优先级的那个中断标志的向量;若 EVIFRA中无中断标志被置位,则这6位为0。156543210保留 通用定时器、特点:采用16位的计数器,计数范围065536个脉冲。计数脉冲可以由内部产生,也可以由外部时钟提供。计数方向可以是增计数,也可以是减计数。、功能:产生上溢(增计数时)、下溢(减计数时)事件。产生周期匹配(当计数器的值与周期寄存器的值相等)或比较匹配事 件(当计数器的值与比较寄存器
45、的值相等)。若允许比较输出功能,上述事件还将引起输出引脚的电平变化。、输入输出引脚:TMRCLK:时钟输入引脚,最大频率为CPU时钟频率的1/4;TMRDIR:用于确定通用定时器计数增/减方式的输入引脚,高电平为 增计数,低电平为减计数;通用定时器比较输出引脚TxPWM/TxCPM(x=1,2或3)、通用定时器中的寄存器TxCNT:16位计数寄存器,可读写,记录输入的脉冲数。TxCMPR:16位比较寄存器,存放待比较的值,可读写;双缓冲结构缓 冲寄存器+工作寄存器;比较匹配事件:TxCINT被置位,给出相应的A/D转换启动,引脚 TxPWM/TxCPM产生跳变。可以用来控制脉冲的占空比,通 过
46、与周期寄存器合作,可以产生任意的PWM波形。TxPR:16位周期寄存器,可读写,双缓冲结构;周期匹配事件:TxPINT(EVIFRA/B中)被置位,在连续计数 模式下可以产 生连续的周期信号。TxCON:16位控制寄存器,可读写。主要决定通用定时器的计 数模式、预 定标分频系数(对输入CPU时钟分频)、定时器的开启与关闭、时 钟选择等。如下表:(T1CON、T2CON、T3CON地址分别为:7404H、7408H、740CH)表中:位15位14:仿真控制位 00=仿真挂起时立即停止计数;01=仿真挂起当前定时器周期结束后停止;1x=操作不受仿真挂起影响;位13位11:计数模式选择 000=停止
47、/保持模式;001=单增计数模式;010=连续增计数模式;011=定向增/减计数模式;100=单增/减计数模式;101=连续增/减计数模式;110/111=保留字,结果不可预测。15141312111098FreeSoftTMODE2TMODE1TMODE0TPS2TPS1 TPS076543210TSWT1TENABLETCLKS1TCLKS0TCLD1TCLD0TECMPRSELT1PR 位10位8:输入时钟预定标系数 000=x/1 001=x/2 010=x/4 011=x/8 100=x/16 101=x/32 110=x/64 111=x/128 位7:用通用定时器1的TENABL
48、E位启动定时器2和3,在 T1CON中该位保留 0=使用自身的定时器使能位TENABLE;1=使用定时器1的TENABLE位启动本定时器操作。位6:定时器使能位。0/1=禁止/使能定时器操作。位5位4:时钟源选择 00=内部CPU时钟 01=外部引脚TMRCLK提供时钟 10=使用定时器2的翻转(只适用于GP2和GP3级连为32位计 数器时的T3CON,在T1CON和T2CON中保留)11=正交编码脉冲电路(只适用于GP2和GP3,在T1CON中 保留)位3位2:定时器比较寄存器(若比较操作有效)的重载 条件 00=当计数器的值为0时重载;01=当计数器的值为0或等于周期寄存器时时重载;10=
49、立即;11=保留,结果不可预料。位1:定时器比较操作使能位。0/1=禁止/使能定时器比较 操作。位0:周期寄存器选择,在T1CON中保留 0=使用自身的周期寄存器;1=使用T1PR作为周期寄存器,忽略自身的周期寄存器。GPTCON:三个定时器共用,16位通用定时控制寄存器,可读写;主要规定由哪种定时事件启动A/D转换,同时也可决定定时器比较输出引脚极性及计数方向。如下表所示:表中:位15位13:分别为定时器3、2、1的计数状态位。只读 0/1=减/加计数 位12位11:定时器3的事件启动ADC 00=无事件启动ADC;01/10/11=下溢/周期/比较中断标志启动ADC;位109/位87:定时
50、器2/1的事件启动ADC,同上。位6:比较输出允许 0/1=禁止/允许3个通用定时器的所有比较输出。位54/位32/位10:定时器3/2/1的比较输出极性 00=强制低 01=低有效 10=高有效 11=强制高15141312111098T3STATT2STATT1STATT3TOADCT2TOADCT1TOADC176543210T1TOADC0TCOMPOET3PINT2PINT1PIN、通用定时器的计数模式 每个通用定时器有6种计数模式:停止/保持模式;单增计数模式;连续增计数模式;定向增/减计数模式;单增/减计数模式;连续增/减计数模式;停止/保持模式:在这种模式下,通用定时器停止操作
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100