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