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

📄 spi.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00095c  e3a00459          MOV      r0,#0x59000000
000960  e5901014          LDR      r1,[r0,#0x14]
000964  e51f0410          LDR      r0,|L1.1372|
000968  e5900000          LDR      r0,[r0,#0]  ; spiRxStr
00096c  e5c01000          STRB     r1,[r0,#0]
000970  e2800001          ADD      r0,r0,#1
000974  e51f1420          LDR      r1,|L1.1372|
000978  e5810000          STR      r0,[r1,#0]  ; spiRxStr
;;;288    		}
;;;289        }
                  |L1.2428|
00097c  eaffffd8          B        |L1.2276|
;;;290    
;;;291        rSPCON0&=~(1<<4);//dis-SCK
                  |L1.2432|
000980  e3a00459          MOV      r0,#0x59000000
000984  e5900000          LDR      r0,[r0,#0]
000988  e3c00010          BIC      r0,r0,#0x10
00098c  e3a01459          MOV      r1,#0x59000000
000990  e5810000          STR      r0,[r1,#0]
;;;292        *(spiRxStr-1)='\0';//remove last dummy data & attach End of String(Null)
000994  e3a00000          MOV      r0,#0
000998  e51f1444          LDR      r1,|L1.1372|
00099c  e5911000          LDR      r1,[r1,#0]  ; spiRxStr
0009a0  e5410001          STRB     r0,[r1,#-1]
;;;293        
;;;294        Uart_Printf("Tx Strings:%s\n",txStr);
0009a4  e1a01004          MOV      r1,r4
0009a8  e59f0064          LDR      r0,|L1.2580|
0009ac  ebfffffe          BL       Uart_Printf
;;;295        Uart_Printf("Rx Strings:%s :",rxStr);
0009b0  e1a01005          MOV      r1,r5
0009b4  e59f005c          LDR      r0,|L1.2584|
0009b8  ebfffffe          BL       Uart_Printf
;;;296        
;;;297        if(strcmp(rxStr,txStr)==0)
0009bc  e1a01004          MOV      r1,r4
0009c0  e1a00005          MOV      r0,r5
0009c4  ebfffffe          BL       strcmp
0009c8  e3500000          CMP      r0,#0
0009cc  1a000002          BNE      |L1.2524|
;;;298            Uart_Printf("O.K.\n");
0009d0  e28f0044          ADR      r0,|L1.2588|
0009d4  ebfffffe          BL       Uart_Printf
0009d8  ea000001          B        |L1.2532|
;;;299        else 
;;;300            Uart_Printf("ERROR!!!\n");
                  |L1.2524|
0009dc  e59f0040          LDR      r0,|L1.2596|
0009e0  ebfffffe          BL       Uart_Printf
;;;301        SPI_Port_Return();
                  |L1.2532|
0009e4  ebfffffe          BL       SPI_Port_Return
;;;302    }
0009e8  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.2540|
0009ec  44434241          DCB      "ABCD"
0009f0  48474645          DCB      "EFGH"
0009f4  4c4b4a49          DCB      "IJKL"
0009f8  504f4e4d          DCB      "MNOP"
0009fc  54535251          DCB      "QRST"
000a00  58575655          DCB      "UVWX"
000a04  31305a59          DCB      "YZ01"
000a08  35343332          DCB      "2345"
000a0c  39383736          DCB      "6789"
000a10  00000000          DCB      "\0\0\0\0"
                  |L1.2580|
000a14  00000000          DCD      |L1.1376|
                  |L1.2584|
000a18  00000000          DCD      |L1.1392|
                  |L1.2588|
000a1c  2e4b2e4f          DCB      "O.K."
000a20  0000000a          DCB      "\n\0\0\0"
                  |L1.2596|
000a24  00000000          DCD      |L1.1416|
                          ENDP

                  Dma1Tx_Int PROC
;;;354    void __irq Dma1Tx_Int(void)
;;;355    {
000a28  e92d0003          STMFD    sp!,{r0,r1}
;;;356        tx_dma1Done=1;
000a2c  e3a00001          MOV      r0,#1
000a30  e59f119c          LDR      r1,|L1.3028|
000a34  e5810000          STR      r0,[r1,#0]  ; tx_dma1Done
;;;357        rINTMSK|=BIT_DMA1;
000a38  e3a0044a          MOV      r0,#0x4a000000
000a3c  e5900008          LDR      r0,[r0,#8]
000a40  e3800a40          ORR      r0,r0,#0x40000
000a44  e3a0144a          MOV      r1,#0x4a000000
000a48  e5810008          STR      r0,[r1,#8]
;;;358        ClearPending(BIT_DMA1);
000a4c  e3a00a40          MOV      r0,#0x40000
000a50  e3a0144a          MOV      r1,#0x4a000000
000a54  e5810000          STR      r0,[r1,#0]
000a58  e3a00a40          MOV      r0,#0x40000
000a5c  e3a0144a          MOV      r1,#0x4a000000
000a60  e5810010          STR      r0,[r1,#0x10]
000a64  e3a0044a          MOV      r0,#0x4a000000
000a68  e5900010          LDR      r0,[r0,#0x10]
;;;359    }
000a6c  e8bd0003          LDMFD    sp!,{r0,r1}
000a70  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Test_Spi_M_Tx_DMA1 PROC
;;;305    void Test_Spi_M_Tx_DMA1(void)
;;;306    {
000a74  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;307    
;;;308        int i,first,second;
;;;309        unsigned char *tx_ptr;
;;;310        SPI_Port_Init(1); // Master(GPIO) 
000a78  e3a00001          MOV      r0,#1
000a7c  ebfffffe          BL       SPI_Port_Init
;;;311        Uart_Printf("[SPI DMA1 Master Tx test]\n");
000a80  e28f0f54          ADR      r0,|L1.3032|
000a84  ebfffffe          BL       Uart_Printf
;;;312        Uart_Printf("This test should be configured two boards\nStart Rx first.\n");
000a88  e28f0f59          ADR      r0,|L1.3060|
000a8c  ebfffffe          BL       Uart_Printf
;;;313    
;;;314        tx_ptr=(unsigned char *) SPI_BUFFER;
000a90  e3a055c4          MOV      r5,#0x31000000
;;;315        for(i=0; i<spi_count; i++)
000a94  e3a04000          MOV      r4,#0
                  |L1.2712|
000a98  e3540080          CMP      r4,#0x80
000a9c  aa000004          BGE      |L1.2740|
000aa0  ea000001          B        |L1.2732|
                  |L1.2724|
000aa4  e2844001          ADD      r4,r4,#1
000aa8  eafffffa          B        |L1.2712|
;;;316    		*(tx_ptr+i)=i; 
                  |L1.2732|
000aac  e7c54004          STRB     r4,[r5,r4]
000ab0  eafffffb          B        |L1.2724|
;;;317    
;;;318        tx_dma1Done=0;
                  |L1.2740|
000ab4  e3a00000          MOV      r0,#0
000ab8  e59f1114          LDR      r1,|L1.3028|
000abc  e5810000          STR      r0,[r1,#0]  ; tx_dma1Done
;;;319    
;;;320        pISR_DMA1 = (unsigned)Dma1Tx_Int;
000ac0  e59f0168          LDR      r0,|L1.3120|
000ac4  e51f12a8          LDR      r1,|L1.2084|
000ac8  e5810f68          STR      r0,[r1,#0xf68]
;;;321        rINTMSK=~(BIT_DMA1);
000acc  e3e00a40          MVN      r0,#0x40000
000ad0  e3a0144a          MOV      r1,#0x4a000000
000ad4  e5810008          STR      r0,[r1,#8]
;;;322    
;;;323        //Step1. SPI init
;;;324        rSPPRE0=0x0;	//if PCLK=50Mhz,SPICLK=25Mhz
000ad8  e3a00000          MOV      r0,#0
000adc  e3a01459          MOV      r1,#0x59000000
000ae0  e581000c          STR      r0,[r1,#0xc]
;;;325        rSPCON0=(2<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//DMA1,en-SCK,master,low,A,normal
000ae4  e3a0005c          MOV      r0,#0x5c
000ae8  e3a01459          MOV      r1,#0x59000000
000aec  e5810000          STR      r0,[r1,#0]
;;;326    //    rSPCON0=(2<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(0<<0);//DMA1,en-SCK,master,low,B,normal    
;;;327        rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
000af0  e3a00002          MOV      r0,#2
000af4  e3a01459          MOV      r1,#0x59000000
000af8  e5810008          STR      r0,[r1,#8]
;;;328    
;;;329        //Step2. DMA1 init 
;;;330        rDISRC1=(unsigned)tx_ptr;	//Address of Memory
000afc  e3a0044b          MOV      r0,#0x4b000000
000b00  e5805040          STR      r5,[r0,#0x40]
;;;331        rDISRCC1=(0<<1)|(0);		//AHB(Memory), inc
000b04  e3a00000          MOV      r0,#0
000b08  e3a0144b          MOV      r1,#0x4b000000
000b0c  e5810044          STR      r0,[r1,#0x44]
;;;332        rDIDST1=(unsigned)0x59000010;//Address of SPTDAT Register
000b10  e59f011c          LDR      r0,|L1.3124|
000b14  e3a0144b          MOV      r1,#0x4b000000
000b18  e5810048          STR      r0,[r1,#0x48]
;;;333        rDIDSTC1=(1<<1)|(1);		//APB(SPI), fix
000b1c  e3a00003          MOV      r0,#3
000b20  e3a0144b          MOV      r1,#0x4b000000
000b24  e581004c          STR      r0,[r1,#0x4c]
;;;334        rDCON1=(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(3<<24)|(1<<23)|(1<<22)|(0<<20)|(spi_count);
000b28  e59f0108          LDR      r0,|L1.3128|
000b2c  e3a0144b          MOV      r1,#0x4b000000
000b30  e5810050          STR      r0,[r1,#0x50]
;;;335        //handshake, sync PCLK, TC int, single tx, single service, SPI, H/W request, 
;;;336        //off-reload, byte, 128Bytes
;;;337    
;;;338        rGPGDAT&=0xfffffffb; // Activate nSS 
000b34  e3a00456          MOV      r0,#0x56000000
000b38  e5900064          LDR      r0,[r0,#0x64]
000b3c  e3c00004          BIC      r0,r0,#4
000b40  e3a01456          MOV      r1,#0x56000000
000b44  e5810064          STR      r0,[r1,#0x64]
;;;339        rDMASKTRIG1=(0<<2)|(1<<1)|(0);    //run, DMA1 channel on, no-sw trigger 
000b48  e3a00002          MOV      r0,#2
000b4c  e3a0144b          MOV      r1,#0x4b000000
000b50  e5810060          STR      r0,[r1,#0x60]
;;;340    
;;;341        while(tx_dma1Done==0);
000b54  e1a00000          NOP      
                  |L1.2904|
000b58  e59f0074          LDR      r0,|L1.3028|
000b5c  e5900000          LDR      r0,[r0,#0]  ; tx_dma1Done
000b60  e3500000          CMP      r0,#0
000b64  0afffffb          BEQ      |L1.2904|
;;;342    
;;;343        while(!(rSPSTA0&0x1)); // Tx is done
000b68  e1a00000          NOP      
                  |L1.2924|
000b6c  e3a00459          MOV      r0,#0x59000000
000b70  e5900004          LDR      r0,[r0,#4]
000b74  e3100001          TST      r0,#1
000b78  0afffffb          BEQ      |L1.2924|
;;;344    
;;;345        rGPGDAT|=0x4; // Deactivate nSS 
000b7c  e3a00456          MOV      r0,#0x56000000
000b80  e5900064          LDR      r0,[r0,#0x64]
000b84  e3800004          ORR      r0,r0,#4
000b88  e3a01456          MOV      r1,#0x56000000
000b8c  e5810064          STR      r0,[r1,#0x64]
;;;346    //    rSPCON0=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//poll,dis-SCK,master,low,A,normal
;;;347        rSPCON0=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(1<<1)|(0<<0);//poll,dis-SCK,master,low,B,normal
000b90  e3a0000e          MOV      r0,#0xe
000b94  e3a01459          MOV      r1,#0x59000000
000b98  e5810000          STR      r0,[r1,#0]
;;;348        Uart_Printf("\nDMA1 transfer end\n");
000b9c  e28f0098          ADR      r0,|L1.3132|
000ba0  ebfffffe          BL       Uart_Printf
;;;349        for(i=0; i<spi_count; i++)
000ba4  e3a04000          MOV      r4,#0
                  |L1.2984|
000ba8  e3540080          CMP      r4,#0x80
000bac  aa000006          BGE      |L1.3020|
000bb0  ea000001          B        |L1.3004|
                  |L1.2996|
000bb4  e2844001          ADD      r4,r4,#1
000bb8  eafffffa          B        |L1.2984|
;;;350    		Uart_Printf("0x%02x,",*tx_ptr++);
                  |L1.3004|
000bbc  e4d51001          LDRB     r1,[r5],#1
000bc0  e28f0088          ADR      r0,|L1.3152|
000bc4  ebfffffe          BL       Uart_Printf
000bc8  eafffff9          B        |L1.2996|
;;;351        SPI_Port_Return();
                  |L1.3020|
000bcc  ebfffffe          BL       SPI_Port_Return
;;;352    }
000bd0  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.3028|
000bd4  0000000c          DCD      ||.bss$2|| + 12
                  |L1.3032|
000bd8  4950535b          DCB      "[SPI"
000bdc  414d4420          DCB      " DMA"
000be0  614d2031          DCB      "1 Ma"
000be4  72657473          DCB      "ster"
000be8  20785420          DCB      " Tx "
000bec  74736574          DCB      "test"
000bf0  00000a5d          DCB      "]\n\0\0"
                  |L1.3060|
000bf4  73696854          DCB      "This"
000bf8  73657420          DCB      " tes"
000bfc  68732074          DCB      "t sh"
000c00  646c756f          DCB      "ould"
000c04  20656220          DCB      " be "
000c08  666e6f63          DCB      "conf"
000c0c  72756769          DCB      "igur"
000c10  74206465          DCB      "ed t"
000c14  62206f77          DCB      "wo b"
000c18  6472616f          DCB      "oard"
000c1c  74530a73          DCB      "s\nSt"
000c20  20747261          DCB      "art "
000c24  66207852          DCB      "Rx f"
000c28  74737269          DCB      "irst"
000c2c  00000a2e          DCB      ".\n\0\0"
                  |L1.3120|
000c30  00000000          DCD      Dma1Tx_Int
                  |L1.3124|
000c34  59000010          DCD      0x59000010
                  |L1.3128|
000c38  a3c00080          DCD      0xa3c00080
                  |L1.3132|
000c3c  414d440a          DCB      "\nDMA"
000c40  72742031          DCB      "1 tr"
000c44  66736e61          DCB      "ansf"
000c48  65207265          DCB      "er e"
000c4c  000a646e          DCB      "nd\n\0"
                  |L1.3152|
000c50  30257830          DCB      "0x%0"
000c54  002c7832          DCB      "2x,\0"
                          ENDP

                  Dma1Rx_Int PROC
;;;407    void __irq Dma1Rx_Int(void)

⌨️ 快捷键说明

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