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

📄 et83x432_codec.inc

📁 在台湾义统公司ET44M210开发实验板环境下
💻 INC
📖 第 1 页 / 共 2 页
字号:
	CodecCCLKP	EQU	PortF    	;C_CLK PORT
	CodecCCLK	EQU	3			;C_CLK----PORTF,3

	CodecADnP	EQU	PortA		;ADDRESS/DATA PORT
	CodecADn	EQU	3			;ADDRESS/DATA====PORTA,3
	
	CodecCSnP	EQU	PortA		;CHIP SELECT PORT
	CodecCSn	EQU	2			;CHIP SELECT====PORTA,2
	
	CodecRWnP	EQU	PortA		;READ/WRITE PORT
	CodecRWn	EQU	1			;READ/WRITE====PORTA,1

	CodecResetP	EQU	PortA		;432_RESET
	CodecReset	EQU	0			;432_RESET====PORTA,0
		
	CodecDataPortIO	EQU	IOCD	;I/O control PortD
	CodecDataPort	EQU	PortD	;DATA PORT====PORTD
	
	

LINE_IN_SET_AND_START:
		CALL	CODEC_INITIAL_AND_RESET
		CALL	StopCodecEncode
		CALL	CodecSetToEncode
		CALL	StartCodecEncode
RET
;*****************************************************************************************
PLAY_SET_AND_START:
		CALL	CODEC_INITIAL_AND_RESET
		CALL	StopCodecDecode
		CALL	CodecSetToDecode
		CALL	StartCodecDecode
RET
;*****************************************************************************************

		
CODEC_INITIAL_AND_RESET:
	BANK 0
	BS		CodecResetP,CodecReset	;RESET==1		
    BS		CodecRWnP,CodecRWn		;READ/WRITE==1		
	BS	    CodecADnP,CodecADn		;ADDRESS/DATA==1
    BS		CodecCSnP,CodecCSn     	;CHIP SETLECT==1

    CALL ResetCodec					;RESTE ET83X432
RET
;*****************************************************************************************
;*****************************************************************************************

ResetCodec:
	BC		CodecResetP,CodecReset		;Reset ET83X432
	Call	DELAY_3ms
	BS		CodecResetP,CodecReset		;Reset ET83X432
	Call	DELAY_3ms
	RET
RET
;*****************************************************************************************
;*****************************************************************************************
CodecSetToEncode:						;FOR RECORD MODE
		Mov		A,#0x08					;AUDIO FORMAT 2(AF2) M2SXXX XXCH DIR
		Mov		CodecAddress,A			;432 REGISTER #0X08==AF2(XXXX XXCH DIR)
		Mov		A,#0x00//02				;00-STEREO ENCODE 80-MONO DECODE WHEN CM=1 AND CH=1
		Mov		CodecData,A				;
		Call	Write_Codec_Data		;WRITE REGISTER AUDIO FORMAT 2
		
		Mov		A,#0x10					;AUDIO CONTROL 2(AC2) XXIADLS IADRS XX IDALS IDARS
		Mov		CodecAddress,A			;XXIADLS IADRS XX IDALS IDARS
		Mov		A,#0x00//33				;0==OFF 1==ON
		Mov		CodecData,A				;ALL OFF
		Call	Write_Codec_Data
		
		Mov		A,#0x50					;Internal ADDA CONTROL 0(IADDAC0)
		Mov		CodecAddress,A			;PCIDA PCIAD XX  RIM LIM RHM LHM
		Mov		A,#0xD0					;POWER CONTROL OF IDA  	 0==OFF 1==ON		   
		Mov		CodecData,A				;RIGHT_CHANNEL LINE IN MUTE  0==ON  1==MUTE
		Call	Write_Codec_Data		;RIGHT_CHANNEL HEADPHONE MUTE
		
		Mov		A,#0x52					;INTERNAL ADDA CONTROL 1(IADDAC1)
		Mov		CodecAddress,A			;DEMPH1 DEMPH0 INSEL BYP X MIXER MICM MICBG
		Mov		A,#0x10					;DE_EMPHASIS FILTER
		Mov		CodecData,A				;INSEL==INPUT INTERFACE SELECTION 0=LINE IN 1=MIC
		Call	Write_Codec_Data		;BYPASS MIXER_D&A_AUDION  MICPHONE BOOST GAIN
		

		/*MOV		A,#0X0D//44.1  48
		NOP
		Mov		D_57,A					;VARIABLE 432 REGISTER 0X0057==MAIN CLOCK MODE(MCM)
		BANK	0			*/			;XXXX MCKM[3:0] 1101==272x SAMPLING CLOCK.-->DEFAULT
		
		CALL	CodecSetSame			;CodecSetSame==THE SAMENESS BETWEEN ENCODE AND DECODE

RET
;*****************************************************************************************
;*****************************************************************************************
CodecSetToDecode:

		Mov		A,#0x08					;AUDIO FORMAT 2(AF2) M2SXXX XXCH DIR
		Mov		CodecAddress,A			;M2S AVAILABLE ONLY WHEN PLAYING MONO. SOUND(CM=1,CH=1)
		;BANK	1						;CH 0:1== STEREO:MONO.(ONLY L CHANNEL) 
		;Mov		A,D_08				;DIR DIRECTION OF CODEC 0:1== HALF DUPLEX:FULL DUPLEX
		;BANK	0
		MOV		A,#00
		Mov		CodecData,A
		Call	Write_Codec_Data
		
		Mov		A,#0x10					;AUDIO CONTROL 2(AC2) XXIADRS IADLS;XXIDARS IDALS
		Mov		CodecAddress,A			;INTERNAL AD R CHANNEL SELECT 0:1==OFF:ON
		Mov		A,#0x00
		Mov		CodecData,A
		Call	Write_Codec_Data
		
		Mov		A,#0x50					;INTERNAL ADDA CONTROL 0(IADDAC0)
		Mov		CodecAddress,A			;PCIDA PCIADXX LIM RIM LHM RHM
		Mov		A,#0x90					;POWER CONTROL OF IDA  		0==OFF 1==ON IDA ON
		Mov		CodecData,A				;LEFT_CHANNEL LINE IN MUTE  0==ON  1==MUTE
		Call	Write_Codec_Data		;LEFT_CHANNEL HEADPHONE MUTE0==ON  1==MUTE
		
		Mov		A,#0x52					;INTERNAL ADDA CONTROL 1(IADDAC1)
		Mov		CodecAddress,A			;DEMPH1 DEMPH0 INSEL BYP X MIXER MICM MICBG 
		Mov		A,#0x04					;DE_EMPHASIS 10==00 NO FILTER
		Mov		CodecData,A				;INSEL 0==LINE IN 1==MICPHONE
		Call	Write_Codec_Data		;BYPASS MIXER MIC MUTE MIC BOOST GAIN
		
		CALL	CodecSetSame
RET
;*****************************************************************************************
;*****************************************************************************************
CodecSetSame:	
;------------------------------------------------------------        
        ;DISABLE ALL INTERRUPT                          0x05
        ;32FS, EN-Left Justify, DE-Right Justify        0x07
        ;44.1KHz, Stereo, 16-BIT                        0x08
        ;Normal Quality, Factor3 --> 0                  0x09  
        ;Factor1 --> 0, Factor2 --> 0                   0x0A
        ;Factor0 --> 0                                  0x0B
        ;Left-CH GAIN  --> 0dB                          0x0C
        ;Right-CH GAIN --> 0dB                          0x0D
        ;DOWN-SAMPLE -->0, LPF OFF                      0x0E
;------------------------------------------------------------         
LOW_PASS_FILTER:						;LOW PASS FILTER
        MOV     A,#0x0E         		;AUDIO FORMAT 3(AF3)
        MOV     CodecAddress,A			;XLPF SR2[2:0] XXX
        MOV     A,#0b01000000  			;LOW PASS FILTER(CUT OFF THE HIGH FREQUENCY NOISE)
        MOV     CodecData,A				;  
		CALL    Write_Codec_Data		;BIT6==1 LPF ON

		Call	Read_Codec_Data			
		Xor		A,#0b01000000
		JBS		STATUS,Z,$+3			;ONE Period INSTRUCTION	
		JMP		LOW_PASS_FILTER

SET_MFS:								;SET IMFS(Interrupt Mask of FIFO Status) control 0x0004
		Mov		A,#0x05					;MSYNCX MMUTE MAFCSA MAFEF MMCBS MMFCS MMFEF
		Mov		CodecAddress,A
		Mov		A,#0x02//#0x00			;ENABLE MFCS__MAIN FIFO CAPACITY STATUS
		Mov		CodecData,A				;WHEN ENCODE BYTE COUNT-->48  DECODE BYTE COUNT-->16
		Call	Write_Codec_Data
	
	    CALL    Read_Codec_Data			
	    Xor		A,#0x02//#0x00
		JBS		STATUS,Z,$+3	
		JMP		SET_MFS
	
SET_AF1:								;SET AF1(AUDIO FORMAT 1)			
		Mov		A,#0x07					;DCLS DFS DLRPS DJMS ECLS EFS ELRPS EJMS
		Mov		CodecAddress,A			;Decode_Channel Length Select Encode_CLS 0==32B_CLK 1=64
		Mov		A,#0xAA//#0xBA			;Decode_FORMAT SELECT 	0==NORMAL  1==DELAYS ONE B_CLK
		Mov		CodecData,A				;Decode_LR Polarity Select 0==Left Channel low 1==High
		Call	Write_Codec_Data		;Decode_Justified Mode Select 0==left justified 1==right
	
	    CALL    Read_Codec_Data			;64B_CLK  ;NORMAL ;Left channel High ;left justified
	    Xor		A,#0XAA//#0xBA			
		JBS		STATUS,Z,$+3	
		JMP		SET_AF1
		
SET_QC1:								;SET QC1(Quality Control 1)
		Mov		A,#0x09					;QF1   XX QC X
		Mov		CodecAddress,A			;QUALITY OF FREQUENCY SUB_BAND 1
		;BANK	1						;QUALITY CONTROL 0==STANDARD QUALITY  H2 H3 H4 AND L4
		;Mov		A,D_09					;			1==High quality      H1 H2 H3 AND L3
		;BANK	0						;QF1:Highest frequency
		Mov		A,#0X00
		Mov		CodecData,A				;QF2:Middle high frequency
		Call	Write_Codec_Data		;QF3:Middle low  frequency
		CALL    Read_Codec_Data			;QF4:Lowest frequency

	    Xor		A,#0X00
		JBS		STATUS,Z,$+3	
		JMP		SET_QC1
	
SET_QC2:								;SET QC2(QUALITY CONTROL 2)
		Mov		A,#0x0A					;QF3 QF2
		Mov		CodecAddress,A			;
		Mov		A,#0x00	
		Mov		CodecData,A
		Call	Write_Codec_Data
		CALL    Read_Codec_Data
		
	    Xor		A,#0x00
		JBS		STATUS,Z,$+3	
		JMP		SET_QC2
		
SET_QC3:						;SET QC3(QUALITY CONTROL 3)					
		Mov		A,#0x0B
		Mov		CodecAddress,A			;xxxx QF4
		
		Mov		A,#0x00	
		Mov		CodecData,A
		
		Call	Write_Codec_Data
		CALL    Read_Codec_Data
		
	    Xor		A,#0x00//D_0B
		JBS		STATUS,Z,$+3	
		JMP		SET_QC3
	
SET_DGC1:								;DGC1(Digital Gain Control 1)
		Mov		A,#0x0C					;xx DGC1   1-63(-47dB~+15dB,1dB Step)
		Mov		CodecAddress,A			;0==digital mute
		;BANK	1						;1==-47dB,2==-46dB......
		Mov		A,#48//D_0C					;48=0dB
		;BANK	0						;49=1dB,50=2dB......
		Mov		CodecData,A
		Call	Write_Codec_Data
		
		Mov		A,#0x0D					;DGC2(Digital gain control 2)
		Mov		CodecAddress,A			;xx DGC2   1-63(-47dB~+15dB,1dB Step)
		;BANK	1						;0==digital mute
		Mov		A,#48//D_0D					;1==-47dB,2==-46dB......
		;BANK	0						;48=0dB
		Mov		CodecData,A				;49=1dB,50=2dB......
		Call	Write_Codec_Data
		
SET_AC1:								;AC1(AUDIO CONTROL 1) CONTROL PLAYBACK SPEED
		Mov		A,#0x0F					;XXXX XX PSC1 PSC0
		Mov		CodecAddress,A			;Playback speed control
		;BANK	1						;PSC=0:NORMAL SPEED
		;NOP							;PSC=1:2 Times
		MOV		A,#00//D_0F				;PSC=2:0.5 Times
		;BANK	0						;PSC=3:NA
		Mov		CodecData,A				;#00==normal speed
		Call	Write_Codec_Data
		CALL    Read_Codec_Data
		;BANK	1
		;NOP
	    Xor		A,#00//D_0F
	    ;BANK	0
		JBS		STATUS,Z,$+3	
		JMP		SET_AC1
		
SET_AC2:								;SET AC2

        MOV     A,#0x10					;AUDIO CONTROL 2(AC2)
        MOV     CodecAddress,A			;XXIADLS IADRS XX IDALS IDARS
        MOV     A,#0b00000000   ;D_10   ;INTERNAL ADDA OFF AND USE External ADDA
        MOV     CodecData,A
		CALL    Write_Codec_Data

		Call	Read_Codec_Data
		Xor		A,#0b00000000
		JBS		STATUS,Z,$+3	
		JMP		SET_AC2
		
SET_LIGCL:
		Mov		A,#0x53					;LIGCL(LINE IN Gain Control Left-Channel)
		Mov		CodecAddress,A			;xxxLIG4 LIG3 LIG2 LIG1 LIG0
		Mov		A,#0x17					;11111(12dB)~00000(-34.5dB) In 1.5dB STEPS
		Mov		CodecData,A				;0DB
		Call	Write_Codec_Data
		CALL    Read_Codec_Data
		Xor		A,#0x17				
		JBS		STATUS,Z,$+3	
		JMP		SET_LIGCL
		
SET_LIGCR:
		Mov		A,#0x54					;LIGCR(LINE IN GAIN CONTROL RIGHT-CHANNEL)
		Mov		CodecAddress,A			;XXXRIG4 RIG3 RIG2 RIG1 RIG0
		Mov		A,#0x17					;11111(12dB)~00000(-34.5dB) IN 1.5dB STEPS
		Mov		CodecData,A
		Call	Write_Codec_Data
		CALL    Read_Codec_Data
		Xor		A,#0x17
		JBS		STATUS,Z,$+3	
		JMP		SET_LIGCR
		
SET_HPGCL:
		Mov		A,#0X55					;HPGCL(HEADPHONE GAIN CONTROL LEFT-CHANNEL)
		Mov		CodecAddress,A			;XLHG6 LHG5 LHG4 LHG3 LHG2 LHG1 LHG0
										;x111 1111(6dB)~x000 0000(-74)
		
		Mov		A,#0X74//D_55//#0x00	;0DB
		Mov		CodecData,A
		Call	Write_Codec_Data
		CALL    Read_Codec_Data
		Xor		A,#0X74
		JBS		STATUS,Z,$+3	
		JMP		SET_HPGCL
		
SET_HPGCR:
		Mov		A,#0X56					;HPGCR(HEADPHONE GAIN CONTROL LEFT-CHANNEL)
		Mov		CodecAddress,A			;XLHG6 LHG5 LHG4 LHG3 LHG2 LHG1 LHG0
										;x111 1111(6dB)~x000 0000(-74)
		
		Mov		A,#0X74//D_56//#0x00	;0DB
		Mov		CodecData,A
		Call	Write_Codec_Data
		
		CALL    Read_Codec_Data
		Xor		A,#0X74
		JBS		STATUS,Z,$+3	
		JMP		SET_HPGCR
		
SET_MCM:								;MAIN CLOCK MODE(MCM)		
		Mov		A,#0x57					;XXXX MCKM3 MCKM2 MCKM1 MCKM0
		Mov		CodecAddress,A			;#OX0D=1101  DEFAULT
		Mov		A,#0X0D//D_57//#0x0F	;256X
		Mov		CodecData,A
		Call	Write_Codec_Data
			
		CALL    Read_Codec_Data
	    Xor		A,#0X0D
		JBS		STATUS,Z,$+3	
		JMP		SET_MCM

LPF_Parameters_Table:					;LPF Parameters Table
	Mov		A,#0x20						;
	Mov		CodecAddress,A
	Mov		A,#0x80						;this parameter is not changed by user
	Mov		CodecData,A
	Call	Write_Codec_Data
	
	Mov		A,#0x21						;LPF Parameters Table
	Mov		CodecAddress,A
	Mov		A,#0xFF
	Mov		CodecData,A
	Call	Write_Codec_Data
	
	Mov		A,#0x22						;LPF Parameters Table
	Mov		CodecAddress,A
	Mov		A,#0x83
	Mov		CodecData,A
	Call	Write_Codec_Data
	
	Mov		A,#0x23						;LPF Parameters Table
	Mov		CodecAddress,A
	Mov		A,#0x01
	Mov		CodecData,A
	Call	Write_Codec_Data
	
	Mov		A,#0x24						;LPF Parameters Table
	Mov		CodecAddress,A
	Mov		A,#0x82

⌨️ 快捷键说明

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