📄 iis.txt
字号:
;;;316 {
;;;317 rIISCON = (1<<5) + (1<<2) + (1<<1);
0005e4 e3a00026 MOV r0,#0x26
0005e8 e3a01455 MOV r1,#0x55000000
0005ec e5810000 STR r0,[r1,#0]
;;;318 rIISMOD = (0<<9)+(0<<8) + (2<<6) + (0<<5) + (0<<4) + (1<<3) + (1<<2) + (1<<0);
0005f0 e3a0008d MOV r0,#0x8d
0005f4 e3a01455 MOV r1,#0x55000000
0005f8 e5810004 STR r0,[r1,#4]
;;;319 rIISFCON = (1<<15) + (1<<13);
0005fc e3a00ca0 MOV r0,#0xa000
000600 e3a01455 MOV r1,#0x55000000
000604 e581000c STR r0,[r1,#0xc]
;;;320
;;;321 Uart_Printf("\nIISLRCK = %d Hz", (int) IIS_Codec_CLK/384);
000608 e59f0170 LDR r0,|L1.1920|
00060c e5900000 LDR r0,[r0,#0] ; IIS_Codec_CLK
000610 ebfffffe BL _ffix
000614 e1a07000 MOV r7,r0
000618 e1a01000 MOV r1,r0
00061c e3a00f60 MOV r0,#0x180
000620 ebfffffe BL __rt_sdiv
000624 e1a06000 MOV r6,r0
000628 e1a01000 MOV r1,r0
00062c e28f0f54 ADR r0,|L1.1924|
000630 ebfffffe BL Uart_Printf
000634 ea000013 B |L1.1672|
;;;322 }
;;;323 else //IIS Master Clock Source = MPLLin
;;;324 {
;;;325 rIISCON = (1<<5) + (1<<2) + (0<<1);
|L1.1592|
000638 e3a00024 MOV r0,#0x24
00063c e3a01455 MOV r1,#0x55000000
000640 e5810000 STR r0,[r1,#0]
;;;326 rIISMOD = (1<<9)+(0<<8) + (2<<6) + (0<<5) + (0<<4) + (1<<3) + (1<<2) + (1<<0);
000644 e59f014c LDR r0,|L1.1944|
000648 e3a01455 MOV r1,#0x55000000
00064c e5810004 STR r0,[r1,#4]
;;;327 rIISFCON = (1<<15) + (1<<13);
000650 e3a00ca0 MOV r0,#0xa000
000654 e3a01455 MOV r1,#0x55000000
000658 e581000c STR r0,[r1,#0xc]
;;;328
;;;329 Uart_Printf("\nIISLRCK = %d Hz", (int) IIS_Codec_CLK/384);
00065c e59f011c LDR r0,|L1.1920|
000660 e5900000 LDR r0,[r0,#0] ; IIS_Codec_CLK
000664 ebfffffe BL _ffix
000668 e1a07000 MOV r7,r0
00066c e1a01000 MOV r1,r0
000670 e3a00f60 MOV r0,#0x180
000674 ebfffffe BL __rt_sdiv
000678 e1a06000 MOV r6,r0
00067c e1a01000 MOV r1,r0
000680 e28f00fc ADR r0,|L1.1924|
000684 ebfffffe BL Uart_Printf
;;;330 }
;;;331
;;;332 rINTMSK = ~(BIT_EINT0 | BIT_DMA2);
|L1.1672|
000688 e59f010c LDR r0,|L1.1948|
00068c e3a0144a MOV r1,#0x4a000000
000690 e5810008 STR r0,[r1,#8]
;;;333
;;;334 //DMA2 Register Setting
;;;335 rDISRC2 = (int)(start_addr);
000694 e3a0044b MOV r0,#0x4b000000
000698 e5804080 STR r4,[r0,#0x80]
;;;336 rDISRCC2 = (0<<1) + (0<<0);
00069c e3a00000 MOV r0,#0
0006a0 e3a0144b MOV r1,#0x4b000000
0006a4 e5810084 STR r0,[r1,#0x84]
;;;337 rDIDST2 = ((U32)IISFIFO);
0006a8 e59f00f0 LDR r0,|L1.1952|
0006ac e3a0144b MOV r1,#0x4b000000
0006b0 e5810088 STR r0,[r1,#0x88]
;;;338 rDIDSTC2 = (0<<2) + (1<<1) + (1<<0);
0006b4 e3a00003 MOV r0,#3
0006b8 e3a0144b MOV r1,#0x4b000000
0006bc e581008c STR r0,[r1,#0x8c]
;;;339 rDCON2 = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(0<<24)+(1<<23)+(0<<22)+(1<<20)+(play_size/2);
0006c0 e59f00dc LDR r0,|L1.1956|
0006c4 e08000a5 ADD r0,r0,r5,LSR #1
0006c8 e3a0144b MOV r1,#0x4b000000
0006cc e5810090 STR r0,[r1,#0x90]
;;;340 rDMASKTRIG2 = (0<<2) + (1<<1) + (0<<0); //No-stop, DMA2 channel On, and No-sw trigger
0006d0 e3a00002 MOV r0,#2
0006d4 e3a0144b MOV r1,#0x4b000000
0006d8 e58100a0 STR r0,[r1,#0xa0]
;;;341
;;;342 Uart_Printf("\nIf you want to mute or no mute, Push the 'EIN0' button repeatedly.\n");
0006dc e59f00c4 LDR r0,|L1.1960|
0006e0 ebfffffe BL Uart_Printf
;;;343 Uart_Printf("Press any key to exit!\n");
0006e4 e28f00c0 ADR r0,|L1.1964|
0006e8 ebfffffe BL Uart_Printf
;;;344 Uart_Printf("\nPlay...\n");
0006ec e28f00d0 ADR r0,|L1.1988|
0006f0 ebfffffe BL Uart_Printf
;;;345
;;;346 //IIS Tx Start
;;;347 rIISCON |= 0x1; //IIS Interface start
0006f4 e3a00455 MOV r0,#0x55000000
0006f8 e5900000 LDR r0,[r0,#0]
0006fc e3800001 ORR r0,r0,#1
000700 e3a01455 MOV r1,#0x55000000
000704 e5810000 STR r0,[r1,#0]
;;;348
;;;349 while(!Uart_GetKey());
000708 e1a00000 NOP
|L1.1804|
00070c ebfffffe BL Uart_GetKey
000710 e3500000 CMP r0,#0
000714 0afffffc BEQ |L1.1804|
;;;350
;;;351 //IIS Tx Stop
;;;352 Delay(10); //For end of H/W Tx
000718 e3a0000a MOV r0,#0xa
00071c ebfffffe BL Delay
;;;353 rIISCON &= ~(1<<0); //IIS Interface stop
000720 e3a00455 MOV r0,#0x55000000
000724 e5900000 LDR r0,[r0,#0]
000728 e3c00001 BIC r0,r0,#1
00072c e3a01455 MOV r1,#0x55000000
000730 e5810000 STR r0,[r1,#0]
;;;354
;;;355 rDMASKTRIG2 = (1<<2); //DMA2 stop
000734 e3a00004 MOV r0,#4
000738 e3a0144b MOV r1,#0x4b000000
00073c e58100a0 STR r0,[r1,#0xa0]
;;;356 rIISFCON = 0x0; //For FIFO flush
000740 e3a00000 MOV r0,#0
000744 e3a01455 MOV r1,#0x55000000
000748 e581000c STR r0,[r1,#0xc]
;;;357
;;;358 rINTMSK |= (BIT_EINT0 | BIT_DMA2);
00074c e3a0044a MOV r0,#0x4a000000
000750 e5900008 LDR r0,[r0,#8]
000754 e3800a80 ORR r0,r0,#0x80000
000758 e3800001 ORR r0,r0,#1
00075c e3a0144a MOV r1,#0x4a000000
000760 e5810008 STR r0,[r1,#8]
;;;359
;;;360 Uart_Printf("\nEnd of Play!\n");
000764 e28f0064 ADR r0,|L1.2000|
000768 ebfffffe BL Uart_Printf
;;;361 }
00076c e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.1904|
000770 00000000 DCD DMA2_Done
|L1.1908|
000774 31fff000 DCD 0x31fff000
|L1.1912|
000778 00000000 DCD Muting
|L1.1916|
00077c 00000001 DCD ||.bss$2|| + 1
|L1.1920|
000780 00000024 DCD ||.bss$2|| + 36
|L1.1924|
000784 5349490a DCB "\nIIS"
000788 4b43524c DCB "LRCK"
00078c 25203d20 DCB " = %"
000790 7a482064 DCB "d Hz"
000794 00000000 DCB "\0\0\0\0"
|L1.1944|
000798 0000028d DCD 0x0000028d
|L1.1948|
00079c fff7fffe DCD 0xfff7fffe
|L1.1952|
0007a0 55000010 DCD 0x55000010
|L1.1956|
0007a4 a0900000 DCD 0xa0900000
|L1.1960|
0007a8 00000060 DCD ||.constdata$1|| + 96
|L1.1964|
0007ac 73657250 DCB "Pres"
0007b0 6e612073 DCB "s an"
0007b4 656b2079 DCB "y ke"
0007b8 6f742079 DCB "y to"
0007bc 69786520 DCB " exi"
0007c0 000a2174 DCB "t!\n\0"
|L1.1988|
0007c4 616c500a DCB "\nPla"
0007c8 2e2e2e79 DCB "y..."
0007cc 0000000a DCB "\n\0\0\0"
|L1.2000|
0007d0 646e450a DCB "\nEnd"
0007d4 20666f20 DCB " of "
0007d8 79616c50 DCB "Play"
0007dc 00000a21 DCB "!\n\0\0"
ENDP
Init1341 PROC
;;;422 void Init1341(int mode)
;;;423 {
0007e0 e92d4010 STMFD sp!,{r4,lr}
0007e4 e1a04000 MOV r4,r0
;;;424 //Port Initialize
;;;425 //----------------------------------------------------------
;;;426 // PORT B GROUP
;;;427 //Ports : GPB4 GPB3 GPB2
;;;428 //Signal : L3CLOCK L3DATA L3MODE
;;;429 //Setting: OUTPUT OUTPUT OUTPUT
;;;430 // [9:8] [7:6] [5:4]
;;;431 //Binary : 01, 01, 01
;;;432 //----------------------------------------------------------
;;;433 rGPBDAT = rGPBDAT & ~(L3M|L3C|L3D) |(L3M|L3C); //Start condition : L3M=H, L3C=H
0007e8 e3a00456 MOV r0,#0x56000000
0007ec e5900014 LDR r0,[r0,#0x14]
0007f0 e3c0001c BIC r0,r0,#0x1c
0007f4 e3800014 ORR r0,r0,#0x14
0007f8 e3a01456 MOV r1,#0x56000000
0007fc e5810014 STR r0,[r1,#0x14]
;;;434 rGPBUP = rGPBUP & ~(0x7<<2) |(0x7<<2); //The pull up function is disabled GPB[4:2] 1 1100
000800 e3a00456 MOV r0,#0x56000000
000804 e5900018 LDR r0,[r0,#0x18]
000808 e380001c ORR r0,r0,#0x1c
00080c e3a01456 MOV r1,#0x56000000
000810 e5810018 STR r0,[r1,#0x18]
;;;435 rGPBCON = rGPBCON & ~(0x3f<<4) |(0x15<<4); //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)
000814 e3a00456 MOV r0,#0x56000000
000818 e5900010 LDR r0,[r0,#0x10]
00081c e3c00ffc BIC r0,r0,#0x3f0
000820 e3800f54 ORR r0,r0,#0x150
000824 e3a01456 MOV r1,#0x56000000
000828 e5810010 STR r0,[r1,#0x10]
;;;436
;;;437 //L3 Interface
;;;438 _WrL3Addr(0x14 + 2); //STATUS (000101xx+10)
00082c e3a00016 MOV r0,#0x16
000830 ebfffffe BL _WrL3Addr
;;;439 _WrL3Data(0x50,0); //0,1,01, 000,0 : Status 0,Reset, 384fs,IIS-bus,no DC-filtering
000834 e3a01000 MOV r1,#0
000838 e3a00050 MOV r0,#0x50
00083c ebfffffe BL _WrL3Data
;;;440
;;;441 _WrL3Addr(0x14 + 2); //STATUS (000101xx+10)
000840 e3a00016 MOV r0,#0x16
000844 ebfffffe BL _WrL3Addr
;;;442 _WrL3Data(0x81,0); //bit[7:0] => 1,0,0,0, 0,0,01
000848 e3a01000 MOV r1,#0
00084c e3a00081 MOV r0,#0x81
000850 ebfffffe BL _WrL3Data
;;;443
;;;444 //Record Sound via MIC In
;;;445 if(mode == 1)
000854 e3540001 CMP r4,#1
000858 1a00000c BNE |L1.2192|
;;;446 {
;;;447 _WrL3Addr(0x14 + 2); //STATUS (000101xx+10)
00085c e3a00016 MOV r0,#0x16
000860 ebfffffe BL _WrL3Addr
;;;448 _WrL3Data(0xa2,0); //bit[7:0] => 1,0,1,0,0,0,10
000864 e3a01000 MOV r1,#0
000868 e3a000a2 MOV r0,#0xa2
00086c ebfffffe BL _WrL3Data
;;;449
;;;450 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
000870 e3a00014 MOV r0,#0x14
000874 ebfffffe BL _WrL3Addr
;;;451 _WrL3Data(0xc2, 0); //1100 0,010 : Extended addr(3bits), 010
000878 e3a01000 MOV r1,#0
00087c e3a000c2 MOV r0,#0xc2
000880 ebfffffe BL _WrL3Data
;;;452 _WrL3Data(0xf2, 0); //111,100,10 : DATA0, MIC Amplifier Gain 21dB, input channel 2 select (input channel 1 off)
000884 e3a01000 MOV r1,#0
000888 e3a000f2 MOV r0,#0xf2
00088c ebfffffe BL _WrL3Data
;;;453 }
;;;454
;;;455 //Record Sound via Line In
;;;456 if(mode == 2)
|L1.2192|
000890 e3540002 CMP r4,#2
000894 1a00000c BNE |L1.2252|
;;;457 {
;;;458 _WrL3Addr(0x14 + 2); //STATUS (000101xx+10)
000898 e3a00016 MOV r0,#0x16
00089c ebfffffe BL _WrL3Addr
;;;459 _WrL3Data(0xa2,0); //bit[7:0] => 1,0,1,0, 0,0,10
0008a0 e3a01000 MOV r1,#0
0008a4 e3a000a2 MOV r0,#0xa2
0008a8 ebfffffe BL _WrL3Data
;;;460
;;;461 _WrL3Addr(0x14 + 0); //DATA0 (000101xx+00)
0008ac e3a00014 MOV r0,#0x14
0008b0 ebfffffe BL _WrL3Addr
;;;462 _WrL3Data(0xc2, 0); //1100 0,010 : Extended addr(3bits), 010
0008b4 e3a01000 MOV r1,#0
0008b8 e3a000c2 MOV r0,#0xc2
0008bc ebfffffe BL _WrL3Data
;;;463 _WrL3Data(0xf1, 0); //111,100,01 : DATA0, MIC Amplifier Gain 21dB, input channel 1 select (input channel 2 off)
0008c0 e3a01000 MOV r1,#0
0008c4 e3a000f1 MOV r0,#0xf1
0008c8 ebfffffe BL _WrL3Data
;;;464 }
;;;465 }
|L1.2252|
0008cc e8bd8010 LDMFD sp!,{r4,pc}
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -