⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;151        rGPGUP=spi_rGPGUP;
000300  e59f01d0          LDR      r0,|L1.1240|
000304  e5900000          LDR      r0,[r0,#0]  ; spi_rGPGUP
000308  e3a01456          MOV      r1,#0x56000000
00030c  e5810068          STR      r0,[r1,#0x68]
;;;152    
;;;153        rGPDCON=spi_rGPDCON;
000310  e59f01c4          LDR      r0,|L1.1244|
000314  e5900000          LDR      r0,[r0,#0]  ; spi_rGPDCON
000318  e3a01456          MOV      r1,#0x56000000
00031c  e5810030          STR      r0,[r1,#0x30]
;;;154        rGPDDAT=spi_rGPDDAT;
000320  e59f01b8          LDR      r0,|L1.1248|
000324  e5900000          LDR      r0,[r0,#0]  ; spi_rGPDDAT
000328  e3a01456          MOV      r1,#0x56000000
00032c  e5810034          STR      r0,[r1,#0x34]
;;;155        rGPDUP=spi_rGPDUP;
000330  e59f01ac          LDR      r0,|L1.1252|
000334  e5900000          LDR      r0,[r0,#0]  ; spi_rGPDUP
000338  e3a01456          MOV      r1,#0x56000000
00033c  e5810038          STR      r0,[r1,#0x38]
;;;156    }
000340  e1a0f00e          MOV      pc,lr
                          ENDP

                  Test_Spi1_MS_poll PROC
;;;159    void Test_Spi1_MS_poll(void)
;;;160    {
000344  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;161        int i;
;;;162        char *txStr,*rxStr;
;;;163        SPI_Port_Init(1); 
000348  e3a00001          MOV      r0,#1
00034c  ebfffffe          BL       SPI_Port_Init
;;;164        Uart_Printf("[SPI Polling Tx/Rx Test]\n");
000350  e28f0f64          ADR      r0,|L1.1256|
000354  ebfffffe          BL       Uart_Printf
;;;165        Uart_Printf("Connect SPIMOSI1 into SPIMISO1.\n");
000358  e28f0f69          ADR      r0,|L1.1284|
00035c  ebfffffe          BL       Uart_Printf
;;;166        endSpiTx=0;
000360  e3a00000          MOV      r0,#0
000364  e59f11bc          LDR      r1,|L1.1320|
000368  e5810000          STR      r0,[r1,#0]  ; endSpiTx
;;;167        spiTxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - SPI1";
00036c  e28f0f6e          ADR      r0,|L1.1324|
000370  e59f11e0          LDR      r1,|L1.1368|
000374  e5810000          STR      r0,[r1,#0]  ; spiTxStr
;;;168        spiRxStr=(char *) SPI_BUFFER;
000378  e3a005c4          MOV      r0,#0x31000000
00037c  e59f11d8          LDR      r1,|L1.1372|
000380  e5810000          STR      r0,[r1,#0]  ; spiRxStr
;;;169        txStr=(char *)spiTxStr;
000384  e59f01cc          LDR      r0,|L1.1368|
000388  e5904000          LDR      r4,[r0,#0]  ; spiTxStr
;;;170        rxStr=(char *)spiRxStr;
00038c  e59f01c8          LDR      r0,|L1.1372|
000390  e5905000          LDR      r5,[r0,#0]  ; spiRxStr
;;;171    
;;;172        rSPPRE1=0x0;	//if PCLK=50Mhz,SPICLK=25Mhz
000394  e3a00000          MOV      r0,#0
000398  e3a01459          MOV      r1,#0x59000000
00039c  e581002c          STR      r0,[r1,#0x2c]
;;;173        rSPCON1=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
0003a0  e3a0001c          MOV      r0,#0x1c
0003a4  e3a01459          MOV      r1,#0x59000000
0003a8  e5810020          STR      r0,[r1,#0x20]
;;;174        rSPPIN1=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
0003ac  e3a00002          MOV      r0,#2
0003b0  e3a01459          MOV      r1,#0x59000000
0003b4  e5810028          STR      r0,[r1,#0x28]
;;;175        
;;;176        while(endSpiTx==0)
0003b8  e1a00000          NOP      
                  |L1.956|
0003bc  e59f0164          LDR      r0,|L1.1320|
0003c0  e5900000          LDR      r0,[r0,#0]  ; endSpiTx
0003c4  e3500000          CMP      r0,#0
0003c8  1a000022          BNE      |L1.1112|
;;;177        {
;;;178    		if(rSPSTA1&0x1)   //Check Tx ready state    
0003cc  e3a00459          MOV      r0,#0x59000000
0003d0  e5900024          LDR      r0,[r0,#0x24]
0003d4  e3100001          TST      r0,#1
0003d8  0a00001d          BEQ      |L1.1108|
;;;179    		{
;;;180    	    	if(*spiTxStr!='\0')
0003dc  e59f0174          LDR      r0,|L1.1368|
0003e0  e5900000          LDR      r0,[r0,#0]  ; spiTxStr
0003e4  e5d00000          LDRB     r0,[r0,#0]
0003e8  e3500000          CMP      r0,#0
0003ec  0a000008          BEQ      |L1.1044|
;;;181    				rSPTDAT1=*spiTxStr++;
0003f0  e59f0160          LDR      r0,|L1.1368|
0003f4  e5901000          LDR      r1,[r0,#0]  ; spiTxStr
0003f8  e5d10000          LDRB     r0,[r1,#0]
0003fc  e2811001          ADD      r1,r1,#1
000400  e59f2150          LDR      r2,|L1.1368|
000404  e5821000          STR      r1,[r2,#0]  ; spiTxStr
000408  e3a01459          MOV      r1,#0x59000000
00040c  e5810030          STR      r0,[r1,#0x30]
000410  ea000002          B        |L1.1056|
;;;182    	    	else
;;;183    				endSpiTx=1;
                  |L1.1044|
000414  e3a00001          MOV      r0,#1
000418  e59f1108          LDR      r1,|L1.1320|
00041c  e5810000          STR      r0,[r1,#0]  ; endSpiTx
;;;184    	    	while(!(rSPSTA1&0x1));   //Check Rx ready state 
                  |L1.1056|
000420  e1a00000          NOP      
                  |L1.1060|
000424  e3a00459          MOV      r0,#0x59000000
000428  e5900024          LDR      r0,[r0,#0x24]
00042c  e3100001          TST      r0,#1
000430  0afffffb          BEQ      |L1.1060|
;;;185    			*spiRxStr++=rSPRDAT1;
000434  e3a00459          MOV      r0,#0x59000000
000438  e5901034          LDR      r1,[r0,#0x34]
00043c  e59f0118          LDR      r0,|L1.1372|
000440  e5900000          LDR      r0,[r0,#0]  ; spiRxStr
000444  e5c01000          STRB     r1,[r0,#0]
000448  e2800001          ADD      r0,r0,#1
00044c  e59f1108          LDR      r1,|L1.1372|
000450  e5810000          STR      r0,[r1,#0]  ; spiRxStr
;;;186    		}
;;;187        }
                  |L1.1108|
000454  eaffffd8          B        |L1.956|
;;;188    
;;;189        rSPCON1&=~(1<<4);//dis-SCK
                  |L1.1112|
000458  e3a00459          MOV      r0,#0x59000000
00045c  e5900020          LDR      r0,[r0,#0x20]
000460  e3c00010          BIC      r0,r0,#0x10
000464  e3a01459          MOV      r1,#0x59000000
000468  e5810020          STR      r0,[r1,#0x20]
;;;190        *(spiRxStr-1)='\0';//remove last dummy data & attach End of String(Null)
00046c  e3a00000          MOV      r0,#0
000470  e59f10e4          LDR      r1,|L1.1372|
000474  e5911000          LDR      r1,[r1,#0]  ; spiRxStr
000478  e5410001          STRB     r0,[r1,#-1]
;;;191        
;;;192        Uart_Printf("Tx Strings:%s\n",txStr);
00047c  e1a01004          MOV      r1,r4
000480  e28f00d8          ADR      r0,|L1.1376|
000484  ebfffffe          BL       Uart_Printf
;;;193        Uart_Printf("Rx Strings:%s :",rxStr);
000488  e1a01005          MOV      r1,r5
00048c  e28f00dc          ADR      r0,|L1.1392|
000490  ebfffffe          BL       Uart_Printf
;;;194        
;;;195        if(strcmp(rxStr,txStr)==0)
000494  e1a01004          MOV      r1,r4
000498  e1a00005          MOV      r0,r5
00049c  ebfffffe          BL       strcmp
0004a0  e3500000          CMP      r0,#0
0004a4  1a000002          BNE      |L1.1204|
;;;196            Uart_Printf("O.K.\n");
0004a8  e28f00d0          ADR      r0,|L1.1408|
0004ac  ebfffffe          BL       Uart_Printf
0004b0  ea000001          B        |L1.1212|
;;;197        else 
;;;198            Uart_Printf("ERROR!!!\n");
                  |L1.1204|
0004b4  e28f00cc          ADR      r0,|L1.1416|
0004b8  ebfffffe          BL       Uart_Printf
;;;199        SPI_Port_Return();
                  |L1.1212|
0004bc  ebfffffe          BL       SPI_Port_Return
;;;200    }
0004c0  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.1220|
0004c4  00000014          DCD      ||.bss$2|| + 20
                  |L1.1224|
0004c8  00000018          DCD      ||.bss$2|| + 24
                  |L1.1228|
0004cc  0000001c          DCD      ||.bss$2|| + 28
                  |L1.1232|
0004d0  00000020          DCD      ||.bss$2|| + 32
                  |L1.1236|
0004d4  00000024          DCD      ||.bss$2|| + 36
                  |L1.1240|
0004d8  00000028          DCD      ||.bss$2|| + 40
                  |L1.1244|
0004dc  0000002c          DCD      ||.bss$2|| + 44
                  |L1.1248|
0004e0  00000030          DCD      ||.bss$2|| + 48
                  |L1.1252|
0004e4  00000034          DCD      ||.bss$2|| + 52
                  |L1.1256|
0004e8  4950535b          DCB      "[SPI"
0004ec  6c6f5020          DCB      " Pol"
0004f0  676e696c          DCB      "ling"
0004f4  2f785420          DCB      " Tx/"
0004f8  54207852          DCB      "Rx T"
0004fc  5d747365          DCB      "est]"
000500  0000000a          DCB      "\n\0\0\0"
                  |L1.1284|
000504  6e6e6f43          DCB      "Conn"
000508  20746365          DCB      "ect "
00050c  4d495053          DCB      "SPIM"
000510  3149534f          DCB      "OSI1"
000514  746e6920          DCB      " int"
000518  5053206f          DCB      "o SP"
00051c  53494d49          DCB      "IMIS"
000520  0a2e314f          DCB      "O1.\n"
000524  00000000          DCB      "\0\0\0\0"
                  |L1.1320|
000528  00000008          DCD      ||.bss$2|| + 8
                  |L1.1324|
00052c  44434241          DCB      "ABCD"
000530  48474645          DCB      "EFGH"
000534  4c4b4a49          DCB      "IJKL"
000538  504f4e4d          DCB      "MNOP"
00053c  54535251          DCB      "QRST"
000540  58575655          DCB      "UVWX"
000544  31305a59          DCB      "YZ01"
000548  35343332          DCB      "2345"
00054c  39383736          DCB      "6789"
000550  53202d20          DCB      " - S"
000554  00314950          DCB      "PI1\0"
                  |L1.1368|
000558  00000000          DCD      ||.bss$2||
                  |L1.1372|
00055c  00000004          DCD      ||.bss$2|| + 4
                  |L1.1376|
000560  53207854          DCB      "Tx S"
000564  6e697274          DCB      "trin"
000568  253a7367          DCB      "gs:%"
00056c  00000a73          DCB      "s\n\0\0"
                  |L1.1392|
000570  53207852          DCB      "Rx S"
000574  6e697274          DCB      "trin"
000578  253a7367          DCB      "gs:%"
00057c  003a2073          DCB      "s :\0"
                  |L1.1408|
000580  2e4b2e4f          DCB      "O.K."
000584  0000000a          DCB      "\n\0\0\0"
                  |L1.1416|
000588  4f525245          DCB      "ERRO"
00058c  21212152          DCB      "R!!!"
000590  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  Spi_Int PROC
;;;237    void __irq Spi_Int(void)
;;;238    {
000594  e92d501f          STMFD    sp!,{r0-r4,r12,lr}
000598  e24dd004          SUB      sp,sp,#4
;;;239        unsigned int status;
;;;240    		
;;;241    	rINTMSK|=BIT_SPI0;
00059c  e3a0044a          MOV      r0,#0x4a000000
0005a0  e5900008          LDR      r0,[r0,#8]
0005a4  e3800840          ORR      r0,r0,#0x400000
0005a8  e3a0144a          MOV      r1,#0x4a000000
0005ac  e5810008          STR      r0,[r1,#8]
;;;242        ClearPending(BIT_SPI0); 
0005b0  e3a00840          MOV      r0,#0x400000
0005b4  e3a0144a          MOV      r1,#0x4a000000
0005b8  e5810000          STR      r0,[r1,#0]
0005bc  e3a00840          MOV      r0,#0x400000
0005c0  e3a0144a          MOV      r1,#0x4a000000
0005c4  e5810010          STR      r0,[r1,#0x10]
0005c8  e3a0044a          MOV      r0,#0x4a000000
0005cc  e5900010          LDR      r0,[r0,#0x10]
;;;243        status=rSPSTA0;
0005d0  e3a00459          MOV      r0,#0x59000000
0005d4  e5900004          LDR      r0,[r0,#4]
0005d8  e1a04000          MOV      r4,r0
;;;244        if(rSPSTA0&0x6) 
0005dc  e3a00459          MOV      r0,#0x59000000
0005e0  e5900004          LDR      r0,[r0,#4]
0005e4  e3100006          TST      r0,#6
0005e8  0a000002          BEQ      |L1.1528|
;;;245        	Uart_Printf("Data Collision or Multi Master Error(0x%x)!!!\n", status);
0005ec  e1a01004          MOV      r1,r4
0005f0  e28f0098          ADR      r0,|L1.1680|
0005f4  ebfffffe          BL       Uart_Printf
;;;246        while(!(rSPSTA0&0x1));   //Check ready state
                  |L1.1528|
0005f8  e1a00000          NOP      
                  |L1.1532|
0005fc  e3a00459          MOV      r0,#0x59000000
000600  e5900004          LDR      r0,[r0,#4]
000604  e3100001          TST      r0,#1
000608  0afffffb          BEQ      |L1.1532|
;;;247        *spiRxStr++=rSPRDAT0;    //First Rx data is garbage data
00060c  e3a00459          MOV      r0,#0x59000000
000610  e5901014          LDR      r1,[r0,#0x14]
000614  e51f00c0          LDR      r0,|L1.1372|
000618  e5900000          LDR      r0,[r0,#0]  ; spiRxStr
00061c  e5c01000          STRB     r1,[r0,#0]
000620  e2800001          ADD      r0,r0,#1
000624  e51f10d0          LDR      r1,|L1.1372|
000628  e5810000          STR      r0,[r1,#0]  ; spiRxStr

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -