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

📄 iis_dual.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                  |L1.2192|
000890  e3540ffa          CMP      r4,#0x3e8
000894  ba000001          BLT      |L1.2208|
;;;415          	    Uart_Printf("ERROR: DMA1 Stop timed out\n");
000898  e28f00cc          ADR      r0,|L1.2412|
00089c  ebfffffe          BL       Uart_Printf
;;;416    
;;;417        	rDMASKTRIG1 &= ~(1<<2); //not needed.... remove!!!
                  |L1.2208|
0008a0  e3a0044b          MOV      r0,#0x4b000000
0008a4  e5900060          LDR      r0,[r0,#0x60]
0008a8  e3c00004          BIC      r0,r0,#4
0008ac  e3a0144b          MOV      r1,#0x4b000000
0008b0  e5810060          STR      r0,[r1,#0x60]
;;;418    
;;;419        	audioInActive=FALSE;
0008b4  e3a00000          MOV      r0,#0
0008b8  e51f1678          LDR      r1,|L1.584|
0008bc  e5810000          STR      r0,[r1,#0]  ; audioInActive
;;;420        	Uart_Printf("[RE]");
0008c0  e28f00c0          ADR      r0,|L1.2442|
0008c4  ebfffffe          BL       Uart_Printf
0008c8  ea000024          B        |L1.2400|
;;;421        }
;;;422        else
;;;423        {
;;;424        	rDIDST1 = (U32)(recBuf[indexRecBuf++]);
                  |L1.2252|
0008cc  e51f03bc          LDR      r0,|L1.1304|
0008d0  e5900000          LDR      r0,[r0,#0]  ; indexRecBuf
0008d4  e2801001          ADD      r1,r0,#1
0008d8  e51f03c8          LDR      r0,|L1.1304|
0008dc  e5902000          LDR      r2,[r0,#0]  ; indexRecBuf
0008e0  e5801000          STR      r1,[r0,#0]  ; indexRecBuf
0008e4  e3a0007d          MOV      r0,#0x7d
0008e8  e0010290          MUL      r1,r0,r2
0008ec  e51f0680          LDR      r0,|L1.628|
0008f0  e5900000          LDR      r0,[r0,#0]  ; recBuf
0008f4  e0800201          ADD      r0,r0,r1,LSL #4
0008f8  e3a0144b          MOV      r1,#0x4b000000
0008fc  e5810048          STR      r0,[r1,#0x48]
;;;425        	if(indexRecBuf==MAX_INDEX_AUDIO_BUF)
000900  e51f03f0          LDR      r0,|L1.1304|
000904  e5900000          LDR      r0,[r0,#0]  ; indexRecBuf
000908  e35000c8          CMP      r0,#0xc8
00090c  1a000002          BNE      |L1.2332|
;;;426        	{
;;;427        	    indexRecBuf=0;
000910  e3a00000          MOV      r0,#0
000914  e51f1404          LDR      r1,|L1.1304|
000918  e5810000          STR      r0,[r1,#0]  ; indexRecBuf
;;;428        	}
;;;429        	if((indexRecBuf%10)==0)
                  |L1.2332|
00091c  e51f040c          LDR      r0,|L1.1304|
000920  e5901000          LDR      r1,[r0,#0]  ; indexRecBuf
000924  e3a0000a          MOV      r0,#0xa
000928  ebfffffe          BL       __rt_sdiv
00092c  e3510000          CMP      r1,#0
000930  1a00000a          BNE      |L1.2400|
;;;430        	{
;;;431        	    if(indexRecBuf==0)WrUTXH0(':');
000934  e51f0424          LDR      r0,|L1.1304|
000938  e5900000          LDR      r0,[r0,#0]  ; indexRecBuf
00093c  e3500000          CMP      r0,#0
000940  1a000003          BNE      |L1.2388|
000944  e3a0003a          MOV      r0,#0x3a
000948  e3a01450          MOV      r1,#0x50000000
00094c  e5c10020          STRB     r0,[r1,#0x20]
000950  ea000002          B        |L1.2400|
;;;432        	    else WrUTXH0('.');
                  |L1.2388|
000954  e3a0002e          MOV      r0,#0x2e
000958  e3a01450          MOV      r1,#0x50000000
00095c  e5c10020          STRB     r0,[r1,#0x20]
;;;433        	}
;;;434        }
;;;435        
;;;436    }
                  |L1.2400|
000960  e28dd004          ADD      sp,sp,#4
000964  e8bd501f          LDMFD    sp!,{r0-r4,r12,lr}
000968  e25ef004          SUBS     pc,lr,#4
                  |L1.2412|
00096c  4f525245          DCB      "ERRO"
000970  44203a52          DCB      "R: D"
000974  2031414d          DCB      "MA1 "
000978  706f7453          DCB      "Stop"
00097c  6d697420          DCB      " tim"
000980  6f206465          DCB      "ed o"
000984  000a7475          DCB      "ut\n\0"
                  |L1.2442|
000988  5d45525b          DCB      "[RE]"
00098c  00000000          DCB      "\0\0\0\0"
                          ENDP

                  AudioInit PROC
;;;209    void AudioInit(void)
;;;210    {
000990  e3a00004          MOV      r0,#4
;;;211        //DMA1 for AudioIn
;;;212        rDMASKTRIG1 = (1<<2);  	//Dma1Stop
000994  e3a0144b          MOV      r1,#0x4b000000
000998  e5810060          STR      r0,[r1,#0x60]
;;;213    
;;;214        //DMA2 for AudioOut
;;;215        rDMASKTRIG2 = (1<<2);	//Dma2Stop 
00099c  e3a00004          MOV      r0,#4
0009a0  e3a0144b          MOV      r1,#0x4b000000
0009a4  e58100a0          STR      r0,[r1,#0xa0]
;;;216    
;;;217        //IIS
;;;218        rIISCON=(1<<5)|(1<<4)|(1<<1);
0009a8  e3a00032          MOV      r0,#0x32
0009ac  e3a01455          MOV      r1,#0x55000000
0009b0  e5810000          STR      r0,[r1,#0]
;;;219            //TxDMAReqEn,RxDMAReqEn,IISPrescalerEn    
;;;220        rIISMOD=(0<<8)|(3<<6)|(0<<4)|(1<<3)|(0<<2)|(1<<0);
0009b4  e3a000c9          MOV      r0,#0xc9
0009b8  e3a01455          MOV      r1,#0x55000000
0009bc  e5810004          STR      r0,[r1,#4]
;;;221            //Master,Tx&Rx,IisFormat,16bit,256fs,32fs
;;;222        rIISPSR=(3<<5)|(3<<0);   
0009c0  e3a00063          MOV      r0,#0x63
0009c4  e3a01455          MOV      r1,#0x55000000
0009c8  e5810008          STR      r0,[r1,#8]
;;;223        	//PreScalerA=45Mhz/4,PreScalerB=45Mhz/4
;;;224        rIISFCON=(1<<15)|(1<<14)|(1<<13)|(0<<12);
0009cc  e3a00ce0          MOV      r0,#0xe000
0009d0  e3a01455          MOV      r1,#0x55000000
0009d4  e581000c          STR      r0,[r1,#0xc]
;;;225        	//TxFifo=DMA,RxFifo=DMA,TxFifoEn,RxFifoDis
;;;226        rIISCON|=(1<<0);
0009d8  e3a00455          MOV      r0,#0x55000000
0009dc  e5900000          LDR      r0,[r0,#0]
0009e0  e3800001          ORR      r0,r0,#1
0009e4  e3a01455          MOV      r1,#0x55000000
0009e8  e5810000          STR      r0,[r1,#0]
;;;227            //IIS Enable;
;;;228            //IIS will not start because DMA is not ready.
;;;229    }
0009ec  e1a0f00e          MOV      pc,lr
                          ENDP

                  Init1341RecPlay PROC
;;;487    void Init1341RecPlay(void)
;;;488    {
0009f0  e92d4008          STMFD    sp!,{r3,lr}
;;;489        //Port Initialize
;;;490        //----------------------------------------------------------
;;;491        //   PORT B GROUP
;;;492        //Ports  :   GPB4    GPB3   GPB2  
;;;493        //Signal :  L3CLOCK L3DATA L3MODE
;;;494        //Setting:   OUTPUT OUTPUT OUTPUT 
;;;495        //           [9:8]   [7:6}  [5:4]
;;;496        //Binary :     01  ,   01    01 
;;;497        //----------------------------------------------------------    
;;;498        rGPBDAT = rGPBDAT & ~(L3M|L3C|L3D) |(L3M|L3C); //Start condition : L3M=H, L3C=H
0009f4  e3a00456          MOV      r0,#0x56000000
0009f8  e5900014          LDR      r0,[r0,#0x14]
0009fc  e3c0001c          BIC      r0,r0,#0x1c
000a00  e3800014          ORR      r0,r0,#0x14
000a04  e3a01456          MOV      r1,#0x56000000
000a08  e5810014          STR      r0,[r1,#0x14]
;;;499        rGPBUP  = rGPBUP  & ~(0x7<<2) |(0x7<<2);       //The pull up function is disabled GPB[4:2] 1 1100    
000a0c  e3a00456          MOV      r0,#0x56000000
000a10  e5900018          LDR      r0,[r0,#0x18]
000a14  e380001c          ORR      r0,r0,#0x1c
000a18  e3a01456          MOV      r1,#0x56000000
000a1c  e5810018          STR      r0,[r1,#0x18]
;;;500        rGPBCON = rGPBCON & ~(0x3f<<4) |(0x15<<4);     //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)
000a20  e3a00456          MOV      r0,#0x56000000
000a24  e5900010          LDR      r0,[r0,#0x10]
000a28  e3c00ffc          BIC      r0,r0,#0x3f0
000a2c  e3800f54          ORR      r0,r0,#0x150
000a30  e3a01456          MOV      r1,#0x56000000
000a34  e5810010          STR      r0,[r1,#0x10]
;;;501    
;;;502        //L3 Interface
;;;503        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
000a38  e3a00016          MOV      r0,#0x16
000a3c  ebfffffe          BL       _WrL3Addr
;;;504        _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
;;;505    
;;;506        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
000a4c  e3a00016          MOV      r0,#0x16
000a50  ebfffffe          BL       _WrL3Addr
;;;507        _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
;;;508        
;;;509    /*    
;;;510        //play
;;;511        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
;;;512        _WrL3Data(0x81,0);       //1,0,0,0,0,0,01 : OGS=0,IGS=0,ADC_NI,DAC_NI,sngl speed,AoffDon
;;;513            
;;;514        //record
;;;515        if(mode)
;;;516        {
;;;517            _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
;;;518            _WrL3Data(0xa2,0);       //1,0,1,0,0,0,10 : OGS=0,IGS=1,ADC_NI,DAC_NI,sngl speed,AonDoff
;;;519    
;;;520            _WrL3Addr(0x14 + 0);     //DATA0 (000101xx+00)
;;;521            _WrL3Data(0xc2,0);       //11000,010  : DATA0, Extended addr(010) 
;;;522            _WrL3Data(0x4d,0);       //010,011,01 : DATA0, MS=9dB, Ch1=on Ch2=off, 
;;;523        }
;;;524    */
;;;525        _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
000a60  e3a00016          MOV      r0,#0x16
000a64  ebfffffe          BL       _WrL3Addr
;;;526        _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
;;;527    
;;;528        _WrL3Addr(0x14 + 0);     //DATA0 (000101xx+00)
000a74  e3a00014          MOV      r0,#0x14
000a78  ebfffffe          BL       _WrL3Addr
;;;529        _WrL3Data(0xc2,0);       //11000,010  : DATA0, Extended addr(010) 
000a7c  e3a01000          MOV      r1,#0
000a80  e3a000c2          MOV      r0,#0xc2
000a84  ebfffffe          BL       _WrL3Data
;;;530        _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
;;;531    }
000a94  e8bd8008          LDMFD    sp!,{r3,pc}
                          ENDP

                  IIS_PortSetting PROC
;;;533    void IIS_PortSetting(void)
;;;534    {
000a98  e3a00456          MOV      r0,#0x56000000
;;;535    	//----------------------------------------------------------
;;;536    	//   PORT B GROUP
;;;537    	//Ports  :   GPB4    GPB3   GPB2  
;;;538    	//Signal :  L3CLOCK L3DATA L3MODE
;;;539    	//Setting:   OUTPUT OUTPUT OUTPUT 
;;;540    	//	     [9:8]   [7:6}  [5:4]
;;;541    	//Binary :     01  ,   01    01 
;;;542    	//----------------------------------------------------------    
;;;543        	rGPBUP  = rGPBUP  & ~(0x7<<2) | (0x7<<2);   //The pull up function is disabled GPB[4:2] 1 1100    
000a9c  e5900018          LDR      r0,[r0,#0x18]
000aa0  e380001c          ORR      r0,r0,#0x1c
000aa4  e3a01456          MOV      r1,#0x56000000
000aa8  e5810018          STR      r0,[r1,#0x18]
;;;544        	rGPBCON = rGPBCON & ~(0x3f<<4) | (0x15<<4); //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)
000aac  e3a00456          MOV      r0,#0x56000000
000ab0  e5900010          LDR      r0,[r0,#0x10]
000ab4  e3c00ffc          BIC      r0,r0,#0x3f0
000ab8  e3800f54          ORR      r0,r0,#0x150
000abc  e3a01456          MOV      r1,#0x56000000
000ac0  e5810010          STR      r0,[r1,#0x10]
;;;545    
;;;546    	//----------------------------------------------------------
;;;547    	//   PORT E GROUP
;;;548    	//Ports  :  GPE4    GPE3   GPE2  GPE1    GPE0 
;;;549    	//Signal : I2SSDO  I2SSDI CDCLK I2SSCLK I2SLRCK 
;;;550    	//Binary :   10  ,   10     10 ,  10	10    
;;;551    	//----------------------------------------------------------
;;;552        	rGPEUP  = rGPEUP  & ~(0x1f)  | 0x1f;    //The pull up function is disabled GPE[4:0] 1 1111
000ac4  e3a00456          MOV      r0,#0x56000000
000ac8  e5900048          LDR      r0,[r0,#0x48]
000acc  e380001f          ORR      r0,r0,#0x1f
000ad0  e3a01456          MOV      r1,#0x56000000
000ad4  e5810048          STR      r0,[r1,#0x48]
;;;553        	rGPECON = rGPECON & ~(0x3ff) | 0x2aa;   //GPE[4:0]=I2SSDO:I2SSDI:CDCLK:I2SSCLK:I2SLRCK
000ad8  e3a00456          MOV      r0,#0x56000000
000adc  e5900040          LDR      r0,[r0,#0x40]
000ae0  e1a00520          MOV      r0,r0,LSR #10
000ae4  e1a00500          MOV      r0,r0,LSL #10
000ae8  e3800f80          ORR      r0,r0,#0x200
000aec  e38000aa          ORR      r0,r0,#0xaa
000af0  e3a01456          MOV      r1,#0x56000000
000af4  e5810040          STR      r0,[r1,#0x40]
;;;554    
;;;555        	rGPFUP   = ((rGPFUP   & ~(1<<0)) | (1<<0));     //GPF0
000af8  e3a00456          MOV      r0,#0x56000000
000afc  e5900058          LDR      r0,[r0,#0x58]
000b00  e3800001          ORR      r0,r0,#1
000b04  e3a01456          MOV      r1,#0x56000000
000b08  e5810058          STR      r0,[r1,#0x58]
;;;556        	rGPFCON  = ((rGPFCON  & ~(3<<0)) | (1<<1));     //GPF0=EINT0    
000b0c  e3a00456          MOV      r0,#0x56000000
000b10  e5900050          LDR      r0,[r0,#0x50]
000b14  e3c00003          BIC      r0,r0,#3

⌨️ 快捷键说明

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