《制作DSP技术中心主章节李玉柏.ppt》由会员分享,可在线阅读,更多相关《制作DSP技术中心主章节李玉柏.ppt(51页珍藏版)》请在三一办公上搜索。
1、制作:DSP技术中心主讲:李玉柏,DSP McBSP设计,专题,PART ONE:McBSP基础,McBSP基本特性McBSP概述串口的基本配置串口的接收控制串口的发送控制采样率发生器及采样率发生控制器寄存器多通道工作模式,一、McBSP基本特性 McBSP设计是基于TMS320C2X、C20X、C5X、C54X的标准串口上扩展的,McBSP提供:全速双工通信 双缓存发送和三缓存接收数据寄存器,以支持连续传送 收和发使用独立的帧和时钟 直接与多媒体数字信号编解码器的工业标准接口,以及有模拟接口和与串行ADC/DAC的接口 外部变速时钟发生器,内部可编程时钟发生器,McBSP还有下列功能 直接与
2、下列格式接口_ T1/E1 framers_ MVIP switching compatible and ST-BUS compliant devices including:_ MVIP framers_ H.100 framers_ SCSA framers_ IOM-2 compliant devices_ AC97 compliant devices _ IIS compliant devices_ SPI_ devices 多通道收发,通道数达128 字宽可选:8,12,16,20,24,and 32 bits U-Law and A-Law 压缩与扩展 8位传输时可选先传:LSB
3、or MSB 帧信号与时钟信号极性可编程,二、McBSP概述,McBSP与外设进行数据传输是通过(DX)脚来发送,(RX)脚来接收,通信的时钟与帧信号是由CLKX,CLKR,FSX,and FSR脚来控制。DSP的CPU或DMA从数据接收寄存器(DRR1,2)读取接收数据,发送时向数据发送寄存器(DXR1,2)写数据。数据写入(DXR1,2)后通过传输移位寄存器(XSR1,2)移位输出到DX上,同样,从DR上接收的数据移位存储到接收移位寄存器(RSR1,2)并拷贝到接收缓存寄存器(RBR1,2),然后,再由(RBR1,2)拷贝到DRR1,2,DRR1,2就可以由CPU或DMA来读出。多级寄存器
4、允许在通信时内部和外部数据同时传输。C54XX对McBSP的控制由16位的控制寄存器实现。,三、串口的基本配置 1、McBSP的中断和事件,2、McBSP控制寄存器,3、串口控制寄存器1的详细说明(SPCR1),SPCR1设置McBSP串口的数字环回模式、接收符号扩展和校验模式、Clock Stop模式、DX是否允许、A-bis 模式、接收中断模式等,并给出接收同步错误、接收移位寄存器(RSR1,2)空、接收准备好等状态。此外可以进行接收复位。,4、串口控制寄存器2的详细说明(SPCR2),SPCR2设置McBSP自由运行模式、SOFT 模式、发送中断模式,并给出发送同步错误、发送移位寄存器(
5、XSR1,2)空、发送准备好等状态。此外可以进行发送复位、采样率发生器复位、帧同步发生电路复位。,5、引脚控制寄存器的详细说明(PCR),PCR设置McBSP传输帧同步模式、接收帧同步模式、发送时钟模式、接收时钟模式、发送帧同步信号的极性、接收帧同步信号的极性、发送时钟极性、接收时钟极性,并给出CLKS、DX、DR脚的状态。此外PCR还定义发送和接收部分在复位时相应引脚是否配置为通用 I/O。,四、串口的接收控制 1、接收控制寄存器1(RCR1)说明,RCR1设置McBSP接收时第一相(FIRST PHASE)的接收帧长度(从1个字到128个字、接收字长度(8、12、16、20、24、32bi
6、ts)。,2、接收控制寄存器2(RCR2)说明,RCR2设置McBSP接收时是否允许第二相(RPHASE=1)。如果允许,设置McBSP接收时第二相的接收帧长度(从1个字到128个字、接收字长度(8、12、16、20、24、32bits)。此外,RCR2设置McBSP接收时的接收压缩模式、接收同步帧忽略模式、接收数据延迟。,五、串口的发送控制 1、发送控制寄存器1(XCR1)说明,XCR1设置McBSP发送时第一相(FIRST PHASE)的发送帧长度(从1个字到128个字、发送字长度(8、12、16、20、24、32bits)。,2、发送控制寄存器2(XCR2)说明,XCR2设置McBSP发
7、送时是否允许第二相(XPHASE=1)。如果允许,设置McBSP时第二相的发送帧长度(从1个字到128个字、发送字长度(8、12、16、20、24、32bits)。此外,XCR2设置McBSP发送时的发送压缩模式、发送同步帧忽略模式、发送数据延迟。,六、采样率发生器及采样率发生控制器寄存器,1、采样率发生器概述 采样率发生器由三级分频电路产生数据移位时钟(CLKG)和帧信号(FSG)。这两个McBSP内部信号CLKG 和FSG被用作收发时钟(CLKR/X)和帧时钟(FSR/X)(如果选择内部采样率发生器)。采样率发生器的输入时钟可以是CPU始终或外部时 钟(CLKS),受(SRGR2)的CLK
8、SM位控制。采样率发生器的三级分频分别是:数据位时钟分频(CLKGDV)帧周期分频(FPER)帧脉冲宽度分频(FWID)采样率发生器的工作模式由采样率发生器控制寄 存器控制。,2、采样率发生器控制寄存器(SRGR1/2),采样率发生器寄存器1(SRGR1)设置帧正脉冲宽度(必须小于WDLEN指出的字的长度)和数据位时钟分频(CLKG与输入CLK频率之比,约定值为1)。采样率发生器寄存器2(SRGR2)设置采样率发生器时钟同步模式、CLKS的极性、采样率发生器输入时钟选择、帧周期分频。,七、McBSP的多通道工作,1、多通道工作模式的控制寄存器,1)、多通道控制寄存器1(MCR1),MCR1设置
9、McBSP在多通道工作模式时的接收PART-B的块结构、接收PART-A的块结构、当前可接收块、接收多通道选择。,2)、多通道控制寄存器2(MCR2)说明,MCR2设置McBSP在多通道工作模式时的发送PART-A块结构、发送PART-B块结构、当前发送块、发送多通道选择。,3)、接收、发送通道使能寄存器说明(图中各位:置1-使能,置0-不允许),2、多通道工作模式设置设置(R/X)PHASE=0选择单相工作模式设置FRLEN1=?选择帧长(字数,也是多通道工作模式下的通道数,最多可达128)设置字长WDLEN1=?(每通道传输多少bits)如果是单通道连续工作,置RMCM=0X和MCM=0如
10、果是多通道工作,设置RP(A/B)BLK,XP(A/B)BLK,RCER(A/B)、XCER(A/B),并置RMCM=1、XMCM位非0,PART TWO:McBSP编程,McBSP的复位操作与初始化McBSP的中断与DMA事件McBSP的帧与时钟编程McBSP的接收流程McBSP的发送流程a-law/u-law数据压扩编程举例,一、McBSP串口的复位,1、McBSP串口的复位方式设备复位(/RS=0):即整个串口复位,此时,/RRST和/XRST为零,DR、CLKR/X、FSR/X为输入信号,DX为输出信号,输出高祖态。同时/GRST也为零,CLKG=CPU时钟/2,不产生FSG信号。/R
11、S放开后,/RRST、/XRST、/GRST、/FRST仍为零,此时,McBSP配置寄存器赋值和变成,复位进入McBSP复位。McBSP复位:McBSP串口发送器和接收器可以分别复位(/RRST=0、/XRST=0、/FRST=0)。不论是接收还是发送的复位,相应部分都将停止串口操作,而相应引脚当作I/O脚使用,由PCR的XIOEN、RIOEN决定。,特殊说明采样率发生器复位:设备复位或置/GRST为零可以复位采样率发生器。采样率发生器复位时,CLKG等于CPU-CLK/2,而FSG驱动为低。当/RS放开(延迟)/GRST放开后,CLKG按SRGR1编程产生;如果,/FRST也放开,则经过FP
12、ER个CLKG,FSG驱动为高。,2、下面给出串口初始化的处理过程 1)Set XRST=RRST=FRST=0 in SPCR1,2.If coming out of device re-set,this step is not required.2)Program only the McBSP configuration registers(and not the data regis-ters)listed in Table-1 McBSP Registers,as required when the serial port is in reset state(XRST=RRST=FRS
13、T=0).,3)Wait for two bit clocks.This is to ensure proper synchronization internally.4)Set up data acquisition as required such as writing to DXR.5)Set XRST=RRST=1 to enable the serial port.Note that the value written to SPCR1,2 at this time should have only the reset bits changed to 1,and the remain
14、ing bit-fields should have the same value as in step 2 above.6)Set FRST=1,if internally generated frame sync is required.7)Wait two bit clocks for the receiver and transmitter to become active.Alternatively,on either write(steps 1 and 5),the transmitter and receiver may be placed in or taken out of
15、reset individually by modifying the desired bit.Note that the necessary duration of the active-low period of XRST or RRST is at least two bit-clocks(CLKR/CLKX)wide.,二、McBSP串口产生的中断与事件,1、串口与CPU之中断(R/X)INTM=00:每传送一个字,(R/X)RDY 响应一次,就产生响应串口中断一次。(此时,同时产生DMA事件)(R/X)INTM=01:在多通道模式中,一个帧内出现16通道的块(PARTITION)边界
16、就产生中断。此时CPU可以检测是哪个PARTITION。(R/X)INTM=10:检测到帧同步脉冲就产生(R/X)INT。(R/X)INTM=11:当出现帧同步错误时产生中断。,2、McBSP的准备好之状态接收准备好(RRDY、REVT、RINT):串口复位时RRDY清为0,当RBR1,2内容拷贝到DRR1,2时,RRDY有效,该数据可以被CPU or DMA读,一旦CPU or DMA读走数据RRDY又清为0。RRDY直接驱动McBSP接收事件给DMA(REVT)。同时如果SPCR1中的RINTM=00,RRDY将驱动McBSP的接收中断(RINT)给CPU。发送准备好(XRDY、XEVT、
17、XINT):XRDY=1说明DXR1,2的数据已拷贝到XSR1,2中,DXR1,2可以装入新的数据。串口复位放开时(/XRST从0到1),XRDY从0变到1已说明DXR1,2可以装入新数据,一旦有新数据装入,XRDYJIU 就清为0。XRDY直接驱动发送同步事件到DMA(XEVT or XEVTA),同时,如果SPCR2中XINTM=00,XRDY 还直接驱动发送中断(XINT)给CPU。,三、帧与时钟配置 McBSP串口的帧和时钟配置包含下列关键项的设置:设置FSR,FSX,CLKX,and CLKR的极性选择单相或双相帧结构对每一相,设置字数(每帧该相有多少字)对每一相,设置字宽(字的比特
18、位数)设置连续帧同步工作模式,还是除第一个帧脉冲后忽略帧同步脉冲工作模式设置相对帧脉冲,第一位传输数据的延迟为0、1、2位(CLKG)对串口接收,设置左或右效验和符号扩展或0填充模式如果采用内部采样率发生器产生帧脉冲信号,设置帧信号脉宽、周期、CLKG时钟分频等,四、u-LAW/A-LAW压缩操作,McBSP通过(R/X)COMPAND的控制支持是否进行压缩传输,如果支持压缩传输,(R/X)WDLEN1,2必须设置位00,而传送给CPU或DMA 的数据至少是16位,利用串口的压缩功能可以实现数据的内部压缩,而不占用很多DSP的资源。其方法有二:1)当串口接收和发送都复位时,串口的压缩和扩展逻辑
19、电路是内部连接的,即DXR1与DRR1通过压缩/扩展电路相连,如下图4所示。此时设置XCOMPAND或RCOMPAND之一就可以实现数据的压缩和解压。向DXR1发送的数据经过4个CPU周期后,就可以从DRR1上读出。该方法的优点是速度快,缺点是没有帧同步以便CPU或DMA进行流程控制。2)采用数据环回模式,设置XCOMPAND或RCOMPAND之一也可以实现数据的压缩和解压。此时CPU的中断或DMA的事件可以进行传输的流程控制,并且,传输速度可调。,五、编程举例,下面给出一个McBSP串口实验程序 这是一个串口自测试程序,除检验串口的功能外,该程序还利用串口完成数据的内部压缩,通过设置 XCO
20、MPAND或RCOMPAND之一可以实现内部数据A-law 或u-law的压缩和解压 程序的流程是:修改中断向量表 初始化McBSP串口 设置BLD=1,即支持数字回环方式 设置RCOMPAND=10,即采用u-law扩展 ar3指向发送数据缓冲区 ar4指向接收数据缓冲区,初始化将接收数据缓冲 区全部清为0,编写接收与发送中断程序关于A-law/u-law数据压缩与扩展说明 1、u-law数据压缩公式(其中对于美国和日本的标准,u取255),2、u-law数据压缩曲线,3、u-law数据压缩编码,4、u-law数据扩展公式,5、u-law数据扩展解码,6、A-law数据压缩公式(A-law是
21、CCITT推荐的标准,欧洲采用A=87.6),7、A-law数据压缩曲线,8、A-law数据压缩编码,9、A-law数据扩展公式,10、A-law数据扩展解码,11、u-law或A-law数据编码特殊说明:符号位:1-代表正,0-代表负(与计算机对数据的 正负号表示相反)PCM编码时,正负数的编码是以绝对值进行二进制编码 TI的DSP在进行u-law或A-law数据压缩后先异或0 x55,在进行传输,详细程序及说明,;This is McBSP test program.The work-mode of McBSP Series:;BLD=1(Digital loop back mode en
22、abled);RCOMPAND=10 or 11(u-law/A-law Expand:8bits-16bits);(R/X)INTM=00(generate an interrupt every word traxsmitted);ar3-Transmit data buffer(buffer_1);ar4-receive data buffer(buffer_2);The program is applicable for VC5409;Designed by liyubai;Modifing 1.0 Time 2001,6,28.title Test McBSP Program.mmre
23、gs.global mainstart.global interrupt_vectordrr11.set 41h;McBSP1 receive data registerdxr11.set 43h;McBSP1 transmit data registerspsa1.set 48h;McBSP1 sub_bank address register,spcd1.set 49h;McBSP1 sub_bank data register.bss stack_memory,500.bss buffer_1,1000.bss buffer_2,1000interrupt_vector:;interru
24、pt vector table.textrsb mainstart nopnopnmi b _ret.word 0,0sint17 b _ret.word 0,0sint18 b _ret.word 0,0sint19 b _ret.word 0,0sint20 b _ret.word 0,0,sint21 b _ret.word 0,0sint22 b _ret.word 0,0sint23 b _ret.word 0,0sint24 b _ret.word 0,0sint25 b _ret.word 0,0sint26 b _ret.word 0,0sint27 b _ret.word 0
25、,0sint28 b _ret.word 0,0sint29 b _ret.word 0,0sint30 b _ret.word 0,0,int0 b _ret.word 0,0int1 b _ret.word 0,0int2 b _ret.word 0,0tint b _ret.word 0,0brint0 b _ret.word 0,0bxint0 b _ret.word 0,0dmac0 b _ret.word 0,0dmac1 b _ret.word 0,0int3 b _ret.word 0,0hpint b _ret.word 0,0,brint1 b McBSP1_receive
26、_intnopnopbxint1 b McBSP1_transmit_intnopnopq28.word 0,0,0,0q29.word 0,0,0,0q30.word 0,0,0,0q31.word 0,0,0,0mainstart:ssbx intm;close all interruptstm#0ffffh,ifr;cleare all interrupt_flagstm#0,clkmd;switch to DIV modets:ldm clkmd,a and#01b,a bc ts,aneq stm#5207h,clkmd;clkout=clkin X 6rpt#100;waits e
27、nough clocks,nopstm#stack_memory,sp;sp=stack_memory stm#0ff80h,pmst;vector table start:0 xff80 stm#3610h,swwsr;I/O wait:3clks,data_0 x8000-;0 xffff wait:3clks;program_0 x8000-0 xffff;wait:2clks call Clear_McBSP1_receive_buf call McBSP1_initializingrpt#0ffhnopstm#buffer_1,ar3stm#buffer_2,ar4ld#799,b;
28、pre_put numberS of McBSP interruptstm#1800h,imr;enable RINT1,XINT1rsbx intm;enable all intwait_McBSP_int:nop,nopbc _ret,beqnopnopb wait_McBSP_intnop_ret:nopreteMcBSP1_initializing:stm#0,spsa1;choose SPCR11stm;DLB(15)=1(Digital loop back moden enabled);RJUST(14-13)=00;CLKSTP(12-11)=00;RES(10-8)=000,D
29、XENA(7)=0,ABIS(6)=0;RINTM(5-4)=00,RSYNCERR(3)=0,RFULL(2)=0;RRDY(1)=0,RRST(0)=0stm#1,spsa1;choose spcr21,stm#0h,spcd1;0000000000000000=SPCR21.;RES(15-10)=000000,FREE(9)=0,SOFT(8)=0;FRST(7)=0,GRST(6)=0,XINT(5-4)=00,XSYNCERR(3)=0;XFULL(2)=0,XRDY(1)=0,XRST(0)=0stm#2,spsa1;choose RCR11stm#0,spcd1;0000000
30、000000000=RCR11.;RES(15)=0,RFRLEN1(14-8)=000 0000;RWDLEN1(7-5)=000,RES(4-0)=0 0000stm#3,spsa1;choose RCR21stm#10H,spcd1;0000000000010000=RCR21.;RPHASE(15)=0,RFRLEN2(14-8)=000 0000;RWDLEN2(7-5)=000,RCOMPAND(4-3)=10(u-law EXPAND);RFIG(2)=0,RDATDLY(1-0)=00stm#4,spsa1;choose XCR11stm#0,spcd1;00000000000
31、00000=XCR11.;RES(15)=0,XFRLEN1(14-8)=000 0000;XWDLEN1(7-5)=000,RES(4-0)=0 0000stm#5,spsa1;choose XCR21stm#0,spcd1;0000000000000000=XCR21.;XPHASE(15)=0,XFRLEN2(14-8)=000 0000,;XWDLEN2(7-5)=000,XCOMPAND(4-3)=00(No compand);XFIG(2)=0,XDATDLY(1-0)=00stm#6,spsa1;choose SRGR11stm#10fh,spcd1;00000001000011
32、11=SRGR11;FWID(15-8)=0000 0001,CLKGDV(7-0)=0000 1111stm#7,spsa1;choose SRGR21stm;GSYNC(15)=0,CLKSP(14)=0,CLKSM(13)=1(use CPU_clk);FSGM(12)=1(Internal SRG generate Transmit FS);FPER(11-0)=0000 0000 1111stm#0eh,spsa1;choose PCR1stm;RES(15-14)=00,XIOEN(13)=0,RIOEN(12)=0;FSXM(11)=1,FSRM(10)=0,CLKXM(9)=1
33、,CLKRM(8)=0;RES(7)=0,CLKS_STAT(6)=0,DX_STAT(5)=0,RX_STAT(4)=0;FSXP(3)=0,FSRP(2)=0,CLKXP(1)=0,CLKRP(0)=1rpt#0ffhnop stm#055h,dxr11;first data writed to dxr11,stm#0,spsa1;choose SPCR11stm;McBSP1 receive enabled.stm#1,spsa1;choose spcr21stm#0c1h,spcd1;0000000011000001=SPCR21.;McBSP1 sample rate generator,transmit enabled.nopnopreteClear_McBSP1_receive_buf:stm#buffer_2,ar4rpt#999st#0,*ar4+nopnoprete,McBSP1_receive_int:sub#1,bldm drr11,astl a,*ar4+nopreteMcBSP1_transmit_int:ld*ar3+,axor#055h,astlm a,dxr11noprete.end,谢谢大家!,联系电话:(028)3201455E-mail:,