📄 iis_dual.txt
字号:
|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 + -