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

📄 spi.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;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 + -