📄 spi01.txt
字号:
0002f0 e1a00001 MOV r0,r1
0002f4 e590001c LDR r0,[r0,#0x1c]
0002f8 e3800880 ORR r0,r0,#0x800000
0002fc e581001c STR r0,[r1,#0x1c]
;;;146 endSpi1Tx=1;
000300 e3a00001 MOV r0,#1
000304 e59f1224 LDR r1,|L1.1328|
000308 e5810000 STR r0,[r1,#0] ; endSpi1Tx
;;;147 }
;;;148 }
|L1.780|
00030c e28dd004 ADD sp,sp,#4
000310 e8bd501f LDMFD sp!,{r0-r4,r12,lr}
000314 e25ef004 SUBS pc,lr,#4
ENDP
SPI0_Port_Init PROC
;;;151 void SPI0_Port_Init(MASorSLV)
;;;152 {
000318 e59f1214 LDR r1,|L1.1332|
;;;153
;;;154 // SPIO1 setting
;;;155 spi_rGPCON_U=rGPCON_U;
00031c e5911000 LDR r1,[r1,#0]
000320 e59f2210 LDR r2,|L1.1336|
000324 e5821000 STR r1,[r2,#0] ; spi_rGPCON_U
;;;156 spi_rGPCON_M=rGPCON_M;
000328 e59f1204 LDR r1,|L1.1332|
00032c e5911004 LDR r1,[r1,#4]
000330 e59f2204 LDR r2,|L1.1340|
000334 e5821000 STR r1,[r2,#0] ; spi_rGPCON_M
;;;157 spi_rGPCON_L=rGPCON_L;
000338 e59f11f4 LDR r1,|L1.1332|
00033c e5911008 LDR r1,[r1,#8]
000340 e59f21f8 LDR r2,|L1.1344|
000344 e5821000 STR r1,[r2,#0] ; spi_rGPCON_L
;;;158 spi_rGPDAT=rGPDAT;
000348 e59f11e4 LDR r1,|L1.1332|
00034c e591100c LDR r1,[r1,#0xc]
000350 e59f21ec LDR r2,|L1.1348|
000354 e5821000 STR r1,[r2,#0] ; spi_rGPDAT
;;;159 spi_rGPUP=rGPPU;
000358 e59f11d4 LDR r1,|L1.1332|
00035c e5911010 LDR r1,[r1,#0x10]
000360 e59f21e0 LDR r2,|L1.1352|
000364 e5821000 STR r1,[r2,#0] ; spi_rGPUP
;;;160 rGPPU|=(1<<15)|(1<<16)|(1<<17);//Pull up Disable sclk,MISO, MOSI.
000368 e59f11c4 LDR r1,|L1.1332|
00036c e5911010 LDR r1,[r1,#0x10]
000370 e3811be0 ORR r1,r1,#0x38000
000374 e59f21b8 LDR r2,|L1.1332|
000378 e5821010 STR r1,[r2,#0x10]
;;;161 rGPCON_M|=(3<<8)|(3<<10)|(3<<12); //GP15(MOSI),GP16(MISO),GP17(SCLK)
00037c e1a01002 MOV r1,r2
000380 e5911004 LDR r1,[r1,#4]
000384 e3811dfc ORR r1,r1,#0x3f00
000388 e5821004 STR r1,[r2,#4]
;;;162
;;;163 if(MASorSLV==1)
00038c e3500001 CMP r0,#1
000390 1a000009 BNE |L1.956|
;;;164 {
;;;165 rGPDAT|=(1<<8); // Master(GPIO8_Output=High)
000394 e1a01002 MOV r1,r2
000398 e591100c LDR r1,[r1,#0xc]
00039c e3811f40 ORR r1,r1,#0x100
0003a0 e582100c STR r1,[r2,#0xc]
;;;166 rGPCON_L=(rGPCON_L&0x3cffff)|(0x1<<16); // Master(GPIO8_Output)
0003a4 e1a01002 MOV r1,r2
0003a8 e5911008 LDR r1,[r1,#8]
0003ac e3c114ff BIC r1,r1,#0xff000000
0003b0 e3c118c3 BIC r1,r1,#0xc30000
0003b4 e3811b40 ORR r1,r1,#0x10000
0003b8 e5821008 STR r1,[r2,#8]
;;;167 }
;;;168 }
|L1.956|
0003bc e12fff1e BX lr
ENDP
SPI0_Port_Return PROC
;;;170 void SPI0_Port_Return(void)
;;;171 {
0003c0 e59f0170 LDR r0,|L1.1336|
;;;172 rGPCON_U=spi_rGPCON_U;
0003c4 e5900000 LDR r0,[r0,#0] ; spi_rGPCON_U
0003c8 e59f1164 LDR r1,|L1.1332|
0003cc e5810000 STR r0,[r1,#0]
;;;173 rGPCON_M=spi_rGPCON_M;
0003d0 e59f0164 LDR r0,|L1.1340|
0003d4 e5900000 LDR r0,[r0,#0] ; spi_rGPCON_M
0003d8 e5810004 STR r0,[r1,#4]
;;;174 rGPCON_L=spi_rGPCON_L;
0003dc e59f015c LDR r0,|L1.1344|
0003e0 e5900000 LDR r0,[r0,#0] ; spi_rGPCON_L
0003e4 e5810008 STR r0,[r1,#8]
;;;175 rGPDAT=spi_rGPDAT;
0003e8 e59f0154 LDR r0,|L1.1348|
0003ec e5900000 LDR r0,[r0,#0] ; spi_rGPDAT
0003f0 e581000c STR r0,[r1,#0xc]
;;;176 rGPPU=spi_rGPUP;
0003f4 e59f014c LDR r0,|L1.1352|
0003f8 e5900000 LDR r0,[r0,#0] ; spi_rGPUP
0003fc e5810010 STR r0,[r1,#0x10]
;;;177 }
000400 e12fff1e BX lr
ENDP
Master_nSS_Con PROC
;;;179 void Master_nSS_Con(int Set)
;;;180 {
000404 e59f1128 LDR r1,|L1.1332|
;;;181 rGPDAT=rGPDAT&~(1<<8)|(Set<<8);
000408 e591100c LDR r1,[r1,#0xc]
00040c e3c11f40 BIC r1,r1,#0x100
000410 e1811400 ORR r1,r1,r0,LSL #8
000414 e59f2118 LDR r2,|L1.1332|
000418 e582100c STR r1,[r2,#0xc]
;;;182 }
00041c e12fff1e BX lr
ENDP
Test_Spi0_MS_int PROC
;;;184 void Test_Spi0_MS_int(void)
;;;185 {
000420 e92d4038 STMFD sp!,{r3-r5,lr}
;;;186 char *txStr,*rxStr;
;;;187 SPI0_Port_Init(1);
000424 e3a00001 MOV r0,#1
000428 ebfffffe BL SPI0_Port_Init
;;;188 Uart_Printf("[SPI0 Interrupt Tx/Rx Self-Test]\n");
00042c e28f0f46 ADR r0,|L1.1356|
000430 ebfffffe BL _printf
;;;189 Uart_Printf("Connect SPIMOSI0 into SPIMISO0.\n");
000434 e28f0f4d ADR r0,|L1.1392|
000438 ebfffffe BL _printf
;;;190
;;;191 pISR_SPI0=(unsigned)Spi0_Int;
00043c e59f0150 LDR r0,|L1.1428|
000440 e59f1150 LDR r1,|L1.1432|
000444 e5810f78 STR r0,[r1,#0xf78]
;;;192 end0SpiTx=0;
000448 e3a00000 MOV r0,#0
00044c e51f1250 LDR r1,|L1.516|
000450 e5810000 STR r0,[r1,#0] ; end0SpiTx
;;;193 spi0TxStr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
000454 e28f0f50 ADR r0,|L1.1436|
000458 e51f1260 LDR r1,|L1.512|
00045c e5810000 STR r0,[r1,#0] ; spi0TxStr
;;;194 spi0RxStr=(char *) SPI_BUFFER0;
000460 e3a00544 MOV r0,#0x11000000
000464 e51f1270 LDR r1,|L1.508|
000468 e5810000 STR r0,[r1,#0] ; spi0RxStr
;;;195 txStr=(char *)spi0TxStr;
00046c e51f0274 LDR r0,|L1.512|
000470 e5905000 LDR r5,[r0,#0] ; spi0TxStr
;;;196 rxStr=(char *)spi0RxStr;
000474 e51f0280 LDR r0,|L1.508|
000478 e5904000 LDR r4,[r0,#0] ; spi0RxStr
;;;197 rSPPRE0=0x0; // Baudrate=PCLK/2
00047c e3a00000 MOV r0,#0
000480 e51f1290 LDR r1,|L1.504|
000484 e581000c STR r0,[r1,#0xc]
;;;198 rSPCON0=(1<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//int,en-SCK,master,low,A,normal
000488 e3a0003c MOV r0,#0x3c
00048c e1c11000 BIC r1,r1,r0
000490 e5810000 STR r0,[r1,#0]
;;;199 rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
000494 e3a00002 MOV r0,#2
000498 e1c11000 BIC r1,r1,r0
00049c e5810008 STR r0,[r1,#8]
;;;200 rINTMSK=~(BIT_SPI0);
0004a0 e3e00840 MVN r0,#0x400000
0004a4 e2411643 SUB r1,r1,#0x4300000
0004a8 e5810008 STR r0,[r1,#8]
;;;201
;;;202 while(end0SpiTx==0);
0004ac e1a00000 NOP
|L1.1200|
0004b0 e51f02b4 LDR r0,|L1.516|
0004b4 e5900000 LDR r0,[r0,#0] ; end0SpiTx
0004b8 e3500000 CMP r0,#0
0004bc 0afffffb BEQ |L1.1200|
;;;203
;;;204 rSPCON0=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Poll,dis-SCK,master,low,A,normal
0004c0 e3a0000c MOV r0,#0xc
0004c4 e51f12d4 LDR r1,|L1.504|
0004c8 e5810000 STR r0,[r1,#0]
;;;205 *spi0RxStr='\0';//attach End of String(Null)
0004cc e3a00000 MOV r0,#0
0004d0 e51f12dc LDR r1,|L1.508|
0004d4 e5911000 LDR r1,[r1,#0] ; spi0RxStr
0004d8 e5c10000 STRB r0,[r1,#0]
;;;206 Uart_Printf("Tx Strings:%s\n",txStr);
0004dc e1a01005 MOV r1,r5
0004e0 e28f00dc ADR r0,|L1.1476|
0004e4 ebfffffe BL _printf
;;;207 Uart_Printf("Rx Strings:%s :",rxStr+1);//remove first dummy data
0004e8 e2841001 ADD r1,r4,#1
0004ec e28f00e0 ADR r0,|L1.1492|
0004f0 ebfffffe BL _printf
;;;208 if(strcmp(rxStr+1,txStr)==0)
0004f4 e1a01005 MOV r1,r5
0004f8 e2840001 ADD r0,r4,#1
0004fc ebfffffe BL strcmp
000500 e3500000 CMP r0,#0
000504 1a000002 BNE |L1.1300|
;;;209 Uart_Printf("O.K.\n");
000508 e28f00d4 ADR r0,|L1.1508|
00050c ebfffffe BL _printf
000510 ea000001 B |L1.1308|
;;;210 else
;;;211 Uart_Printf("ERROR!!!\n");
|L1.1300|
000514 e28f00d0 ADR r0,|L1.1516|
000518 ebfffffe BL _printf
;;;212 SPI0_Port_Return();
|L1.1308|
00051c ebfffffe BL SPI0_Port_Return
;;;213 }
000520 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.1316|
000524 00000028 DCD ||.bss$2|| + 40
|L1.1320|
000528 0000000c DCD ||.bss$2|| + 12
|L1.1324|
00052c 00000008 DCD ||.bss$2|| + 8
|L1.1328|
000530 00000014 DCD ||.bss$2|| + 20
|L1.1332|
000534 44800000 DCD 0x44800000
|L1.1336|
000538 00000040 DCD ||.bss$2|| + 64
|L1.1340|
00053c 00000044 DCD ||.bss$2|| + 68
|L1.1344|
000540 00000048 DCD ||.bss$2|| + 72
|L1.1348|
000544 0000004c DCD ||.bss$2|| + 76
|L1.1352|
000548 00000050 DCD ||.bss$2|| + 80
|L1.1356|
00054c 4950535b DCB "[SPI"
000550 6e492030 DCB "0 In"
000554 72726574 DCB "terr"
000558 20747075 DCB "upt "
00055c 522f7854 DCB "Tx/R"
000560 65532078 DCB "x Se"
000564 542d666c DCB "lf-T"
000568 5d747365 DCB "est]"
00056c 0000000a DCB "\n\0\0\0"
|L1.1392|
000570 6e6e6f43 DCB "Conn"
000574 20746365 DCB "ect "
000578 4d495053 DCB "SPIM"
00057c 3049534f DCB "OSI0"
000580 746e6920 DCB " int"
000584 5053206f DCB "o SP"
000588 53494d49 DCB "IMIS"
00058c 0a2e304f DCB "O0.\n"
000590 00000000 DCB "\0\0\0\0"
|L1.1428|
000594 00000000 DCD Spi0_Int
|L1.1432|
000598 13fff000 DCD 0x13fff000
|L1.1436|
00059c 33323130 DCB "0123"
0005a0 37363534 DCB "4567"
0005a4 42413938 DCB "89AB"
0005a8 46454443 DCB "CDEF"
0005ac 4a494847 DCB "GHIJ"
0005b0 4e4d4c4b DCB "KLMN"
0005b4 5251504f DCB "OPQR"
0005b8 56555453 DCB "STUV"
0005bc 5a595857 DCB "WXYZ"
0005c0 00000000 DCB "\0\0\0\0"
|L1.1476|
0005c4 53207854 DCB "Tx S"
0005c8 6e697274 DCB "trin"
0005cc 253a7367 DCB "gs:%"
0005d0 00000a73 DCB "s\n\0\0"
|L1.1492|
0005d4 53207852 DCB "Rx S"
0005d8 6e697274 DCB "trin"
0005dc 253a7367 DCB "gs:%"
0005e0 003a2073 DCB "s :\0"
|L1.1508|
0005e4 2e4b2e4f DCB "O.K."
0005e8 0000000a DCB "\n\0\0\0"
|L1.1516|
0005ec 4f525245 DCB "ERRO"
0005f0 21212152 DCB "R!!!"
0005f4 0000000a DCB "\n\0\0\0"
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -