📄 dsp_init.s54
字号:
;******************************************************************************
; SJTU DSP Tech. Center
; Copyright (c) 2002 SJTU DSP Tech. Center. All Rights Reserved.
; History:
; Date Authors Changes
; 2003/08/30 Fu Xuan Created.
;******************************************************************************
.mmregs
.def DSPInit
.ref codec_init
.ref DATA_STORE_SIZE
.ref INPUT_PINGPONG_0
.ref INPUT_PINGPONG_1
.ref OUTPUT_PINGPONG_0
.include "dsp_cnst.h54"
.include "codec_cnst.h54"
.include "macro.h54"
.text
;******************************************************************************
;** Function: DSPInit()
;** Description: DSP initialization
;******************************************************************************
DSPInit:
;set register ST1 to initialize DSP
; bit: 15 14 13 12 11 10 9 8 7 6 5 4-0
; | BRAF | CPL | XF | HM | INTM | 0 | OVM | SXM | C16 | FRCT | CMPT | ASM |
; x 1 x x 1 0 1 0 0 1 0 xxxxx
ssbx INTM ;close interrupt first
ssbx CPL
rsbx SXM
rsbx C16
rsbx CMPT
ssbx FRCT
ssbx OVM
;set register PMST
; bit: 15-7 6 5 4 3 2 1 0
; | IPTR | MP/MC | OVLY | AVIS | DROM | CLKOFF | SMUL | SST |
; xxxx 1 1 0 x x 0 0
;PMST (IPTR=0x1, /MC=1, OVLY=1, SMUL=0, SST=0)
stm #0x00E0, PMST
;set register SWWSR
stm #0x7000, SWWSR
;let 3 LEDs shine for a while, then shut
LEDS_CHECK CNTL1
;-------------- McBSP 1------------------------
;disable McBSP before initialization
McBSP1_DISABLE AR3
;initialize registers
stm #MCBSP1_CNST, AR2
stm #SPSA1, AR3
stm #(15-1), BRC
rptb MCBSP1_loop-1
ld *AR2+, A
stl A, *AR3+
ld *AR2+, A
stl A, *AR3-
MCBSP1_loop:
;-------------- DMA ---------------------------
;set DMA0, DMA4 high priority, 中断复用INTOSEL=10b(DMA1,2,3), close all other DMA
stm #0x1180, DMPREC
stm #DMA_CNST, AR3
stm #0, DMSA
stm #DMSDI, AR2 ;带地址自动增加得子区访问寄存器
rpt #40-1
mvdd *AR3+, *AR2
;--------------Board Setting ------------------
;select codec as McBSP1 signal resource
ld #0x0000, A
portw *(AL), CNTL2
;codec initialization
call codec_init
ret
;end of DSPInit
;============================================================
.sect "DSPIni_table"
MCBSP1_CNST: ;应用和设计P133
.word 0 ;sub address==SPCR11
.word 0x4000 ;SPCR11
;DLB=0, RJUST=10, CLKSTP=00, DXENA=0, ABIS=0, RINTM=00(RINT由RRDY驱动)
;RSYNCERR=0, /RRST=0
.word 1 ;sub address==SPCR21
.word 0x0100 ;SPCR21
;FREE=0, SOFT=1, /FRST=0, /GRST=0, XINTM=00, XSYNCERR=0
;/XRST=0
.word 2 ;sub address==RCR11
.word 0x0040 ;RCR11
;RFRLEN1=000 0000 (1 word per frame), RWDLEN1=010 (16 bits per word)
.word 3 ;sub address==RCR21
.word 0x0000 ;RCR21
;RPHASE=0, RCOMPAND=00, RFIG=0, RDATDLY=00
.word 4 ;sub address==XCR11
.word 0x0040 ;XCR11
;XFRLEN1=000 0000 (1 word per frame), XWDLEN1=010 (16 bits per word)
.word 5 ;sub address==XCR21
.word 0x0000 ;XCR21
;XPHASE=0, XCOMPAND=00, XFIG=0, XDATDLY=00
.word 6 ;sub address==SRGR11
.word 0x0000 ;SRGR11
.word 7 ;sub address==SRGR21
.word 0x0000 ;SRGR21
.word 8 ;sub address==MCR10
.word 0 ;MCR11
;RMCM=0
.word 9 ;sub address==MCR21
.word 0 ;MCR21
;XMCM=00
.word 10 ;sub address==RCERA1
.word 0 ;RCERA1
.word 11 ;sub address==RCERB1
.word 0 ;RCERB1
.word 12 ;sub address==XCERA1
.word 0 ;XCERA1
.word 13 ;sub address==XCERB1
.word 0 ;XCERB1
.word 14 ;sub address==PCR1
.word 0x000C ;XIOEN=RIOEN=0(串行口引脚工作), FSXM=FSRM=0(输入脚,外部驱动), CLKXM=CLKRM=0(输入脚,外部驱动)
;FSXP=FSRP=1(脉冲低有效), CLKXP=CLKRP=0(上升沿采样)
DMA_CNST: ;应用和设计P151
;DMA0 For McBSP1 receive
.word DRR11 ;DMSRC0 通道0源地址McBSP1 Receiver Register
.word INPUT_PINGPONG_0 ;DMDST0 通道0目的地址
.word DATA_STORE_SIZE-1 ;DMCTR0 元素数目-1
.word 0x5000 ;DMSFC0
;DSYN=0101(同步事件为McBSP1接收事件), DBLW=0(单字模式), Frame Count=1-1
.word 0xE045 ;DMMCR0
;AUTOINIT=1(自动初始化), DINM=1, IMOD=1(帧结束中断),
;CTMOD=0(多帧模式), SIND=000(不修改源地址), DMS=01(数据空间),
;DIND=001(目的地址加1), DMD=01(数据空间)
.word 0 ;DMSRC1
.word 0 ;DMDST1
.word 0 ;DMCTR1
.word 0 ;DMSFC1
.word 0 ;DMMCR1
.word 0 ;DMSRC2
.word 0 ;DMDST2
.word 0 ;DMCTR2
.word 0 ;DMSFC2
.word 0 ;DMMCR2
.word 0 ;DMSRC3
.word 0 ;DMDST3
.word 0 ;DMCTR3
.word 0 ;DMSFC3
.word 0 ;DMMCR3
.word OUTPUT_PINGPONG_0 ;DMSRC4 通道1源地址OUTPUT_PINGPONG_0
.word DXR11 ;DMDST4 通道1目的地址McBSP1的发送寄存器
.word DATA_STORE_SIZE-1 ;DMCTR4 元素数目-1
.word 0x6000 ;DMSFC4
;DSYN=0110(同步事件为McBSP1发送事件), DBLW=0(单字模式), Frame Count=1-1
.word 0x5141 ;DMMCR4
;AUTOINIT=0(不自动初始化), DINM=1, IMOD=0(缓冲区满中断),
;CTMOD=1(ABU模式), SIND=001(源地址+1), DMS=01(数据空间),
;DIND=000(不修改目的地址), DMD=01(数据空间)
.word 0 ;DMSRC5
.word 0 ;DMDST5
.word 0 ;DMCTR5
.word 0 ;DMSFC5
.word 0 ;DMMCR5
.word 0 ;DMSRCP, no extended addressing
.word 0 ;DMDSTP, no extended addressing
.word 0 ;DMIDX0
.word 0 ;DMIDX1
.word 0 ;DMFRI0
.word 0 ;DMFRI1
.word DRR11 ;DMGSA(重载源地址)
.word INPUT_PINGPONG_0 ;DMGDA(重载目的地址)
.word DATA_STORE_SIZE-1 ;DMGCR(重载元素数目-1)
.word 0 ;DMGFR(重载帧数目-1)
;end of dsp_init.s54
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -