⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcbsp_pcm3002.asm

📁 基于dsk5402的语音设计,很有用呀.我调试过的,保证正确
💻 ASM
字号:
/******************************************************************************\
*             Copyright (C) Signal Processing Lab,SCU.
*                        All Rights Reserved
*------------------------------------------------------------------------------
* NAME.......... Double Audio Channel Program
* DATE CREATED.. 07/22/2008
* Author........ shao ming yi
\******************************************************************************/

     .title  "mcbsp_pcm3002.asm "
     .mmregs
     .def start,init_mcbsp,init_pcm3002
     
;----------define serial control registers' address--------
DRR12	.set	0x0031		; McBSP2 data receive register 1
DRR22	.set	0x0030		; McBSP2 data receive register 2
DXR12	.set	0x0033		; McBSP2 data transmit register 1
DXR22	.set	0x0032	         ; McBSP2 data transmit register 2

SPSA2    .set	0x0034     ; serial 2
SPSD2     .set	0x0035

SPCR12	.set	0x0000 
SPCR22  .set	0x0001 
RCR12   .set	0x0002
RCR22  	.set	0x0003
XCR12  	.set	0x0004
XCR22   .set	0x0005
SRGR12  .set	0x0006
SRGR22  .set	0x0007
PCR2	.set    0x000e

STACK   .usect  "STACK",20h

TEST_Bit   .usect  "smy",1  
data_primary1  .usect  "smy",1
data_primary2  .usect  "smy",1
DSK5416_CODEC_CLK  .set  7
DSK5416_MISC       .set  6
DSK5416_PCM3002_L  .set  2
DSK5416_PCM3002_H  .set  3
W_PCM3002  .macro  DATAL,DATAH
           ST   #DATAL,*(data_primary1)
           PORTW   *(data_primary1), DSK5416_PCM3002_L
           ST   #DATAH,*(data_primary2)
           PORTW  *(data_primary2), DSK5416_PCM3002_H
           .endm	
     
        .text            

start:
     SSBX SXM 
     SSBX FRCT
     STM  #7fach,PMST			; vector in 7f80h
     STM  #4492H,SWWSR
     STM  #0A002H,BSCR
     STM  #STACK+20h,SP	 ; init SP                   
     
     CALL  init_mcbsp

     CALL  init_pcm3002

again:
     CALL RREADR
     LDM  DRR12, A  ;receive left(channel 2)
     CALL RREADR
     LDM  DRR12, B   ;receive right(channel 2)	  
     CALL XREADR
     STLM A,DXR12    ;Send left(channel 2) 
     CALL XREADR
     STLM B,DXR12     ;Send right(channel 2) 
     B   again    
     
RREADR: STLM A,AR2
        SUB A,A
        STM #0H, SPSA2 
        LDM  SPSD2, A  
        AND  #2H,A,A
        BC    RREADR,AEQ
        LDM AR2,A
        RET 

XREADR  STLM A,AR2
        SUB A,A
        STM #01H, SPSA2 
        LDM  SPSD2, A  
        AND  #2H,A,A
        BC    RREADR,AEQ
        LDM AR2,A
        RET   
;******************************************************************
; The following codes are used to initalize McBSP2 !
; When Transmit, this dsk5416PP makes CLK,FS ! the other
; DES5402PP receives the CLK,FS ! 
;******************************************************************
init_mcbsp:  
             stm  #SPCR12,SPSA2 		; choose SPCR12
            
             stm  #2000h,SPSD2	;    receive sign_extend in DRR;2000
            
             stm  #SPCR22,SPSA2        ; choose SPCR22
             
             stm  #0200h,SPSD2     ; 
             
             stm  #RCR12 ,SPSA2        ; choose RCR12
           
             stm  #0340h,SPSD2      ; 01a0h
           
             stm  #RCR22 ,SPSA2        ; choose RCR22
          
             stm  #0340h,SPSD2      ;00h
           
             stm  #XCR12,SPSA2        ; choose XCR12
           
             stm  #0340h,SPSD2      ; 32 bits each word
          
             stm  #XCR22,SPSA2        ; choose XCR22
          
             stm  #0340h,SPSD2
        
             stm  #SRGR12,SPSA2        ;  choose SRGR1
          
             stm  #1f00h,SPSD2          ; 32m/2   
           
             stm  #SRGR22,SPSA2        ; choose SRGR2
          
             stm  #2000h,SPSD2    ; Sample rate generator clock derived from CPU clock; 2000h  
                           
             stm  #PCR2,SPSA2      ; choose PCR2
        
             stm  #0003h,SPSD2    ; 0c03h
       
     
             rpt  #0ffh
             nop

             stm  #SPCR12,SPSA2 
            
             stm  #2001h,SPSD2	; enable recive !
             
            stm  #SPCR22,SPSA2
              
            stm  #0201h,SPSD2     ; enable transmit !
              
             RET     
;------ init serial port 2 end -----------------------------
;******************************************************************
; The following codes are used to initalize pcm3002 !
;******************************************************************
init_pcm3002:    
    ST   #09H,*(data_primary1) ;12KHZ
    PORTW   *(data_primary1), DSK5416_CODEC_CLK 
    NOP
    NOP
    ST   #00H,*(data_primary2) 
    PORTW   *(data_primary2), DSK5416_MISC 
    NOP
    NOP
    W_PCM3002  28H,01H
    CALL  TESTRDY
    W_PCM3002  28H,03H
    CALL  TESTRDY
    W_PCM3002  0a0H,04H 
    CALL  TESTRDY
    W_PCM3002 00H,06H
     RET
TESTRDY:PORTR  DSK5416_MISC, *(TEST_Bit)
        SUB B,B
        LD   *(TEST_Bit),B
        AND    #80H,B,B
        BC     TESTRDY,BNEQ
        RET
        .end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -