制作DSP技术中心主章节李玉柏WWWDSPSOLUTIONCOM.ppt

上传人:本田雅阁 文档编号:2046194 上传时间:2019-02-08 格式:PPT 页数:51 大小:743.01KB
返回 下载 相关 举报
制作DSP技术中心主章节李玉柏WWWDSPSOLUTIONCOM.ppt_第1页
第1页 / 共51页
制作DSP技术中心主章节李玉柏WWWDSPSOLUTIONCOM.ppt_第2页
第2页 / 共51页
制作DSP技术中心主章节李玉柏WWWDSPSOLUTIONCOM.ppt_第3页
第3页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《制作DSP技术中心主章节李玉柏WWWDSPSOLUTIONCOM.ppt》由会员分享,可在线阅读,更多相关《制作DSP技术中心主章节李玉柏WWWDSPSOLUTIONCOM.ppt(51页珍藏版)》请在三一文库上搜索。

1、制作:DSP技术中心 主讲:李玉柏 WWW.DSPSOLUTION.COM,DSP McBSP设计,专题,PART ONE: McBSP基础,McBSP基本特性 McBSP概述 串口的基本配置 串口的接收控制 串口的发送控制 采样率发生器及采样率发生控制器寄存器 多通道工作模式,一、McBSP基本特性 McBSP设计是基于TMS320C2X、C20X、C5X、C54X的标准串口上扩展的,McBSP提供: 全速双工通信 双缓存发送和三缓存接收数据寄存器,以支持连续传送 收和发使用独立的帧和时钟 直接与多媒体数字信号编解码器的工业标准接口,以及有模拟接口和与串行ADC/DAC的接口 外部变速时钟发

2、生器,内部可编程时钟发生器,McBSP还有下列功能 直接与下列格式接口 _ 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 3

3、2 bits U-Law and A-Law 压缩与扩展 8位传输时可选先传: LSB 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,

4、2) ,然后,再由(RBR1,2)拷贝到DRR1,2,DRR1,2就可以由CPU或DMA来读出。多级寄存器允许在通信时内部和外部数据同时传输。 C54XX对McBSP的控制由16位的控制寄存器实现。,三、串口的基本配置 1、McBSP的中断和事件,2、McBSP控制寄存器,3、串口控制寄存器1的详细说明(SPCR1),SPCR1设置McBSP串口的数字环回模式、 接收符号扩展和校验模式、Clock Stop模式、DX是否允许、A-bis 模式、接收中断模式等,并给出接收同步错误、接收移位寄存器(RSR1,2)空、接收准备好等状态。此外可以进行接收复位。,4、串口控制寄存器2的详细说明(SPCR

5、2),SPCR2设置McBSP自由运行模式、SOFT 模式、发送中断模式,并给出发送同步错误、发送移位寄存器(XSR1,2)空、发送准备好等状态。此外可以进行发送复位、采样率发生器复位、帧同步发生电路复位。,5、引脚控制寄存器的详细说明(PCR),PCR设置McBSP传输帧同步模式、接收帧同步模式、发送时钟模式、接收时钟模式、发送帧同步信号的极性、接收帧同步信号的极性、发送时钟极性、接收时钟极性,并给出CLKS、DX、DR脚的状态。此外PCR还定义发送和接收部分在复位时相应引脚是否配置为通用 I/O。,四、串口的接收控制 1、接收控制寄存器1(RCR1)说明,RCR1设置McBSP接收时第一相

6、(FIRST PHASE)的接收帧长度(从1个字到128个字、接收字长度(8、12、16、20、24、32bits)。,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个字、发送字长

7、度(8、12、16、20、24、32bits)。,2、发送控制寄存器2(XCR2)说明,XCR2设置McBSP发送时是否允许第二相(XPHASE=1)。如果允许,设置McBSP时第二相的发送帧长度(从1个字到128个字、发送字长度(8、12、16、20、24、32bits)。此外, XCR2设置McBSP发送时的发送压缩模式、发送同步帧忽略模式、发送数据延迟。,六、采样率发生器及采样率发生控制器寄存器,1、采样率发生器概述 采样率发生器由三级分频电路产生数据移位时钟 (CLKG)和帧信号(FSG)。这两个McBSP内部信号CLKG 和FSG被用作收发时钟(CLKR/X)和帧时钟(FSR/X)

8、(如果选择内部采样率发生器)。 采样率发生器的输入时钟可以是CPU始终或外部时 钟(CLKS),受(SRGR2)的CLKSM位控制。 采样率发生器的三级分频分别是: 数据位时钟分频(CLKGDV) 帧周期分频(FPER) 帧脉冲宽度分频(FWID) 采样率发生器的工作模式由采样率发生器控制寄 存器控制。,2、采样率发生器控制寄存器(SRGR1/2),采样率发生器寄存器1(SRGR1)设置帧正脉冲宽度(必须小于WDLEN指出的字的长度)和数据位时钟分频( CLKG与输入CLK频率之比,约定值为1)。 采样率发生器寄存器2(SRGR2)设置采样率发生器时钟同步模式、CLKS的极性、采样率发生器输入

9、时钟选择、帧周期分频。,七、McBSP的多通道工作,1、多通道工作模式的控制寄存器,1)、多通道控制寄存器1(MCR1),MCR1设置McBSP在多通道工作模式时的接收PART-B的块结构、接收PART-A的块结构、当前可接收块、接收多通道选择。,2)、多通道控制寄存器2(MCR2)说明,MCR2设置McBSP在多通道工作模式时的发送PART-A块结构、发送PART-B块结构、当前发送块、发送多通道选择。,3)、接收、发送通道使能寄存器说明(图中各位:置1-使能,置0-不允许),2、多通道工作模式设置 设置(R/X)PHASE = 0选择单相工作模式 设置FRLEN1 = ?选择帧长(字数,也

10、是多通道工作模式下的通道数,最多可达128) 设置字长WDLEN1 = ?(每通道传输多少bits) 如果是单通道连续工作,置RMCM=0X和MCM=0 如果是多通道工作,设置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):即整个串口复位,此

11、时,/RRST和/XRST为零,DR、CLKR/X、FSR/X为输入信号,DX为输出信号,输出高祖态。同时/GRST也为零,CLKG=CPU时钟/2,不产生FSG信号。/RS放开后,/RRST、/XRST、/GRST、/FRST仍为零,此时,McBSP配置寄存器赋值和变成,复位进入McBSP复位。 McBSP复位:McBSP串口发送器和接收器可以分别复位(/RRST=0、/XRST=0、/FRST=0)。不论是接收还是发送的复位,相应部分都将停止串口操作,而相应引脚当作I/O脚使用,由PCR的XIOEN、RIOEN决定。,特殊说明 采样率发生器复位:设备复位或置/GRST为零可以复位采样率发生

12、器。采样率发生器复位时,CLKG等于CPU-CLK/2,而FSG驱动为低。当/RS放开(延迟)/GRST放开后,CLKG按SRGR1编程产生;如果,/FRST也放开,则经过FPER个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-ter

13、s) listed in Table-1 McBSP Registers, as required when the serial port is in reset state (XRST = RRST = FRST = 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 seria

14、l port. Note that the value written to SPCR1,2 at this time should have only the reset bits changed to 1, and the remaining 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 transmitt

15、er to become active. Alternatively, on either write (steps 1 and 5), the transmitter and receiver may be placed in or taken out of 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.,二

16、、McBSP串口产生的中断与事件,1、串口与CPU之中断 (R/X)INTM=00:每传送一个字,(R/X)RDY 响应一次,就产生响应串口中断一次。(此时,同时产生DMA事件) (R/X)INTM=01:在多通道模式中,一个帧内出现16通道的块(PARTITION)边界就产生中断。此时CPU可以检测是哪个PARTITION。 (R/X)INTM=10:检测到帧同步脉冲就产生(R/X)INT。 (R/X)INTM = 11:当出现帧同步错误时产生中断。,2、McBSP的准备好之状态 接收准备好(RRDY、REVT、RINT):串口复位时RRDY清为0,当RBR1,2内容拷贝到DRR1,2时,R

17、RDY有效,该数据可以被CPU or DMA读,一旦CPU or DMA读走数据RRDY又清为0。RRDY直接驱动McBSP接收事件给DMA (REVT)。同时如果SPCR1中的RINTM = 00,RRDY将驱动McBSP的接收中断(RINT)给CPU。 发送准备好(XRDY、XEVT、XINT):XRDY = 1说明DXR1,2的数据已拷贝到XSR1,2中,DXR1,2可以装入新的数据。串口复位放开时(/XRST从0到1),XRDY从0变到1已说明DXR1,2可以装入新数据,一旦有新数据装入,XRDYJIU 就清为0。XRDY直接驱动发送同步事件到DMA (XEVT or XEVTA),同

18、时,如果SPCR2中XINTM = 00,XRDY 还直接驱动发送中断(XINT) 给CPU。,三、帧与时钟配置 McBSP串口的帧和时钟配置包含下列关键项的设置: 设置FSR, FSX, CLKX, and CLKR的极性 选择单相或双相帧结构 对每一相,设置字数(每帧该相有多少字) 对每一相,设置字宽(字的比特位数) 设置连续帧同步工作模式,还是除第一个帧脉冲后忽略帧同步脉冲工作模式 设置相对帧脉冲,第一位传输数据的延迟为0、1、2位(CLKG) 对串口接收,设置左或右效验和符号扩展或0填充模式 如果采用内部采样率发生器产生帧脉冲信号,设置帧信号脉宽、周期、CLKG时钟分频等,四、u-LA

19、W/A-LAW压缩操作,McBSP通过(R/X)COMPAND的控制支持是否进行压缩传输,如果支持压缩传输,(R/X)WDLEN1,2必须设置位00,而传送给CPU或DMA 的数据至少是16位,利用串口的压缩功能可以实现数据的内部压缩,而不占用很多DSP的资源。其方法有二: 1)当串口接收和发送都复位时,串口的压缩和扩展逻辑电路是内部连接的,即DXR1与DRR1通过压缩/扩展电路相连,如下图4所示。此时设置XCOMPAND或RCOMPAND之一就可以实现数据的压缩和解压。向DXR1发送的数据经过4个CPU周期后,就可以从DRR1上读出。该方法的优点是速度快,缺点是没有帧同步以便CPU或DMA进

20、行流程控制。 2)采用数据环回模式,设置XCOMPAND或RCOMPAND之一也可以实现数据的压缩和解压。此时CPU的中断或DMA的事件可以进行传输的流程控制,并且,传输速度可调。,五、编程举例,下面给出一个McBSP串口实验程序 这是一个串口自测试程序,除检验串口的功能外, 该程序还利用串口完成数据的内部压缩,通过设置 XCOMPAND或RCOMPAND之一可以实现内部数据A-law 或u-law的压缩和解压 程序的流程是: 修改中断向量表 初始化McBSP串口 设置BLD=1,即支持数字回环方式 设置RCOMPAND=10,即采用u-law扩展 ar3指向发送数据缓冲区 ar4指向接收数据

21、缓冲区,初始化将接收数据缓冲 区全部清为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是CCITT推荐的标准,欧洲采用A=87.6),7、A-law数据压缩曲线,8、 A-law数据压缩编码,9、 A-law数据扩展公式,10、 A-law数据扩展解码,11、 u-law或A-law数据编码特殊说明: 符号位:1-代表正,0-代表负(与计算

22、机对数据的 正负号表示相反) PCM编码时,正负数的编码是以绝对值进行二进制编码 TI的DSP在进行u-law或A-law数据压缩后先异或0x55, 在进行传输,详细程序及说明,; This is McBSP test program. The work-mode of McBSP Series: ; BLD=1 (Digital loop back mode enabled) ; RCOMPAND=10 or 11 (u-law/A-law Expand: 8bits - 16bits) ; (R/X)INTM=00 (generate an interrupt every word tra

23、xsmitted) ; 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“ .mmregs .global mainstart .global interrupt_vector drr11 .set 41h ;McBSP1 receive data registe

24、r dxr11 .set 43h ;McBSP1 transmit data register spsa1 .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,1000 interrupt_vector: ;interrupt vector table .text rs b mainstart nop nop nmi b _ret .word 0,0 sint1

25、7 b _ret .word 0,0 sint18 b _ret .word 0,0 sint19 b _ret .word 0,0 sint20 b _ret .word 0,0,sint21 b _ret .word 0,0 sint22 b _ret .word 0,0 sint23 b _ret .word 0,0 sint24 b _ret .word 0,0 sint25 b _ret .word 0,0 sint26 b _ret .word 0,0 sint27 b _ret .word 0,0 sint28 b _ret .word 0,0 sint29 b _ret .wo

26、rd 0,0 sint30 b _ret .word 0,0,int0 b _ret .word 0,0 int1 b _ret .word 0,0 int2 b _ret .word 0,0 tint b _ret .word 0,0 brint0 b _ret .word 0,0 bxint0 b _ret .word 0,0 dmac0 b _ret .word 0,0 dmac1 b _ret .word 0,0 int3 b _ret .word 0,0 hpint b _ret .word 0,0,brint1 b McBSP1_receive_int nop nop bxint1

27、 b McBSP1_transmit_int nop nop q28 .word 0,0,0,0 q29 .word 0,0,0,0 q30 .word 0,0,0,0 q31 .word 0,0,0,0 mainstart: ssbx intm ;close all interrupt stm #0ffffh,ifr ;cleare all interrupt_flag stm #0,clkmd ;switch to DIV mode ts: ldm clkmd,a and #01b,a bc ts,aneq stm #5207h,clkmd ;clkout=clkin X 6 rpt #1

28、00 ;waits enough clocks,nop stm #stack_memory,sp ;sp = stack_memory stm #0ff80h,pmst ;vector table start: 0xff80 stm #3610h,swwsr ;I/O wait: 3clks, data_0x8000- ;0xffff wait:3clks ;program_0x8000-0xffff ;wait:2clks call Clear_McBSP1_receive_buf call McBSP1_initializing rpt #0ffh nop stm #buffer_1,ar

29、3 stm #buffer_2,ar4 ld #799,b ;pre_put numberS of McBSP interrupt stm #1800h,imr ;enable RINT1,XINT1 rsbx intm ;enable all int wait_McBSP_int: nop,nop bc _ret,beq nop nop b wait_McBSP_int nop _ret: nop rete McBSP1_initializing: stm #0,spsa1 ;choose SPCR11 stm #08000h,spcd1 ;1000000000000000 = SPCR11

30、. ;DLB(15)=1(Digital loop back moden enabled) ;RJUST(14-13)=00;CLKSTP(12-11)=00 ;RES(10-8)=000,DXENA(7)=0,ABIS(6)=0 ;RINTM(5-4)=00,RSYNCERR(3)=0,RFULL(2)=0 ;RRDY(1)=0,RRST(0)=0 stm #1,spsa1 ;choose spcr21,stm #0h,spcd1 ;0000000000000000 = SPCR21. ;RES(15-10)=000000,FREE(9)=0,SOFT(8)=0 ;FRST(7)=0,GRS

31、T(6)=0,XINT(5-4)=00,XSYNCERR(3)=0 ;XFULL(2)=0,XRDY(1)=0,XRST(0)=0 stm #2,spsa1 ;choose RCR11 stm #0,spcd1 ;0000000000000000 = RCR11. ;RES(15)=0,RFRLEN1(14-8)=000 0000 ;RWDLEN1(7-5)=000,RES(4-0)=0 0000 stm #3,spsa1 ;choose RCR21 stm #10H,spcd1 ;0000000000010000 = RCR21. ;RPHASE(15)=0,RFRLEN2(14-8)=00

32、0 0000 ;RWDLEN2(7-5)=000,RCOMPAND(4-3)=10(u-law EXPAND) ;RFIG(2)=0,RDATDLY(1-0)=00 stm #4,spsa1 ;choose XCR11 stm #0,spcd1 ;0000000000000000 = XCR11. ;RES(15)=0,XFRLEN1(14-8)=000 0000 ;XWDLEN1(7-5)=000,RES(4-0)=0 0000 stm #5,spsa1 ;choose XCR21 stm #0,spcd1 ;0000000000000000 = XCR21. ;XPHASE(15)=0,X

33、FRLEN2(14-8)=000 0000,;XWDLEN2(7-5)=000,XCOMPAND(4-3)=00(No compand) ;XFIG(2)=0,XDATDLY(1-0)=00 stm #6,spsa1 ;choose SRGR11 stm #10fh,spcd1 ;0000000100001111 = SRGR11 ;FWID(15-8)=0000 0001,CLKGDV(7-0)=0000 1111 stm #7,spsa1 ;choose SRGR21 stm #0300FH,spcd1 ;0011000000010011 = SRGR21 ;GSYNC(15)=0,CLK

34、SP(14)=0,CLKSM(13)=1(use CPU_clk) ;FSGM(12)=1(Internal SRG generate Transmit FS) ;FPER(11-0)=0000 0000 1111 stm #0eh,spsa1 ;choose PCR1 stm #0c01h,spcd1 ;0000101000000001 = PCR1 ;RES(15-14)=00,XIOEN(13)=0,RIOEN(12)=0 ;FSXM(11)=1,FSRM(10)=0,CLKXM(9)=1,CLKRM(8)=0 ;RES(7)=0,CLKS_STAT(6)=0,DX_STAT(5)=0,

35、RX_STAT(4)=0 ;FSXP(3)=0,FSRP(2)=0,CLKXP(1)=0,CLKRP(0)=1 rpt #0ffh nop stm #055h,dxr11 ;first data writed to dxr11,stm #0,spsa1 ;choose SPCR11 stm #08001h,spcd1 ;1000000000000001 = SPCR11. ;McBSP1 receive enabled. stm #1,spsa1 ;choose spcr21 stm #0c1h,spcd1 ;0000000011000001 = SPCR21. ;McBSP1 sample rate generator,transmit enabled. nop nop rete Clear_McBSP1_receive_buf: stm #buffer_2,ar4 rpt #999 st #0,*ar4+ nop nop rete,McBSP1_receive_int: sub #1,b ldm drr11,a stl a,*ar4+ nop rete McBSP1_transmit_int: ld *ar3+,a xor #055h,a stlm a,dxr11 nop rete .end,谢谢大家!,联系电话:(028)3201455 E-mail:,

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

当前位置:首页 > 其他


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