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

📄 iis_dual.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00087c  e5902000          LDR      r2,[r0,#0]  ; indexRecBuf
000880  e5801000          STR      r1,[r0,#0]  ; indexRecBuf
000884  e3a0007d          MOV      r0,#0x7d
000888  e0010290          MUL      r1,r0,r2
00088c  e51f061c          LDR      r0,|L1.632|
000890  e5900000          LDR      r0,[r0,#0]  ; recBuf
000894  e0800201          ADD      r0,r0,r1,LSL #4
000898  e51f1380          LDR      r1,|L1.1312|
00089c  e5810008          STR      r0,[r1,#8]
;;;421        	if(indexRecBuf==MAX_INDEX_AUDIO_BUF)
0008a0  e51f038c          LDR      r0,|L1.1308|
0008a4  e5900000          LDR      r0,[r0,#0]  ; indexRecBuf
0008a8  e35000c8          CMP      r0,#0xc8
0008ac  1a000002          BNE      |L1.2236|
;;;422        	{
;;;423        	    indexRecBuf=0;
0008b0  e3a00000          MOV      r0,#0
0008b4  e51f13a0          LDR      r1,|L1.1308|
0008b8  e5810000          STR      r0,[r1,#0]  ; indexRecBuf
;;;424        	}
;;;425        	if((indexRecBuf%10)==0)
                  |L1.2236|
0008bc  e51f03a8          LDR      r0,|L1.1308|
0008c0  e5901000          LDR      r1,[r0,#0]  ; indexRecBuf
0008c4  e3a0000a          MOV      r0,#0xa
0008c8  ebfffffe          BL       __rt_sdiv
0008cc  e3510000          CMP      r1,#0
0008d0  1a00000a          BNE      |L1.2304|
;;;426        	{
;;;427        	    if(indexRecBuf==0)WrUTXH0(':');
0008d4  e51f03c0          LDR      r0,|L1.1308|
0008d8  e5900000          LDR      r0,[r0,#0]  ; indexRecBuf
0008dc  e3500000          CMP      r0,#0
0008e0  1a000003          BNE      |L1.2292|
0008e4  e3a0003a          MOV      r0,#0x3a
0008e8  e51f1148          LDR      r1,|L1.1960|
0008ec  e5c10020          STRB     r0,[r1,#0x20]
0008f0  ea000002          B        |L1.2304|
;;;428        	    else WrUTXH0('.');
                  |L1.2292|
0008f4  e3a0002e          MOV      r0,#0x2e
0008f8  e51f1158          LDR      r1,|L1.1960|
0008fc  e5c10020          STRB     r0,[r1,#0x20]
;;;429        	}
;;;430        }
;;;431        
;;;432    }
                  |L1.2304|
000900  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.2308|
000904  44700000          DCD      0x44700000
                  |L1.2312|
000908  4f525245          DCB      "ERRO"
00090c  44203a52          DCB      "R: D"
000910  2030414d          DCB      "MA0 "
000914  706f7453          DCB      "Stop"
000918  6d697420          DCB      " tim"
00091c  6f206465          DCB      "ed o"
000920  000a7475          DCB      "ut\n\0"
                          ENDP

                  IsrAudioInOut PROC
;;;439    void __irq IsrAudioInOut(void)
;;;440    {
000924  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;441        rINTSUBMSK|=(BIT_SUB_DMA0|BIT_SUB_DMA2);
000928  e51f090c          LDR      r0,|L1.36|
00092c  e590001c          LDR      r0,[r0,#0x1c]
000930  e38006a0          ORR      r0,r0,#0xa000000
000934  e51f1918          LDR      r1,|L1.36|
000938  e581001c          STR      r0,[r1,#0x1c]
;;;442        if(rSUBSRCPND&BIT_SUB_DMA0) __sub_IsrAudioIn();
00093c  e1a00001          MOV      r0,r1
000940  e5900018          LDR      r0,[r0,#0x18]
000944  e3100780          TST      r0,#0x2000000
000948  0a000001          BEQ      |L1.2388|
00094c  ebfffffe          BL       __sub_IsrAudioIn
000950  ea000000          B        |L1.2392|
;;;443        else __sub_IsrAudioOut();
                  |L1.2388|
000954  ebfffffe          BL       __sub_IsrAudioOut
;;;444        ClearPending(BIT_DMA); 
                  |L1.2392|
000958  e3a00940          MOV      r0,#0x100000
00095c  e51f1940          LDR      r1,|L1.36|
000960  e5810000          STR      r0,[r1,#0]
000964  e1c10000          BIC      r0,r1,r0
000968  e5900010          LDR      r0,[r0,#0x10]
00096c  e5810010          STR      r0,[r1,#0x10]
000970  e1a00001          MOV      r0,r1
000974  e5900010          LDR      r0,[r0,#0x10]
;;;445        rSUBSRCPND=(BIT_SUB_DMA0|BIT_SUB_DMA2);	// Clear Sub int pending    
000978  e3a006a0          MOV      r0,#0xa000000
00097c  e1c11000          BIC      r1,r1,r0
000980  e5810018          STR      r0,[r1,#0x18]
;;;446        rINTSUBMSK&=~(BIT_SUB_DMA0|BIT_SUB_DMA2);    
000984  e1c10000          BIC      r0,r1,r0
000988  e590001c          LDR      r0,[r0,#0x1c]
00098c  e3c006a0          BIC      r0,r0,#0xa000000
000990  e581001c          STR      r0,[r1,#0x1c]
;;;447    }
000994  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000998  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  AudioInit PROC
;;;210    void AudioInit(void)
;;;211    {
00099c  e3a00004          MOV      r0,#4
;;;212        //DMA0 for AudioIn
;;;213        rDMASKTRIG0 = (1<<2);  	//Dma0Stop
0009a0  e51f1488          LDR      r1,|L1.1312|
0009a4  e5810020          STR      r0,[r1,#0x20]
;;;214    
;;;215        //DMA2 for AudioOut
;;;216        rDMASKTRIG2 = (1<<2);	//Dma2Stop 
0009a8  e3a00004          MOV      r0,#4
0009ac  e1811980          ORR      r1,r1,r0,LSL #19
0009b0  e5810020          STR      r0,[r1,#0x20]
;;;217    
;;;218        //IIS
;;;219        rIISCON=(1<<5)|(1<<4)|(1<<1);
0009b4  e3a00032          MOV      r0,#0x32
0009b8  e2811641          ADD      r1,r1,#0x4100000
0009bc  e5810000          STR      r0,[r1,#0]
;;;220            //TxDMAReqEn,RxDMAReqEn,IISPrescalerEn    
;;;221        rIISMOD=(0<<8)|(3<<6)|(0<<4)|(1<<3)|(0<<2)|(1<<0);
0009c0  e3a000c9          MOV      r0,#0xc9
0009c4  e1c11000          BIC      r1,r1,r0
0009c8  e5810004          STR      r0,[r1,#4]
;;;222            //Master,Tx&Rx,IisFormat,16bit,256fs,32fs
;;;223    
;;;224        rIISPSR = (7<<5) + 7;   
0009cc  e3a000e7          MOV      r0,#0xe7
0009d0  e1c11000          BIC      r1,r1,r0
0009d4  e5810008          STR      r0,[r1,#8]
;;;225        //Prescaler A,B=7 <- (PCLK = 45MHz)/8 = 5.625MHz    
;;;226    	
;;;227        rIISFCON=(1<<15)|(1<<14)|(1<<13)|(0<<12);
0009d8  e3a00ce0          MOV      r0,#0xe000
0009dc  e1c11000          BIC      r1,r1,r0
0009e0  e581000c          STR      r0,[r1,#0xc]
;;;228        	//TxFifo=DMA,RxFifo=DMA,TxFifoEn,RxFifoDis
;;;229        rIISCON|=(1<<0);
0009e4  e1c10000          BIC      r0,r1,r0
0009e8  e5900000          LDR      r0,[r0,#0]
0009ec  e3800001          ORR      r0,r0,#1
0009f0  e5810000          STR      r0,[r1,#0]
;;;230            //IIS Enable;
;;;231            //IIS will not start because DMA is not ready.
;;;232    }
0009f4  e12fff1e          BX       lr
                          ENDP

                  Init1341RecPlay PROC
;;;497    void Init1341RecPlay(void)
;;;498    {
0009f8  e92d4008          STMFD    sp!,{r3,lr}
;;;499    /*
;;;500        //Port Initialize
;;;501        //----------------------------------------------------------
;;;502        //   PORT B GROUP
;;;503        //Ports  :   GPB4    GPB3   GPB2  
;;;504        //Signal :  L3CLOCK L3DATA L3MODE
;;;505        //Setting:   OUTPUT OUTPUT OUTPUT 
;;;506        //           [9:8]   [7:6}  [5:4]
;;;507        //Binary :     01  ,   01    01 
;;;508        //----------------------------------------------------------    
;;;509        rGPBDAT = rGPBDAT & ~(L3M|L3C|L3D) |(L3M|L3C); //Start condition : L3M=H, L3C=H
;;;510        rGPBUP  = rGPBUP  & ~(0x7<<2) |(0x7<<2);       //The pull up function is disabled GPB[4:2] 1 1100    
;;;511        rGPBCON = rGPBCON & ~(0x3f<<4) |(0x15<<4);     //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)
;;;512    */
;;;513    		//Port Initialize for 24A0X
;;;514    	//----------------------------------------------------------
;;;515    	//	 GPCON_M GROUP
;;;516    	//Ports  :	 GP18	 GP17	GP16  
;;;517    	//Signal :	L3MODE L3CLOCK L3DATA
;;;518    	//Setting:	 OUTPUT OUTPUT OUTPUT 
;;;519    	//			 [15:14]   [13:12]	[11:10]
;;;520    	//Binary :	   01  ,   01	 01 
;;;521    	//----------------------------------------------------------	
;;;522    		rGPDAT = rGPDAT & ~(L3M|L3C|L3D) |(L3M|L3C); //Start condition : L3M=H, L3C=H
0009fc  e59f0304          LDR      r0,|L1.3336|
000a00  e590000c          LDR      r0,[r0,#0xc]
000a04  e3c00a70          BIC      r0,r0,#0x70000
000a08  e3800a60          ORR      r0,r0,#0x60000
000a0c  e59f12f4          LDR      r1,|L1.3336|
000a10  e581000c          STR      r0,[r1,#0xc]
;;;523    		rGPPU  = rGPPU	& ~(0x7<<15) |(0x7<<15);	   //The pull up function is disabled GPUP[17:15] 0011 1000 0000 0000 0000	  
000a14  e1a00001          MOV      r0,r1
000a18  e5900010          LDR      r0,[r0,#0x10]
000a1c  e3800be0          ORR      r0,r0,#0x38000
000a20  e5810010          STR      r0,[r1,#0x10]
;;;524    		rGPCON_M = rGPCON_M & ~(0x3f<<8) |(0x15<<8);	   //GPCON_M[13:8]=Output(L3MODE):Output(L3CLOCK):Output(L3DATA)
000a24  e1a00001          MOV      r0,r1
000a28  e5900004          LDR      r0,[r0,#4]
000a2c  e3c00dfc          BIC      r0,r0,#0x3f00
000a30  e3800d54          ORR      r0,r0,#0x1500
000a34  e5810004          STR      r0,[r1,#4]
;;;525    
;;;526    
;;;527        //L3 Interface
;;;528        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
000a38  e3a00016          MOV      r0,#0x16
000a3c  ebfffffe          BL       _WrL3Addr
;;;529        _WrL3Data(0x60,0);       //0,1,10,000,0 : Reset,256fs,no DCfilter,iis
000a40  e3a01000          MOV      r1,#0
000a44  e3a00060          MOV      r0,#0x60
000a48  ebfffffe          BL       _WrL3Data
;;;530    
;;;531        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
000a4c  e3a00016          MOV      r0,#0x16
000a50  ebfffffe          BL       _WrL3Addr
;;;532        _WrL3Data(0x20,0);       //0,0,10,000,0 : No reset,256fs,no DCfilter,iis
000a54  e3a01000          MOV      r1,#0
000a58  e3a00020          MOV      r0,#0x20
000a5c  ebfffffe          BL       _WrL3Data
;;;533        
;;;534    /*    
;;;535        //play
;;;536        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
;;;537        _WrL3Data(0x81,0);       //1,0,0,0,0,0,01 : OGS=0,IGS=0,ADC_NI,DAC_NI,sngl speed,AoffDon
;;;538            
;;;539        //record
;;;540        if(mode)
;;;541        {
;;;542            _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
;;;543            _WrL3Data(0xa2,0);       //1,0,1,0,0,0,10 : OGS=0,IGS=1,ADC_NI,DAC_NI,sngl speed,AonDoff
;;;544    
;;;545            _WrL3Addr(0x14 + 0);     //DATA0 (000101xx+00)
;;;546            _WrL3Data(0xc2,0);       //11000,010  : DATA0, Extended addr(010) 
;;;547            _WrL3Data(0x4d,0);       //010,011,01 : DATA0, MS=9dB, Ch1=on Ch2=off, 
;;;548        }
;;;549    */
;;;550        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
000a60  e3a00016          MOV      r0,#0x16
000a64  ebfffffe          BL       _WrL3Addr
;;;551        _WrL3Data(0xa3,0);       //1,0,1,0,0,0,11 : OGS=0,IGS=1,ADC_NI,DAC_NI,sngl speed,AonDon
000a68  e3a01000          MOV      r1,#0
000a6c  e3a000a3          MOV      r0,#0xa3
000a70  ebfffffe          BL       _WrL3Data
;;;552    
;;;553        _WrL3Addr(0x14 + 0);     //DATA0 (000101xx+00)
000a74  e3a00014          MOV      r0,#0x14
000a78  ebfffffe          BL       _WrL3Addr
;;;554        _WrL3Data(0xc2,0);       //11000,010  : DATA0, Extended addr(010) 
000a7c  e3a01000          MOV      r1,#0
000a80  e3a000c2          MOV      r0,#0xc2
000a84  ebfffffe          BL       _WrL3Data
;;;555        _WrL3Data(0x4d,0);       //010,011,01 : DATA0, MS=9dB, Ch1=on Ch2=off, 
000a88  e3a01000          MOV      r1,#0
000a8c  e3a0004d          MOV      r0,#0x4d
000a90  ebfffffe          BL       _WrL3Data
;;;556    }
000a94  e8bd8008          LDMFD    sp!,{r3,pc}
                          ENDP

                  Test_IisRecPlay PROC
;;;58     void Test_IisRecPlay(void)
;;;59     {
000a98  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;60     	
;;;61         int i;
;;;62         int ranPlay=FALSE;
000a9c  e3a04000          MOV      r4,#0
;;;63         char key;
;;;64         
;;;65         srand(0);
000aa0  e3a00000          MOV      r0,#0
000aa4  ebfffffe          BL       srand
;;;66     
;;;67         Uart_Printf("[ IIS (Master Mode,Rec&Play) Test(UDA1341) ]\n");
000aa8  e28f0f97          ADR      r0,|L1.3340|
000aac  ebfffffe          BL       _printf
;;;68         Uart_TxEmpty(0);
000ab0  e3a00000          MOV      r0,#0
000ab4  ebfffffe          BL       Uart_TxEmpty
;;;69         ChangeMPllValue(82,4,1);  //FCLK=90.316800MHz, PCLK=45.158400MHz <-- 5.644800MHz*8
000ab8  e3a02001          MOV      r2,#1
000abc  e3a01004          MOV      r1,#4
000ac0  e3a00052          MOV      r0,#0x52
000ac4  ebfffffe          BL       ChangeMPllValue
;;;70         ChangeClockDivider(0,1);		  // 1:1:2    
000ac8  e3a01001          MOV      r1,#1
000acc  e3a00000          MOV      r0,#0
000ad0  ebfffffe          BL       ChangeClockDivider
;;;71         ChangeSdramParameter(HCLK);   
000ad4  e59f0260          LDR      r0,|L1.3388|
000ad8  ebfffffe          BL       ChangeSdramParameter
;;;72         Uart_Init(45158400,115200);
000adc  e59f125c          LDR      r1,|L1.3392|
000ae0  e59f025c          LDR      r0,|L1.3396|
000ae4  ebfffffe          BL       Uart_Init

⌨️ 快捷键说明

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