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

📄 spi.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\spi.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  Spi_Test PROC
;;;76     void Spi_Test(void)
;;;77     {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;78     	int i;
;;;79     	
;;;80     	Uart_Printf("\n======  SPI Test program start ======\n");
000004  e28f00b4          ADR      r0,|L1.192|
000008  ebfffffe          BL       Uart_Printf
;;;81     		
;;;82     	while(1)
00000c  e1a00000          NOP      
                  |L1.16|
000010  e1a00000          NOP      
;;;83     	{
;;;84     		i=0;
000014  e3a04000          MOV      r4,#0
;;;85     		Uart_Printf("\n\n");
000018  e28f00c8          ADR      r0,|L1.232|
00001c  ebfffffe          BL       Uart_Printf
;;;86     		while(1)
000020  e1a00000          NOP      
                  |L1.36|
000024  e1a00000          NOP      
;;;87     		{   //display menu
;;;88     			Uart_Printf("%2d:%s",i,func_spi_test[i][1]);
000028  e59f00bc          LDR      r0,|L1.236|
00002c  e0800184          ADD      r0,r0,r4,LSL #3
000030  e1a01004          MOV      r1,r4
000034  e5902004          LDR      r2,[r0,#4]
000038  e28f00b0          ADR      r0,|L1.240|
00003c  ebfffffe          BL       Uart_Printf
;;;89     			i++;
000040  e2844001          ADD      r4,r4,#1
;;;90     			if((int)(func_spi_test[i][0])==0)
000044  e59f00a0          LDR      r0,|L1.236|
000048  e7900184          LDR      r0,[r0,r4,LSL #3]
00004c  e3500000          CMP      r0,#0
000050  1a000002          BNE      |L1.96|
;;;91     			{
;;;92     				Uart_Printf("\n");
000054  e28f009c          ADR      r0,|L1.248|
000058  ebfffffe          BL       Uart_Printf
;;;93     				break;
00005c  ea000004          B        |L1.116|
;;;94     			}
;;;95     			if((i%4)==0)
                  |L1.96|
000060  e3140003          TST      r4,#3
000064  1a000001          BNE      |L1.112|
;;;96     			Uart_Printf("\n");
000068  e28f0088          ADR      r0,|L1.248|
00006c  ebfffffe          BL       Uart_Printf
;;;97     		}
                  |L1.112|
000070  eaffffeb          B        |L1.36|
;;;98     
;;;99     		Uart_Printf("\nPress Enter key to exit : ");
                  |L1.116|
000074  e28f0080          ADR      r0,|L1.252|
000078  ebfffffe          BL       Uart_Printf
;;;100    		i = Uart_GetIntNum();
00007c  ebfffffe          BL       Uart_GetIntNum
000080  e1a04000          MOV      r4,r0
;;;101    		if(i==-1) break;		// return.
000084  e3740001          CMN      r4,#1
000088  1a000000          BNE      |L1.144|
00008c  ea000008          B        |L1.180|
;;;102    		if(i>=0 && (i<((sizeof(func_spi_test)-1)/8)) )	// select and execute...
                  |L1.144|
000090  e3540000          CMP      r4,#0
000094  ba000005          BLT      |L1.176|
000098  e354000b          CMP      r4,#0xb
00009c  2a000003          BCS      |L1.176|
;;;103    			( (void (*)(void)) (func_spi_test[i][0]) )();
0000a0  e59f1044          LDR      r1,|L1.236|
0000a4  e7910184          LDR      r0,[r1,r4,LSL #3]
0000a8  e1a0e00f          MOV      lr,pc
0000ac  e1a0f000          MOV      pc,r0
;;;104    	}
                  |L1.176|
0000b0  eaffffd6          B        |L1.16|
;;;105    	
;;;106    	Uart_Printf("\n====== SPI Test program end ======\n");
                  |L1.180|
0000b4  e28f005c          ADR      r0,|L1.280|
0000b8  ebfffffe          BL       Uart_Printf
;;;107    }
0000bc  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.192|
0000c0  3d3d3d0a          DCB      "\n==="
0000c4  203d3d3d          DCB      "=== "
0000c8  49505320          DCB      " SPI"
0000cc  73655420          DCB      " Tes"
0000d0  72702074          DCB      "t pr"
0000d4  6172676f          DCB      "ogra"
0000d8  7473206d          DCB      "m st"
0000dc  20747261          DCB      "art "
0000e0  3d3d3d3d          DCB      "===="
0000e4  000a3d3d          DCB      "==\n\0"
                  |L1.232|
0000e8  00000a0a          DCB      "\n\n\0\0"
                  |L1.236|
0000ec  00000000          DCD      func_spi_test
                  |L1.240|
0000f0  3a643225          DCB      "%2d:"
0000f4  00007325          DCB      "%s\0\0"
                  |L1.248|
0000f8  0000000a          DCB      "\n\0\0\0"
                  |L1.252|
0000fc  6572500a          DCB      "\nPre"
000100  45207373          DCB      "ss E"
000104  7265746e          DCB      "nter"
000108  79656b20          DCB      " key"
00010c  206f7420          DCB      " to "
000110  74697865          DCB      "exit"
000114  00203a20          DCB      " : \0"
                  |L1.280|
000118  3d3d3d0a          DCB      "\n==="
00011c  203d3d3d          DCB      "=== "
000120  20495053          DCB      "SPI "
000124  74736554          DCB      "Test"
000128  6f727020          DCB      " pro"
00012c  6d617267          DCB      "gram"
000130  646e6520          DCB      " end"
000134  3d3d3d20          DCB      " ==="
000138  0a3d3d3d          DCB      "===\n"
00013c  00000000          DCB      "\0\0\0\0"
                          ENDP

                  SPI_Port_Init PROC
;;;109    void SPI_Port_Init(int MASorSLV)
;;;110    {
000140  e3a01456          MOV      r1,#0x56000000
;;;111    	// SPI channel 0 setting
;;;112        spi_rGPECON=rGPECON;
000144  e5911040          LDR      r1,[r1,#0x40]
000148  e59f2374          LDR      r2,|L1.1220|
00014c  e5821000          STR      r1,[r2,#0]  ; spi_rGPECON
;;;113        spi_rGPEDAT=rGPEDAT;
000150  e3a01456          MOV      r1,#0x56000000
000154  e5911044          LDR      r1,[r1,#0x44]
000158  e59f2368          LDR      r2,|L1.1224|
00015c  e5821000          STR      r1,[r2,#0]  ; spi_rGPEDAT
;;;114        spi_rGPEUP=rGPEUP;
000160  e3a01456          MOV      r1,#0x56000000
000164  e5911048          LDR      r1,[r1,#0x48]
000168  e59f235c          LDR      r2,|L1.1228|
00016c  e5821000          STR      r1,[r2,#0]  ; spi_rGPEUP
;;;115        rGPECON=((rGPECON&0xf03fffff)|0xa800000); // using SPI 0
000170  e3a01456          MOV      r1,#0x56000000
000174  e5911040          LDR      r1,[r1,#0x40]
000178  e3c116fc          BIC      r1,r1,#0xfc00000
00017c  e38116a8          ORR      r1,r1,#0xa800000
000180  e3a02456          MOV      r2,#0x56000000
000184  e5821040          STR      r1,[r2,#0x40]
;;;116    	rGPEUP = (rGPEUP & ~(7<<11)) | (1<<13);
000188  e3a01456          MOV      r1,#0x56000000
00018c  e5911048          LDR      r1,[r1,#0x48]
000190  e3c11de0          BIC      r1,r1,#0x3800
000194  e3811d80          ORR      r1,r1,#0x2000
000198  e3a02456          MOV      r2,#0x56000000
00019c  e5821048          STR      r1,[r2,#0x48]
;;;117        spi_rGPGCON=rGPGCON;
0001a0  e3a01456          MOV      r1,#0x56000000
0001a4  e5911060          LDR      r1,[r1,#0x60]
0001a8  e59f2320          LDR      r2,|L1.1232|
0001ac  e5821000          STR      r1,[r2,#0]  ; spi_rGPGCON
;;;118        spi_rGPGDAT=rGPGDAT;
0001b0  e3a01456          MOV      r1,#0x56000000
0001b4  e5911064          LDR      r1,[r1,#0x64]
0001b8  e59f2314          LDR      r2,|L1.1236|
0001bc  e5821000          STR      r1,[r2,#0]  ; spi_rGPGDAT
;;;119        spi_rGPGUP=rGPGUP;
0001c0  e3a01456          MOV      r1,#0x56000000
0001c4  e5911068          LDR      r1,[r1,#0x68]
0001c8  e59f2308          LDR      r2,|L1.1240|
0001cc  e5821000          STR      r1,[r2,#0]  ; spi_rGPGUP
;;;120        if(MASorSLV==1)
0001d0  e3500001          CMP      r0,#1
0001d4  1a00000b          BNE      |L1.520|
;;;121        {
;;;122            rGPGCON=((rGPGCON&0xffffffcf)|0x10); // Master(GPIO_Output)
0001d8  e3a01456          MOV      r1,#0x56000000
0001dc  e5911060          LDR      r1,[r1,#0x60]
0001e0  e3c11030          BIC      r1,r1,#0x30
0001e4  e3811010          ORR      r1,r1,#0x10
0001e8  e3a02456          MOV      r2,#0x56000000
0001ec  e5821060          STR      r1,[r2,#0x60]
;;;123            rGPGDAT|=0x4; // Activate nSS 
0001f0  e3a01456          MOV      r1,#0x56000000
0001f4  e5911064          LDR      r1,[r1,#0x64]
0001f8  e3811004          ORR      r1,r1,#4
0001fc  e3a02456          MOV      r2,#0x56000000
000200  e5821064          STR      r1,[r2,#0x64]
000204  ea000004          B        |L1.540|
;;;124        }
;;;125        else
;;;126        	rGPGCON=((rGPGCON&0xffffffcf)|0x30); // Slave(nSS)
                  |L1.520|
000208  e3a01456          MOV      r1,#0x56000000
00020c  e5911060          LDR      r1,[r1,#0x60]
000210  e3811030          ORR      r1,r1,#0x30
000214  e3a02456          MOV      r2,#0x56000000
000218  e5821060          STR      r1,[r2,#0x60]
;;;127        rGPGUP|=0x4;
                  |L1.540|
00021c  e3a01456          MOV      r1,#0x56000000
000220  e5911068          LDR      r1,[r1,#0x68]
000224  e3811004          ORR      r1,r1,#4
000228  e3a02456          MOV      r2,#0x56000000
00022c  e5821068          STR      r1,[r2,#0x68]
;;;128    /*
;;;129    	// SPI channel 1-1 setting --> Key board
;;;130    	rGPGCON=(rGPGCON&0xffff033f)|(3<<6)|(3<<10)|(3<<12)|(1<<14); // MISO1, MOSI1, CLK1, Master
;;;131    	rGPGDAT|=0x8;
;;;132    	rGPGUP=(rGPGUP&~(7<<5))|(1<<7);
;;;133    */
;;;134    	// SPI channel 1-2 setting --> VD16~18
;;;135    	spi_rGPDCON=rGPDCON;
000230  e3a01456          MOV      r1,#0x56000000
000234  e5911030          LDR      r1,[r1,#0x30]
000238  e59f229c          LDR      r2,|L1.1244|
00023c  e5821000          STR      r1,[r2,#0]  ; spi_rGPDCON
;;;136    	spi_rGPDDAT=rGPDDAT;
000240  e3a01456          MOV      r1,#0x56000000
000244  e5911034          LDR      r1,[r1,#0x34]
000248  e59f2290          LDR      r2,|L1.1248|
00024c  e5821000          STR      r1,[r2,#0]  ; spi_rGPDDAT
;;;137    	spi_rGPDUP=rGPDUP;
000250  e3a01456          MOV      r1,#0x56000000
000254  e5911038          LDR      r1,[r1,#0x38]
000258  e59f2284          LDR      r2,|L1.1252|
00025c  e5821000          STR      r1,[r2,#0]  ; spi_rGPDUP
;;;138    	rGPDCON=(rGPDCON&0xcfc0ffff)|(3<<16)|(3<<18)|(3<<20)|(1<<28); // MISO1, MOSI1, CLK1, Master
000260  e3a01456          MOV      r1,#0x56000000
000264  e5911030          LDR      r1,[r1,#0x30]
000268  e3c115c0          BIC      r1,r1,#0x30000000
00026c  e3c119fc          BIC      r1,r1,#0x3f0000
000270  e3811540          ORR      r1,r1,#0x10000000
000274  e38119fc          ORR      r1,r1,#0x3f0000
000278  e3a02456          MOV      r2,#0x56000000
00027c  e5821030          STR      r1,[r2,#0x30]
;;;139    	rGPDDAT|=1<<14;
000280  e3a01456          MOV      r1,#0x56000000
000284  e5911034          LDR      r1,[r1,#0x34]
000288  e3811c40          ORR      r1,r1,#0x4000
00028c  e3a02456          MOV      r2,#0x56000000
000290  e5821034          STR      r1,[r2,#0x34]
;;;140    	rGPDUP=(rGPDUP&~(7<<8))|(1<<10);
000294  e3a01456          MOV      r1,#0x56000000
000298  e5911038          LDR      r1,[r1,#0x38]
00029c  e3c11e70          BIC      r1,r1,#0x700
0002a0  e3811e40          ORR      r1,r1,#0x400
0002a4  e3a02456          MOV      r2,#0x56000000
0002a8  e5821038          STR      r1,[r2,#0x38]
;;;141    }
0002ac  e1a0f00e          MOV      pc,lr
                          ENDP

                  SPI_Port_Return PROC
;;;143    void SPI_Port_Return(void)
;;;144    {
0002b0  e59f020c          LDR      r0,|L1.1220|
;;;145        rGPECON=spi_rGPECON;
0002b4  e5900000          LDR      r0,[r0,#0]  ; spi_rGPECON
0002b8  e3a01456          MOV      r1,#0x56000000
0002bc  e5810040          STR      r0,[r1,#0x40]
;;;146        rGPEDAT=spi_rGPEDAT;
0002c0  e59f0200          LDR      r0,|L1.1224|
0002c4  e5900000          LDR      r0,[r0,#0]  ; spi_rGPEDAT
0002c8  e3a01456          MOV      r1,#0x56000000
0002cc  e5810044          STR      r0,[r1,#0x44]
;;;147        rGPEUP=spi_rGPEUP;
0002d0  e59f01f4          LDR      r0,|L1.1228|
0002d4  e5900000          LDR      r0,[r0,#0]  ; spi_rGPEUP
0002d8  e3a01456          MOV      r1,#0x56000000
0002dc  e5810048          STR      r0,[r1,#0x48]
;;;148    
;;;149        rGPGCON=spi_rGPGCON;
0002e0  e59f01e8          LDR      r0,|L1.1232|
0002e4  e5900000          LDR      r0,[r0,#0]  ; spi_rGPGCON
0002e8  e3a01456          MOV      r1,#0x56000000
0002ec  e5810060          STR      r0,[r1,#0x60]
;;;150        rGPGDAT=spi_rGPGDAT;
0002f0  e59f01dc          LDR      r0,|L1.1236|
0002f4  e5900000          LDR      r0,[r0,#0]  ; spi_rGPGDAT
0002f8  e3a01456          MOV      r1,#0x56000000
0002fc  e5810064          STR      r0,[r1,#0x64]

⌨️ 快捷键说明

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