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

📄 codec.asm

📁 数字信号处理实验环节(开发环境用CCS2.2)Add-on Laboratory for DSP课程说明:数字信号处理实验环节是由清华大学研究生公共课程《数字信号处理》的因材施教实验环节。该环节的主要
💻 ASM
字号:

		.title "Codec&McBSP2 Init"
		.mmregs
		.def codecinit


;CPLD registers 
CPLD_CODEC_REG_L   	.set 2H    		
CPLD_CODEC_REG_H 	.set 3H       
CPLD_MISC_REG		.set 6H
CODEC_READY_Bit		.set 8H
MCBSP2_SELECT		.set 0H

CPLD_CODEC_CLK_REG	.set 7H
SAMPLE_RATE_6K		.set 0BH
SAMPLE_RATE_12K		.set 09H
SAMPLE_RATE_24K		.set 8H

;PCM3002 registers
; Reg 0 - Left Channel DAC attenuation = 0dB
CODEC_REG0_L   		.set 0FFH      ; Reg 0 - Low
CODEC_REG0_H   		.set 01H       ; Reg 0 - High
; Reg 1 - Right Channel DAC attenuation = 0dB
CODEC_REG1_L    	.set 0FFH	   
CODEC_REG1_H   		.set 03H       
; Reg 2 - Various ctl e.g. power-down modes 
CODEC_REG2_L    	.set 0H    		
CODEC_REG2_H   		.set 04H       
;Set-Up Register 3 set-up codec for format 0
;i.e.    DAC -> 16-bit, MSB first, left justified in 32-bit words. 
;        ADC -> 16-bit, MSB first, right justified in 32-bit words.
;        This allows us to pack L, R samples into 1 codec 'packet' 
;    	 consisting of 2 32-bit words per phrame. */			   
CODEC_REG3_L   		.set 0H   
CODEC_REG3_H   		.set 06H       

;McBSP2 registers
SPSA2 				.set 34H
SPSD2 				.set 35H
   
 
		.text 
;function codecinit
codecinit:
		;push registers to stack
		PSHM ST1				;ST1: CPL, INTM      
		PSHM AR1
		
		SSBX INTM				;disable interrupts
		FRAME #-1
		
		MVMM SP,AR1				;ar1 point to SP
		 
		; select McBSP2
		ST #MCBSP2_SELECT, *AR1
		PORTW *AR1, CPLD_MISC_REG
		
		;set codec sample rate
		ST #SAMPLE_RATE_12K,*AR1
		PORTW *AR1,CPLD_CODEC_CLK_REG        
		      
		;init Codec Registers
		ST #CODEC_REG0_L,*AR1        
		PORTW *AR1,CPLD_CODEC_REG_L
		ST #CODEC_REG0_H,*AR1
		PORTW *AR1,CPLD_CODEC_REG_H
		CALL POLLRDY
		ST #CODEC_REG1_L,*AR1
		PORTW *AR1,CPLD_CODEC_REG_L
		ST #CODEC_REG1_H,*AR1
		PORTW *AR1,CPLD_CODEC_REG_H
		CALL POLLRDY
		ST #CODEC_REG2_L,*AR1
		PORTW *AR1,CPLD_CODEC_REG_L
		ST #CODEC_REG2_H,*AR1
		PORTW *AR1,CPLD_CODEC_REG_H
		CALL POLLRDY
		ST #CODEC_REG3_L,*AR1
		PORTW *AR1,CPLD_CODEC_REG_L
		ST #CODEC_REG3_H,*AR1
		PORTW *AR1,CPLD_CODEC_REG_H
		CALL POLLRDY
      
		;init MCBSP2
		STM #0,SPSA2         
		STM #0000H,SPSD2     ;SPCR1
		STM #1,SPSA2
		STM #0000H,SPSD2     ;SPCR2
		
		STM #6,SPSA2
		STM #1F00H,SPSD2     ;SRGR1
		STM #7,SPSA2
		STM #0H,SPSD2  		 ;SRGR2
		nop
		nop
		
		STM #2,SPSA2
		STM #01A0H,SPSD2     ;RCR1
		STM #3,SPSA2
		STM #0000H,SPSD2     ;RCR2
		STM #4,SPSA2
		STM #01A0H,SPSD2     ;XCR1
		STM #5,SPSA2
		STM #0000H,SPSD2     ;XCR2
		STM #0EH,SPSA2      
		STM #0083H,SPSD2     ;PCR
		nop
		nop
		nop
		nop
		STM #0,SPSA2
		STM #0001H,SPSD2    ;允许接收
		STM #1,SPSA2
		STM #0001H,SPSD2    ;允许发送
	
	    FRAME #1
		POPM AR1				;pop registers from stack      
		POPM ST1				;pop registers from stack      
		RET    
      


;poll if codec command transfer ready 

POLLRDY
		PSHM AR2
	    FRAME #-1
		MVMM SP,AR2
WAIT:   PORTR CPLD_MISC_REG,*AR2      
        BIT *AR2,CODEC_READY_Bit
        BC WAIT,TC
	    FRAME #1
		POPM AR2
        RET


		.end

⌨️ 快捷键说明

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