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

📄 spi01.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0002f0  e1a00001          MOV      r0,r1
0002f4  e590001c          LDR      r0,[r0,#0x1c]
0002f8  e3800880          ORR      r0,r0,#0x800000
0002fc  e581001c          STR      r0,[r1,#0x1c]
;;;146    		 endSpi1Tx=1;
000300  e3a00001          MOV      r0,#1
000304  e59f1224          LDR      r1,|L1.1328|
000308  e5810000          STR      r0,[r1,#0]  ; endSpi1Tx
;;;147        }
;;;148    }
                  |L1.780|
00030c  e28dd004          ADD      sp,sp,#4
000310  e8bd501f          LDMFD    sp!,{r0-r4,r12,lr}
000314  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  SPI0_Port_Init PROC
;;;151    void SPI0_Port_Init(MASorSLV)
;;;152    {
000318  e59f1214          LDR      r1,|L1.1332|
;;;153    
;;;154        // SPIO1 setting
;;;155        spi_rGPCON_U=rGPCON_U;
00031c  e5911000          LDR      r1,[r1,#0]
000320  e59f2210          LDR      r2,|L1.1336|
000324  e5821000          STR      r1,[r2,#0]  ; spi_rGPCON_U
;;;156    	spi_rGPCON_M=rGPCON_M;
000328  e59f1204          LDR      r1,|L1.1332|
00032c  e5911004          LDR      r1,[r1,#4]
000330  e59f2204          LDR      r2,|L1.1340|
000334  e5821000          STR      r1,[r2,#0]  ; spi_rGPCON_M
;;;157        spi_rGPCON_L=rGPCON_L;
000338  e59f11f4          LDR      r1,|L1.1332|
00033c  e5911008          LDR      r1,[r1,#8]
000340  e59f21f8          LDR      r2,|L1.1344|
000344  e5821000          STR      r1,[r2,#0]  ; spi_rGPCON_L
;;;158        spi_rGPDAT=rGPDAT;
000348  e59f11e4          LDR      r1,|L1.1332|
00034c  e591100c          LDR      r1,[r1,#0xc]
000350  e59f21ec          LDR      r2,|L1.1348|
000354  e5821000          STR      r1,[r2,#0]  ; spi_rGPDAT
;;;159        spi_rGPUP=rGPPU;
000358  e59f11d4          LDR      r1,|L1.1332|
00035c  e5911010          LDR      r1,[r1,#0x10]
000360  e59f21e0          LDR      r2,|L1.1352|
000364  e5821000          STR      r1,[r2,#0]  ; spi_rGPUP
;;;160        rGPPU|=(1<<15)|(1<<16)|(1<<17);//Pull up Disable sclk,MISO, MOSI.
000368  e59f11c4          LDR      r1,|L1.1332|
00036c  e5911010          LDR      r1,[r1,#0x10]
000370  e3811be0          ORR      r1,r1,#0x38000
000374  e59f21b8          LDR      r2,|L1.1332|
000378  e5821010          STR      r1,[r2,#0x10]
;;;161        rGPCON_M|=(3<<8)|(3<<10)|(3<<12); //GP15(MOSI),GP16(MISO),GP17(SCLK)
00037c  e1a01002          MOV      r1,r2
000380  e5911004          LDR      r1,[r1,#4]
000384  e3811dfc          ORR      r1,r1,#0x3f00
000388  e5821004          STR      r1,[r2,#4]
;;;162       
;;;163       if(MASorSLV==1)
00038c  e3500001          CMP      r0,#1
000390  1a000009          BNE      |L1.956|
;;;164       {
;;;165          rGPDAT|=(1<<8); // Master(GPIO8_Output=High)
000394  e1a01002          MOV      r1,r2
000398  e591100c          LDR      r1,[r1,#0xc]
00039c  e3811f40          ORR      r1,r1,#0x100
0003a0  e582100c          STR      r1,[r2,#0xc]
;;;166          rGPCON_L=(rGPCON_L&0x3cffff)|(0x1<<16); // Master(GPIO8_Output)
0003a4  e1a01002          MOV      r1,r2
0003a8  e5911008          LDR      r1,[r1,#8]
0003ac  e3c114ff          BIC      r1,r1,#0xff000000
0003b0  e3c118c3          BIC      r1,r1,#0xc30000
0003b4  e3811b40          ORR      r1,r1,#0x10000
0003b8  e5821008          STR      r1,[r2,#8]
;;;167       }
;;;168     }
                  |L1.956|
0003bc  e12fff1e          BX       lr
                          ENDP

                  SPI0_Port_Return PROC
;;;170    void SPI0_Port_Return(void)
;;;171    {
0003c0  e59f0170          LDR      r0,|L1.1336|
;;;172        rGPCON_U=spi_rGPCON_U;
0003c4  e5900000          LDR      r0,[r0,#0]  ; spi_rGPCON_U
0003c8  e59f1164          LDR      r1,|L1.1332|
0003cc  e5810000          STR      r0,[r1,#0]
;;;173    	rGPCON_M=spi_rGPCON_M;
0003d0  e59f0164          LDR      r0,|L1.1340|
0003d4  e5900000          LDR      r0,[r0,#0]  ; spi_rGPCON_M
0003d8  e5810004          STR      r0,[r1,#4]
;;;174        rGPCON_L=spi_rGPCON_L;
0003dc  e59f015c          LDR      r0,|L1.1344|
0003e0  e5900000          LDR      r0,[r0,#0]  ; spi_rGPCON_L
0003e4  e5810008          STR      r0,[r1,#8]
;;;175        rGPDAT=spi_rGPDAT;
0003e8  e59f0154          LDR      r0,|L1.1348|
0003ec  e5900000          LDR      r0,[r0,#0]  ; spi_rGPDAT
0003f0  e581000c          STR      r0,[r1,#0xc]
;;;176        rGPPU=spi_rGPUP;
0003f4  e59f014c          LDR      r0,|L1.1352|
0003f8  e5900000          LDR      r0,[r0,#0]  ; spi_rGPUP
0003fc  e5810010          STR      r0,[r1,#0x10]
;;;177    }
000400  e12fff1e          BX       lr
                          ENDP

                  Master_nSS_Con PROC
;;;179    void Master_nSS_Con(int Set)
;;;180    {
000404  e59f1128          LDR      r1,|L1.1332|
;;;181         rGPDAT=rGPDAT&~(1<<8)|(Set<<8);
000408  e591100c          LDR      r1,[r1,#0xc]
00040c  e3c11f40          BIC      r1,r1,#0x100
000410  e1811400          ORR      r1,r1,r0,LSL #8
000414  e59f2118          LDR      r2,|L1.1332|
000418  e582100c          STR      r1,[r2,#0xc]
;;;182    }
00041c  e12fff1e          BX       lr
                          ENDP

                  Test_Spi0_MS_int PROC
;;;184    void Test_Spi0_MS_int(void)
;;;185    {
000420  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;186        char *txStr,*rxStr;
;;;187        SPI0_Port_Init(1); 
000424  e3a00001          MOV      r0,#1
000428  ebfffffe          BL       SPI0_Port_Init
;;;188        Uart_Printf("[SPI0 Interrupt Tx/Rx Self-Test]\n");
00042c  e28f0f46          ADR      r0,|L1.1356|
000430  ebfffffe          BL       _printf
;;;189        Uart_Printf("Connect SPIMOSI0 into SPIMISO0.\n");
000434  e28f0f4d          ADR      r0,|L1.1392|
000438  ebfffffe          BL       _printf
;;;190    
;;;191        pISR_SPI0=(unsigned)Spi0_Int;
00043c  e59f0150          LDR      r0,|L1.1428|
000440  e59f1150          LDR      r1,|L1.1432|
000444  e5810f78          STR      r0,[r1,#0xf78]
;;;192        end0SpiTx=0;
000448  e3a00000          MOV      r0,#0
00044c  e51f1250          LDR      r1,|L1.516|
000450  e5810000          STR      r0,[r1,#0]  ; end0SpiTx
;;;193        spi0TxStr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
000454  e28f0f50          ADR      r0,|L1.1436|
000458  e51f1260          LDR      r1,|L1.512|
00045c  e5810000          STR      r0,[r1,#0]  ; spi0TxStr
;;;194        spi0RxStr=(char *) SPI_BUFFER0;
000460  e3a00544          MOV      r0,#0x11000000
000464  e51f1270          LDR      r1,|L1.508|
000468  e5810000          STR      r0,[r1,#0]  ; spi0RxStr
;;;195        txStr=(char *)spi0TxStr;
00046c  e51f0274          LDR      r0,|L1.512|
000470  e5905000          LDR      r5,[r0,#0]  ; spi0TxStr
;;;196        rxStr=(char *)spi0RxStr;
000474  e51f0280          LDR      r0,|L1.508|
000478  e5904000          LDR      r4,[r0,#0]  ; spi0RxStr
;;;197        rSPPRE0=0x0;	// Baudrate=PCLK/2
00047c  e3a00000          MOV      r0,#0
000480  e51f1290          LDR      r1,|L1.504|
000484  e581000c          STR      r0,[r1,#0xc]
;;;198        rSPCON0=(1<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//int,en-SCK,master,low,A,normal
000488  e3a0003c          MOV      r0,#0x3c
00048c  e1c11000          BIC      r1,r1,r0
000490  e5810000          STR      r0,[r1,#0]
;;;199        rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
000494  e3a00002          MOV      r0,#2
000498  e1c11000          BIC      r1,r1,r0
00049c  e5810008          STR      r0,[r1,#8]
;;;200        rINTMSK=~(BIT_SPI0);
0004a0  e3e00840          MVN      r0,#0x400000
0004a4  e2411643          SUB      r1,r1,#0x4300000
0004a8  e5810008          STR      r0,[r1,#8]
;;;201    
;;;202        while(end0SpiTx==0);
0004ac  e1a00000          NOP      
                  |L1.1200|
0004b0  e51f02b4          LDR      r0,|L1.516|
0004b4  e5900000          LDR      r0,[r0,#0]  ; end0SpiTx
0004b8  e3500000          CMP      r0,#0
0004bc  0afffffb          BEQ      |L1.1200|
;;;203    
;;;204        rSPCON0=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Poll,dis-SCK,master,low,A,normal
0004c0  e3a0000c          MOV      r0,#0xc
0004c4  e51f12d4          LDR      r1,|L1.504|
0004c8  e5810000          STR      r0,[r1,#0]
;;;205        *spi0RxStr='\0';//attach End of String(Null)
0004cc  e3a00000          MOV      r0,#0
0004d0  e51f12dc          LDR      r1,|L1.508|
0004d4  e5911000          LDR      r1,[r1,#0]  ; spi0RxStr
0004d8  e5c10000          STRB     r0,[r1,#0]
;;;206        Uart_Printf("Tx Strings:%s\n",txStr);
0004dc  e1a01005          MOV      r1,r5
0004e0  e28f00dc          ADR      r0,|L1.1476|
0004e4  ebfffffe          BL       _printf
;;;207        Uart_Printf("Rx Strings:%s :",rxStr+1);//remove first dummy data
0004e8  e2841001          ADD      r1,r4,#1
0004ec  e28f00e0          ADR      r0,|L1.1492|
0004f0  ebfffffe          BL       _printf
;;;208        if(strcmp(rxStr+1,txStr)==0)
0004f4  e1a01005          MOV      r1,r5
0004f8  e2840001          ADD      r0,r4,#1
0004fc  ebfffffe          BL       strcmp
000500  e3500000          CMP      r0,#0
000504  1a000002          BNE      |L1.1300|
;;;209            Uart_Printf("O.K.\n");
000508  e28f00d4          ADR      r0,|L1.1508|
00050c  ebfffffe          BL       _printf
000510  ea000001          B        |L1.1308|
;;;210        else 
;;;211            Uart_Printf("ERROR!!!\n");
                  |L1.1300|
000514  e28f00d0          ADR      r0,|L1.1516|
000518  ebfffffe          BL       _printf
;;;212        SPI0_Port_Return();
                  |L1.1308|
00051c  ebfffffe          BL       SPI0_Port_Return
;;;213    }
000520  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.1316|
000524  00000028          DCD      ||.bss$2|| + 40
                  |L1.1320|
000528  0000000c          DCD      ||.bss$2|| + 12
                  |L1.1324|
00052c  00000008          DCD      ||.bss$2|| + 8
                  |L1.1328|
000530  00000014          DCD      ||.bss$2|| + 20
                  |L1.1332|
000534  44800000          DCD      0x44800000
                  |L1.1336|
000538  00000040          DCD      ||.bss$2|| + 64
                  |L1.1340|
00053c  00000044          DCD      ||.bss$2|| + 68
                  |L1.1344|
000540  00000048          DCD      ||.bss$2|| + 72
                  |L1.1348|
000544  0000004c          DCD      ||.bss$2|| + 76
                  |L1.1352|
000548  00000050          DCD      ||.bss$2|| + 80
                  |L1.1356|
00054c  4950535b          DCB      "[SPI"
000550  6e492030          DCB      "0 In"
000554  72726574          DCB      "terr"
000558  20747075          DCB      "upt "
00055c  522f7854          DCB      "Tx/R"
000560  65532078          DCB      "x Se"
000564  542d666c          DCB      "lf-T"
000568  5d747365          DCB      "est]"
00056c  0000000a          DCB      "\n\0\0\0"
                  |L1.1392|
000570  6e6e6f43          DCB      "Conn"
000574  20746365          DCB      "ect "
000578  4d495053          DCB      "SPIM"
00057c  3049534f          DCB      "OSI0"
000580  746e6920          DCB      " int"
000584  5053206f          DCB      "o SP"
000588  53494d49          DCB      "IMIS"
00058c  0a2e304f          DCB      "O0.\n"
000590  00000000          DCB      "\0\0\0\0"
                  |L1.1428|
000594  00000000          DCD      Spi0_Int
                  |L1.1432|
000598  13fff000          DCD      0x13fff000
                  |L1.1436|
00059c  33323130          DCB      "0123"
0005a0  37363534          DCB      "4567"
0005a4  42413938          DCB      "89AB"
0005a8  46454443          DCB      "CDEF"
0005ac  4a494847          DCB      "GHIJ"
0005b0  4e4d4c4b          DCB      "KLMN"
0005b4  5251504f          DCB      "OPQR"
0005b8  56555453          DCB      "STUV"
0005bc  5a595857          DCB      "WXYZ"
0005c0  00000000          DCB      "\0\0\0\0"
                  |L1.1476|
0005c4  53207854          DCB      "Tx S"
0005c8  6e697274          DCB      "trin"
0005cc  253a7367          DCB      "gs:%"
0005d0  00000a73          DCB      "s\n\0\0"
                  |L1.1492|
0005d4  53207852          DCB      "Rx S"
0005d8  6e697274          DCB      "trin"
0005dc  253a7367          DCB      "gs:%"
0005e0  003a2073          DCB      "s :\0"
                  |L1.1508|
0005e4  2e4b2e4f          DCB      "O.K."
0005e8  0000000a          DCB      "\n\0\0\0"
                  |L1.1516|
0005ec  4f525245          DCB      "ERRO"
0005f0  21212152          DCB      "R!!!"
0005f4  0000000a          DCB      "\n\0\0\0"
                          ENDP

⌨️ 快捷键说明

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