?? mcbsp_pcm3002.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 + -