📄 spi.txt
字号:
; 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 + -