📄 spi.txt
字号:
;;;248 // Uart_Printf("Current Rx address = 0x%x\n",spiRxStr);
;;;249
;;;250 if(*spiTxStr!='\0')
00062c e51f00dc LDR r0,|L1.1368|
000630 e5900000 LDR r0,[r0,#0] ; spiTxStr
000634 e5d00000 LDRB r0,[r0,#0]
000638 e3500000 CMP r0,#0
00063c 0a00000d BEQ |L1.1656|
;;;251 {
;;;252 rSPTDAT0=*spiTxStr++;
000640 e51f00f0 LDR r0,|L1.1368|
000644 e5901000 LDR r1,[r0,#0] ; spiTxStr
000648 e5d10000 LDRB r0,[r1,#0]
00064c e2811001 ADD r1,r1,#1
000650 e51f2100 LDR r2,|L1.1368|
000654 e5821000 STR r1,[r2,#0] ; spiTxStr
000658 e3a01459 MOV r1,#0x59000000
00065c e5810010 STR r0,[r1,#0x10]
;;;253 rINTMSK&=~BIT_SPI0;
000660 e3a0044a MOV r0,#0x4a000000
000664 e5900008 LDR r0,[r0,#8]
000668 e3c00840 BIC r0,r0,#0x400000
00066c e3a0144a MOV r1,#0x4a000000
000670 e5810008 STR r0,[r1,#8]
000674 ea000002 B |L1.1668|
;;;254 }
;;;255 else
;;;256 {
;;;257 endSpiTx=1;
|L1.1656|
000678 e3a00001 MOV r0,#1
00067c e51f115c LDR r1,|L1.1320|
000680 e5810000 STR r0,[r1,#0] ; endSpiTx
;;;258 }
;;;259 }
|L1.1668|
000684 e28dd004 ADD sp,sp,#4
000688 e8bd501f LDMFD sp!,{r0-r4,r12,lr}
00068c e25ef004 SUBS pc,lr,#4
|L1.1680|
000690 61746144 DCB "Data"
000694 6c6f4320 DCB " Col"
000698 6973696c DCB "lisi"
00069c 6f206e6f DCB "on o"
0006a0 754d2072 DCB "r Mu"
0006a4 2069746c DCB "lti "
0006a8 7473614d DCB "Mast"
0006ac 45207265 DCB "er E"
0006b0 726f7272 DCB "rror"
0006b4 25783028 DCB "(0x%"
0006b8 21212978 DCB "x)!!"
0006bc 00000a21 DCB "!\n\0\0"
ENDP
Test_Spi_MS_int PROC
;;;203 void Test_Spi_MS_int(void)
;;;204 {
0006c0 e92d4038 STMFD sp!,{r3-r5,lr}
;;;205 char *txStr,*rxStr;
;;;206 SPI_Port_Init(1);
0006c4 e3a00001 MOV r0,#1
0006c8 ebfffffe BL SPI_Port_Init
;;;207 Uart_Printf("[SPI0 Interrupt Tx/Rx Test]\n");
0006cc e28f0f42 ADR r0,|L1.2012|
0006d0 ebfffffe BL Uart_Printf
;;;208 Uart_Printf("Connect SPIMOSI0 into SPIMISO0.\n");
0006d4 e28f0f48 ADR r0,|L1.2044|
0006d8 ebfffffe BL Uart_Printf
;;;209
;;;210 pISR_SPI0=(unsigned)Spi_Int;
0006dc e59f013c LDR r0,|L1.2080|
0006e0 e59f113c LDR r1,|L1.2084|
0006e4 e5810f78 STR r0,[r1,#0xf78]
;;;211 endSpiTx=0;
0006e8 e3a00000 MOV r0,#0
0006ec e51f11cc LDR r1,|L1.1320|
0006f0 e5810000 STR r0,[r1,#0] ; endSpiTx
;;;212 spiTxStr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
0006f4 e28f0f4b ADR r0,|L1.2088|
0006f8 e51f11a8 LDR r1,|L1.1368|
0006fc e5810000 STR r0,[r1,#0] ; spiTxStr
;;;213 spiRxStr=(char *) SPI_BUFFER;
000700 e3a005c4 MOV r0,#0x31000000
000704 e51f11b0 LDR r1,|L1.1372|
000708 e5810000 STR r0,[r1,#0] ; spiRxStr
;;;214 txStr=(char *)spiTxStr;
00070c e51f01bc LDR r0,|L1.1368|
000710 e5905000 LDR r5,[r0,#0] ; spiTxStr
;;;215 rxStr=(char *)spiRxStr;
000714 e51f01c0 LDR r0,|L1.1372|
000718 e5904000 LDR r4,[r0,#0] ; spiRxStr
;;;216 rSPPRE0=0x0; //if PCLK=50Mhz,SPICLK=25Mhz
00071c e3a00000 MOV r0,#0
000720 e3a01459 MOV r1,#0x59000000
000724 e581000c STR r0,[r1,#0xc]
;;;217 rSPCON0=(1<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|0;//int,en-SCK,master,low,A,normal
000728 e3a0003c MOV r0,#0x3c
00072c e3a01459 MOV r1,#0x59000000
000730 e5810000 STR r0,[r1,#0]
;;;218 rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
000734 e3a00002 MOV r0,#2
000738 e3a01459 MOV r1,#0x59000000
00073c e5810008 STR r0,[r1,#8]
;;;219 rINTMSK=~(BIT_SPI0);
000740 e3e00840 MVN r0,#0x400000
000744 e3a0144a MOV r1,#0x4a000000
000748 e5810008 STR r0,[r1,#8]
;;;220
;;;221 while(endSpiTx==0);
00074c e1a00000 NOP
|L1.1872|
000750 e51f0230 LDR r0,|L1.1320|
000754 e5900000 LDR r0,[r0,#0] ; endSpiTx
000758 e3500000 CMP r0,#0
00075c 0afffffb BEQ |L1.1872|
;;;222
;;;223 rSPCON0&=~((1<<5)|(1<<4));//poll, dis-SCK
000760 e3a00459 MOV r0,#0x59000000
000764 e5900000 LDR r0,[r0,#0]
000768 e3c00030 BIC r0,r0,#0x30
00076c e3a01459 MOV r1,#0x59000000
000770 e5810000 STR r0,[r1,#0]
;;;224 Uart_Printf("Current Rx address = 0x%x\n",spiRxStr);
000774 e51f0220 LDR r0,|L1.1372|
000778 e5901000 LDR r1,[r0,#0] ; spiRxStr
00077c e28f00cc ADR r0,|L1.2128|
000780 ebfffffe BL Uart_Printf
;;;225 *spiRxStr='\0';//attach End of String(Null)
000784 e3a00000 MOV r0,#0
000788 e51f1234 LDR r1,|L1.1372|
00078c e5911000 LDR r1,[r1,#0] ; spiRxStr
000790 e5c10000 STRB r0,[r1,#0]
;;;226
;;;227 Uart_Printf("Tx Strings:%s\n",txStr);
000794 e1a01005 MOV r1,r5
000798 e24f0f90 ADR r0,|L1.1376|
00079c ebfffffe BL Uart_Printf
;;;228 Uart_Printf("Rx Strings:%s :",rxStr+1);//remove first dummy data
0007a0 e2841001 ADD r1,r4,#1
0007a4 e24f0f8f ADR r0,|L1.1392|
0007a8 ebfffffe BL Uart_Printf
;;;229 if(strcmp(rxStr+1,txStr)==0)
0007ac e1a01005 MOV r1,r5
0007b0 e2840001 ADD r0,r4,#1
0007b4 ebfffffe BL strcmp
0007b8 e3500000 CMP r0,#0
0007bc 1a000002 BNE |L1.1996|
;;;230 Uart_Printf("O.K.\n");
0007c0 e24f0f92 ADR r0,|L1.1408|
0007c4 ebfffffe BL Uart_Printf
0007c8 ea000001 B |L1.2004|
;;;231 else
;;;232 Uart_Printf("ERROR!!!\n");
|L1.1996|
0007cc e24f0f93 ADR r0,|L1.1416|
0007d0 ebfffffe BL Uart_Printf
;;;233 SPI_Port_Return();
|L1.2004|
0007d4 ebfffffe BL SPI_Port_Return
;;;234 }
0007d8 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.2012|
0007dc 4950535b DCB "[SPI"
0007e0 6e492030 DCB "0 In"
0007e4 72726574 DCB "terr"
0007e8 20747075 DCB "upt "
0007ec 522f7854 DCB "Tx/R"
0007f0 65542078 DCB "x Te"
0007f4 0a5d7473 DCB "st]\n"
0007f8 00000000 DCB "\0\0\0\0"
|L1.2044|
0007fc 6e6e6f43 DCB "Conn"
000800 20746365 DCB "ect "
000804 4d495053 DCB "SPIM"
000808 3049534f DCB "OSI0"
00080c 746e6920 DCB " int"
000810 5053206f DCB "o SP"
000814 53494d49 DCB "IMIS"
000818 0a2e304f DCB "O0.\n"
00081c 00000000 DCB "\0\0\0\0"
|L1.2080|
000820 00000000 DCD Spi_Int
|L1.2084|
000824 31fff000 DCD 0x31fff000
|L1.2088|
000828 33323130 DCB "0123"
00082c 37363534 DCB "4567"
000830 42413938 DCB "89AB"
000834 46454443 DCB "CDEF"
000838 4a494847 DCB "GHIJ"
00083c 4e4d4c4b DCB "KLMN"
000840 5251504f DCB "OPQR"
000844 56555453 DCB "STUV"
000848 5a595857 DCB "WXYZ"
00084c 00000000 DCB "\0\0\0\0"
|L1.2128|
000850 72727543 DCB "Curr"
000854 20746e65 DCB "ent "
000858 61207852 DCB "Rx a"
00085c 65726464 DCB "ddre"
000860 3d207373 DCB "ss ="
000864 25783020 DCB " 0x%"
000868 00000a78 DCB "x\n\0\0"
ENDP
Test_Spi_MS_poll PROC
;;;261 void Test_Spi_MS_poll(void)
;;;262 {
00086c e92d4038 STMFD sp!,{r3-r5,lr}
;;;263 int i;
;;;264 char *txStr,*rxStr;
;;;265 SPI_Port_Init(1);
000870 e3a00001 MOV r0,#1
000874 ebfffffe BL SPI_Port_Init
;;;266 Uart_Printf("[SPI Polling Tx/Rx Test]\n");
000878 e24f0fe6 ADR r0,|L1.1256|
00087c ebfffffe BL Uart_Printf
;;;267 Uart_Printf("Connect SPIMOSI0 into SPIMISO0.\n");
000880 e24f008c ADR r0,|L1.2044|
000884 ebfffffe BL Uart_Printf
;;;268 endSpiTx=0;
000888 e3a00000 MOV r0,#0
00088c e51f136c LDR r1,|L1.1320|
000890 e5810000 STR r0,[r1,#0] ; endSpiTx
;;;269 spiTxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
000894 e28f0f54 ADR r0,|L1.2540|
000898 e51f1348 LDR r1,|L1.1368|
00089c e5810000 STR r0,[r1,#0] ; spiTxStr
;;;270 spiRxStr=(char *) SPI_BUFFER;
0008a0 e3a005c4 MOV r0,#0x31000000
0008a4 e51f1350 LDR r1,|L1.1372|
0008a8 e5810000 STR r0,[r1,#0] ; spiRxStr
;;;271 txStr=(char *)spiTxStr;
0008ac e51f035c LDR r0,|L1.1368|
0008b0 e5904000 LDR r4,[r0,#0] ; spiTxStr
;;;272 rxStr=(char *)spiRxStr;
0008b4 e51f0360 LDR r0,|L1.1372|
0008b8 e5905000 LDR r5,[r0,#0] ; spiRxStr
;;;273
;;;274 rSPPRE0=0x0; //if PCLK=50Mhz,SPICLK=25Mhz
0008bc e3a00000 MOV r0,#0
0008c0 e3a01459 MOV r1,#0x59000000
0008c4 e581000c STR r0,[r1,#0xc]
;;;275 rSPCON0=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
0008c8 e3a0001c MOV r0,#0x1c
0008cc e3a01459 MOV r1,#0x59000000
0008d0 e5810000 STR r0,[r1,#0]
;;;276 rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
0008d4 e3a00002 MOV r0,#2
0008d8 e3a01459 MOV r1,#0x59000000
0008dc e5810008 STR r0,[r1,#8]
;;;277
;;;278 while(endSpiTx==0)
0008e0 e1a00000 NOP
|L1.2276|
0008e4 e51f03c4 LDR r0,|L1.1320|
0008e8 e5900000 LDR r0,[r0,#0] ; endSpiTx
0008ec e3500000 CMP r0,#0
0008f0 1a000022 BNE |L1.2432|
;;;279 {
;;;280 if(rSPSTA0&0x1) //Check Tx ready state
0008f4 e3a00459 MOV r0,#0x59000000
0008f8 e5900004 LDR r0,[r0,#4]
0008fc e3100001 TST r0,#1
000900 0a00001d BEQ |L1.2428|
;;;281 {
;;;282 if(*spiTxStr!='\0')
000904 e51f03b4 LDR r0,|L1.1368|
000908 e5900000 LDR r0,[r0,#0] ; spiTxStr
00090c e5d00000 LDRB r0,[r0,#0]
000910 e3500000 CMP r0,#0
000914 0a000008 BEQ |L1.2364|
;;;283 rSPTDAT0=*spiTxStr++;
000918 e51f03c8 LDR r0,|L1.1368|
00091c e5901000 LDR r1,[r0,#0] ; spiTxStr
000920 e5d10000 LDRB r0,[r1,#0]
000924 e2811001 ADD r1,r1,#1
000928 e51f23d8 LDR r2,|L1.1368|
00092c e5821000 STR r1,[r2,#0] ; spiTxStr
000930 e3a01459 MOV r1,#0x59000000
000934 e5810010 STR r0,[r1,#0x10]
000938 ea000002 B |L1.2376|
;;;284 else
;;;285 endSpiTx=1;
|L1.2364|
00093c e3a00001 MOV r0,#1
000940 e51f1420 LDR r1,|L1.1320|
000944 e5810000 STR r0,[r1,#0] ; endSpiTx
;;;286 while(!(rSPSTA0&0x1)); //Check Rx ready state
|L1.2376|
000948 e1a00000 NOP
|L1.2380|
00094c e3a00459 MOV r0,#0x59000000
000950 e5900004 LDR r0,[r0,#4]
000954 e3100001 TST r0,#1
000958 0afffffb BEQ |L1.2380|
;;;287 *spiRxStr++=rSPRDAT0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -