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

📄 dsp_init.s54

📁 c5x中关于codec的实验
💻 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 + -