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

📄 spi01.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                  Test_Spi0_MS_poll PROC
;;;216    void Test_Spi0_MS_poll(void)
;;;217    {
0005f8  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;218        char *txStr,*rxStr;
;;;219        SPI0_Port_Init(1); 
0005fc  e3a00001          MOV      r0,#1
000600  ebfffffe          BL       SPI0_Port_Init
;;;220        Uart_Printf("[SPI Polling Tx/Rx Self-Test]\n");
000604  e28f0f59          ADR      r0,|L1.1904|
000608  ebfffffe          BL       _printf
;;;221        Uart_Printf("Connect SPIMOSI0 into SPIMISO0.\n");
00060c  e24f00a4          ADR      r0,|L1.1392|
000610  ebfffffe          BL       _printf
;;;222        end0SpiTx=0;
000614  e3a00000          MOV      r0,#0
000618  e51f141c          LDR      r1,|L1.516|
00061c  e5810000          STR      r0,[r1,#0]  ; end0SpiTx
;;;223        spi0TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
000620  e28f0f5a          ADR      r0,|L1.1936|
000624  e51f142c          LDR      r1,|L1.512|
000628  e5810000          STR      r0,[r1,#0]  ; spi0TxStr
;;;224        spi0RxStr=(char *) SPI_BUFFER0;
00062c  e3a00544          MOV      r0,#0x11000000
000630  e51f143c          LDR      r1,|L1.508|
000634  e5810000          STR      r0,[r1,#0]  ; spi0RxStr
;;;225        txStr=(char *)spi0TxStr;
000638  e51f0440          LDR      r0,|L1.512|
00063c  e5904000          LDR      r4,[r0,#0]  ; spi0TxStr
;;;226        rxStr=(char *)spi0RxStr;
000640  e51f044c          LDR      r0,|L1.508|
000644  e5905000          LDR      r5,[r0,#0]  ; spi0RxStr
;;;227    
;;;228        rSPPRE0=0x0;	//if PCLK=50Mhz,SPICLK=25Mhz
000648  e3a00000          MOV      r0,#0
00064c  e51f145c          LDR      r1,|L1.504|
000650  e581000c          STR      r0,[r1,#0xc]
;;;229        rSPCON0=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
000654  e3a0001c          MOV      r0,#0x1c
000658  e1c11000          BIC      r1,r1,r0
00065c  e5810000          STR      r0,[r1,#0]
;;;230        rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
000660  e3a00002          MOV      r0,#2
000664  e1c11000          BIC      r1,r1,r0
000668  e5810008          STR      r0,[r1,#8]
;;;231        
;;;232        while(end0SpiTx==0)
00066c  e1a00000          NOP      
                  |L1.1648|
000670  e51f0474          LDR      r0,|L1.516|
000674  e5900000          LDR      r0,[r0,#0]  ; end0SpiTx
000678  e3500000          CMP      r0,#0
00067c  1a000022          BNE      |L1.1804|
;;;233        {
;;;234    	if(rSPSTA0&0x1)   //Check Tx ready state    
000680  e51f0490          LDR      r0,|L1.504|
000684  e5900004          LDR      r0,[r0,#4]
000688  e3100001          TST      r0,#1
00068c  0a00001d          BEQ      |L1.1800|
;;;235    	{
;;;236    	  if(*spi0TxStr!='\0')
000690  e51f0498          LDR      r0,|L1.512|
000694  e5900000          LDR      r0,[r0,#0]  ; spi0TxStr
000698  e5d00000          LDRB     r0,[r0,#0]
00069c  e3500000          CMP      r0,#0
0006a0  0a000008          BEQ      |L1.1736|
;;;237    		rSPTDAT0=*spi0TxStr++;
0006a4  e51f04ac          LDR      r0,|L1.512|
0006a8  e5901000          LDR      r1,[r0,#0]  ; spi0TxStr
0006ac  e5d10000          LDRB     r0,[r1,#0]
0006b0  e2811001          ADD      r1,r1,#1
0006b4  e51f24bc          LDR      r2,|L1.512|
0006b8  e5821000          STR      r1,[r2,#0]  ; spi0TxStr
0006bc  e51f14cc          LDR      r1,|L1.504|
0006c0  e5810010          STR      r0,[r1,#0x10]
0006c4  ea000002          B        |L1.1748|
;;;238    	  else
;;;239    		end0SpiTx=1;
                  |L1.1736|
0006c8  e3a00001          MOV      r0,#1
0006cc  e51f14d0          LDR      r1,|L1.516|
0006d0  e5810000          STR      r0,[r1,#0]  ; end0SpiTx
;;;240    	  while(!(rSPSTA0&0x1));   //Check Rx ready state 
                  |L1.1748|
0006d4  e1a00000          NOP      
                  |L1.1752|
0006d8  e51f04e8          LDR      r0,|L1.504|
0006dc  e5900004          LDR      r0,[r0,#4]
0006e0  e3100001          TST      r0,#1
0006e4  0afffffb          BEQ      |L1.1752|
;;;241    	  *spi0RxStr++=rSPRDAT0;
0006e8  e51f04f8          LDR      r0,|L1.504|
0006ec  e5901014          LDR      r1,[r0,#0x14]
0006f0  e51f04fc          LDR      r0,|L1.508|
0006f4  e5900000          LDR      r0,[r0,#0]  ; spi0RxStr
0006f8  e5c01000          STRB     r1,[r0,#0]
0006fc  e2800001          ADD      r0,r0,#1
000700  e51f150c          LDR      r1,|L1.508|
000704  e5810000          STR      r0,[r1,#0]  ; spi0RxStr
;;;242    	}
;;;243        }
                  |L1.1800|
000708  eaffffd8          B        |L1.1648|
;;;244    
;;;245        rSPCON0=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,dis-SCK,master,low,A,normal
                  |L1.1804|
00070c  e3a0000c          MOV      r0,#0xc
000710  e51f1520          LDR      r1,|L1.504|
000714  e5810000          STR      r0,[r1,#0]
;;;246        *(spi0RxStr-1)='\0';//remove last dummy data & attach End of String(Null)
000718  e3a00000          MOV      r0,#0
00071c  e51f1528          LDR      r1,|L1.508|
000720  e5911000          LDR      r1,[r1,#0]  ; spi0RxStr
000724  e5410001          STRB     r0,[r1,#-1]
;;;247        
;;;248        Uart_Printf("Tx Strings:%s\n",txStr);
000728  e1a01004          MOV      r1,r4
00072c  e24f0f5c          ADR      r0,|L1.1476|
000730  ebfffffe          BL       _printf
;;;249        Uart_Printf("Rx Strings:%s :",rxStr);
000734  e1a01005          MOV      r1,r5
000738  e24f0f5b          ADR      r0,|L1.1492|
00073c  ebfffffe          BL       _printf
;;;250        
;;;251        if(strcmp(rxStr,txStr)==0)
000740  e1a01004          MOV      r1,r4
000744  e1a00005          MOV      r0,r5
000748  ebfffffe          BL       strcmp
00074c  e3500000          CMP      r0,#0
000750  1a000002          BNE      |L1.1888|
;;;252            Uart_Printf("O.K.\n");
000754  e24f0f5e          ADR      r0,|L1.1508|
000758  ebfffffe          BL       _printf
00075c  ea000001          B        |L1.1896|
;;;253        else 
;;;254            Uart_Printf("ERROR!!!\n");
                  |L1.1888|
000760  e24f0f5f          ADR      r0,|L1.1516|
000764  ebfffffe          BL       _printf
;;;255        SPI0_Port_Return();
                  |L1.1896|
000768  ebfffffe          BL       SPI0_Port_Return
;;;256    }
00076c  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.1904|
000770  4950535b          DCB      "[SPI"
000774  6c6f5020          DCB      " Pol"
000778  676e696c          DCB      "ling"
00077c  2f785420          DCB      " Tx/"
000780  53207852          DCB      "Rx S"
000784  2d666c65          DCB      "elf-"
000788  74736554          DCB      "Test"
00078c  00000a5d          DCB      "]\n\0\0"
                  |L1.1936|
000790  44434241          DCB      "ABCD"
000794  48474645          DCB      "EFGH"
000798  4c4b4a49          DCB      "IJKL"
00079c  504f4e4d          DCB      "MNOP"
0007a0  54535251          DCB      "QRST"
0007a4  58575655          DCB      "UVWX"
0007a8  31305a59          DCB      "YZ01"
0007ac  35343332          DCB      "2345"
0007b0  39383736          DCB      "6789"
0007b4  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Test_Spi01_MS_Int PROC
;;;259    void Test_Spi01_MS_Int(void)
;;;260    {
0007b8  e92d40f8          STMFD    sp!,{r3-r7,lr}
;;;261    	char *rx0Str,*tx0Str;
;;;262    	char *rx1Str,*tx1Str;
;;;263    	SPI0_Port_Init(1); // SPI0=Master, SPI1=Slave
0007bc  e3a00001          MOV      r0,#1
0007c0  ebfffffe          BL       SPI0_Port_Init
;;;264    	Uart_Printf("[SPI0(Master), SPI1(Slave) Interrupt Rx/Tx test]\n");
0007c4  e28f0f57          ADR      r0,|L1.2344|
0007c8  ebfffffe          BL       _printf
;;;265    	Uart_Printf("Connect J37: (1-2) and CON21: (1-20),(2-19),(3-18),(4-17)\n");
0007cc  e28f0f62          ADR      r0,|L1.2396|
0007d0  ebfffffe          BL       _printf
;;;266    
;;;267    	pISR_SPI0=(unsigned)Spi0_Int;
0007d4  e51f0248          LDR      r0,|L1.1428|
0007d8  e51f1248          LDR      r1,|L1.1432|
0007dc  e5810f78          STR      r0,[r1,#0xf78]
;;;268    	pISR_VLX_SPI1=(unsigned)Spi1_Int;
0007e0  e59f01b0          LDR      r0,|L1.2456|
0007e4  e5810f94          STR      r0,[r1,#0xf94]
;;;269    	
;;;270    	end0SpiTx=0;
0007e8  e3a00000          MOV      r0,#0
0007ec  e51f15f0          LDR      r1,|L1.516|
0007f0  e5810000          STR      r0,[r1,#0]  ; end0SpiTx
;;;271    	endSpi1Tx=0;
0007f4  e3a00000          MOV      r0,#0
0007f8  e51f12d0          LDR      r1,|L1.1328|
0007fc  e5810000          STR      r0,[r1,#0]  ; endSpi1Tx
;;;272    	spi0TxStr="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
000800  e28f0f65          ADR      r0,|L1.2460|
000804  e51f160c          LDR      r1,|L1.512|
000808  e5810000          STR      r0,[r1,#0]  ; spi0TxStr
;;;273    	//spi0TxStr="1234567890";
;;;274    	spi1TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234567890";
00080c  e28f0f6e          ADR      r0,|L1.2508|
000810  e51f12ec          LDR      r1,|L1.1324|
000814  e5810000          STR      r0,[r1,#0]  ; spi1TxStr
;;;275    	//spi1TxStr="ABCDEFGHIJ";
;;;276    	spi0RxStr=(char *) SPI_BUFFER0;
000818  e3a00544          MOV      r0,#0x11000000
00081c  e51f1628          LDR      r1,|L1.508|
000820  e5810000          STR      r0,[r1,#0]  ; spi0RxStr
;;;277    	spi1RxStr=(char *) SPI_BUFFER1;
000824  e2800d40          ADD      r0,r0,#0x1000
000828  e51f1308          LDR      r1,|L1.1320|
00082c  e5810000          STR      r0,[r1,#0]  ; spi1RxStr
;;;278    	
;;;279    	tx0Str=(char *)spi0TxStr;
000830  e51f0638          LDR      r0,|L1.512|
000834  e5906000          LDR      r6,[r0,#0]  ; spi0TxStr
;;;280    	rx0Str=(char *)spi0RxStr;
000838  e51f0644          LDR      r0,|L1.508|
00083c  e5904000          LDR      r4,[r0,#0]  ; spi0RxStr
;;;281    	tx1Str=(char *)spi1TxStr;
000840  e51f031c          LDR      r0,|L1.1324|
000844  e5907000          LDR      r7,[r0,#0]  ; spi1TxStr
;;;282    	rx1Str=(char *)spi1RxStr;
000848  e51f0328          LDR      r0,|L1.1320|
00084c  e5905000          LDR      r5,[r0,#0]  ; spi1RxStr
;;;283    		
;;;284    	rSPPRE1=0xff;	//if PCLK=50Mhz,SPICLK=12.5Mhz
000850  e3a000ff          MOV      r0,#0xff
000854  e51f1664          LDR      r1,|L1.504|
000858  e581002c          STR      r0,[r1,#0x2c]
;;;285    	rSPPIN1=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
00085c  e3a00002          MOV      r0,#2
000860  e1c11000          BIC      r1,r1,r0
000864  e5810028          STR      r0,[r1,#0x28]
;;;286    	
;;;287    	#if FORMAT1_A
;;;288    	rSPCON1=(1<<5)|(0<<4)|(0<<3)|(1<<2)|(0<<1)|(0<<0);//SPI1 :int,dis-SCK,slave,low,A,normal
000868  e3a00024          MOV      r0,#0x24
00086c  e1c11000          BIC      r1,r1,r0
000870  e5810020          STR      r0,[r1,#0x20]
;;;289    	#else
;;;290    	rSPCON1=(1<<5)|(0<<4)|(0<<3)|(1<<2)|(1<<1)|(0<<0);//SPI1 :int,dis-SCK,slave,low,B,normal
;;;291    	#endif
;;;292    	
;;;293    	Uart_Printf("Slave setting end...Press enter\n");
000874  e28f0f60          ADR      r0,|L1.2556|
000878  ebfffffe          BL       _printf
;;;294    	Uart_Getch();
00087c  ebfffffe          BL       Uart_Getch
;;;295    
;;;296    	rSPPRE0=0xff;	//if PCLK=50Mhz,SPICLK=12.5Mhz
000880  e3a000ff          MOV      r0,#0xff
000884  e51f1694          LDR      r1,|L1.504|
000888  e581000c          STR      r0,[r1,#0xc]
;;;297    	rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
00088c  e3a00002          MOV      r0,#2
000890  e1c11000          BIC      r1,r1,r0
000894  e5810008          STR      r0,[r1,#8]
;;;298       #if FORMAT0_A
;;;299    	rSPCON0=(1<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//SPI0 :int,en-SCK,master,low,A,normal
000898  e3a0003c          MOV      r0,#0x3c
00089c  e1c11000          BIC      r1,r1,r0
0008a0  e5810000          STR      r0,[r1,#0]
;;;300       #else
;;;301    	rSPCON0=(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(0<<0);//SPI0 :int,en-SCK,master,low,B,normal
;;;302       #endif
;;;303    	
;;;304    	//Master_nSS_Con(0); // Activate nSS 
;;;305    	Uart_Printf("nSS is asserted\n");
0008a4  e28f0f5d          ADR      r0,|L1.2592|
0008a8  ebfffffe          BL       _printf
;;;306    	rGPDAT&=~(1<<8);
0008ac  e51f0380          LDR      r0,|L1.1332|
0008b0  e590000c          LDR      r0,[r0,#0xc]
0008b4  e3c00f40          BIC      r0,r0,#0x100
0008b8  e51f138c          LDR      r1,|L1.1332|
0008bc  e581000c          STR      r0,[r1,#0xc]
;;;307    	rINTMSK&=~(BIT_VLX_SPI1);
0008c0  e2410646          SUB      r0,r1,#0x4600000
0008c4  e5900008          LDR      r0,[r0,#8]
0008c8  e3c00580          BIC      r0,r0,#0x20000000
0008cc  e2411646          SUB      r1,r1,#0x4600000
0008d0  e5810008          STR      r0,[r1,#8]
;;;308    	rINTSUBMSK&=~(BIT_SUB_SPI1);
0008d4  e1a00001          MOV      r0,r1
0008d8  e590001c          LDR      r0,[r0,#0x1c]
0008dc  e3c00880          BIC      r0,r0,#0x800000
0008e0  e581001c          STR      r0,[r1,#0x1c]
;;;309    	rINTMSK&=~(BIT_SPI0);
0008e4  e1a00001          MOV      r0,r1
0008e8  e5900008          LDR      r0,[r0,#8]

⌨️ 快捷键说明

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