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

📄 iic.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000af4  e1a00000          NOP      
;;;326        {
;;;327            rIICDS     = slvAddr;
000af8  e3a00454          MOV      r0,#0x54000000
000afc  e580400c          STR      r4,[r0,#0xc]
;;;328            _iicStatus = 0x100;             //To check if _iicStatus is changed 
000b00  e3a00f40          MOV      r0,#0x100
000b04  e51f1428          LDR      r1,|L1.1764|
000b08  e5810000          STR      r0,[r1,#0]  ; _iicStatus
;;;329            rIICSTAT   = 0xf0;              //Master Tx, Start, Output Enable, Sucessful, Cleared, Cleared, 0
000b0c  e3a000f0          MOV      r0,#0xf0
000b10  e3a01454          MOV      r1,#0x54000000
000b14  e5810004          STR      r0,[r1,#4]
;;;330            rIICCON    = 0xaf;              //Resumes IIC operation. 
000b18  e3a000af          MOV      r0,#0xaf
000b1c  e3a01454          MOV      r1,#0x54000000
000b20  e5810000          STR      r0,[r1,#0]
;;;331            while(_iicStatus==0x100)  
000b24  e1a00000          NOP      
                  |L1.2856|
000b28  e51f044c          LDR      r0,|L1.1764|
000b2c  e5900000          LDR      r0,[r0,#0]  ; _iicStatus
000b30  e3500f40          CMP      r0,#0x100
000b34  1a000001          BNE      |L1.2880|
;;;332                Run_IicPoll();
000b38  ebfffffe          BL       Run_IicPoll
000b3c  eafffff9          B        |L1.2856|
;;;333                  
;;;334            if(!(_iicStatus & 0x1))
                  |L1.2880|
000b40  e51f0464          LDR      r0,|L1.1764|
000b44  e5900000          LDR      r0,[r0,#0]  ; _iicStatus
000b48  e3100001          TST      r0,#1
000b4c  1a000000          BNE      |L1.2900|
;;;335                break;                      //When ACK is received
000b50  ea000000          B        |L1.2904|
;;;336        }
                  |L1.2900|
000b54  eaffffe6          B        |L1.2804|
;;;337        rIICSTAT = 0xd0;                    //Master Tx condition, Stop(Write), Output Enable
                  |L1.2904|
000b58  e3a000d0          MOV      r0,#0xd0
000b5c  e3a01454          MOV      r1,#0x54000000
000b60  e5810004          STR      r0,[r1,#4]
;;;338        rIICCON  = 0xaf;                    //Resumes IIC operation. 
000b64  e3a000af          MOV      r0,#0xaf
000b68  e3a01454          MOV      r1,#0x54000000
000b6c  e5810000          STR      r0,[r1,#0]
;;;339        Delay(1);                           //Wait until stop condtion is in effect.
000b70  e3a00001          MOV      r0,#1
000b74  ebfffffe          BL       Delay
;;;340          //Write is completed.
;;;341    }
000b78  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                          ENDP

                  Test_Iic2 PROC
;;;263    void Test_Iic2(void)
;;;264    {
000b7c  e92d40f8          STMFD    sp!,{r3-r7,lr}
;;;265        unsigned int i,j,save_E,save_PE;
;;;266        static U8 data[256];
;;;267        
;;;268        Uart_Printf("[ IIC Test(Polling) using KS24C080 ]\n");
000b80  e28f0f59          ADR      r0,|L1.3308|
000b84  ebfffffe          BL       Uart_Printf
;;;269    
;;;270        save_E   = rGPECON;
000b88  e3a00456          MOV      r0,#0x56000000
000b8c  e5900040          LDR      r0,[r0,#0x40]
000b90  e1a06000          MOV      r6,r0
;;;271        save_PE  = rGPEUP;
000b94  e3a00456          MOV      r0,#0x56000000
000b98  e5900048          LDR      r0,[r0,#0x48]
000b9c  e1a07000          MOV      r7,r0
;;;272    
;;;273        rGPEUP  |= 0xc000;                  //Pull-up disable
000ba0  e3a00456          MOV      r0,#0x56000000
000ba4  e5900048          LDR      r0,[r0,#0x48]
000ba8  e3800cc0          ORR      r0,r0,#0xc000
000bac  e3a01456          MOV      r1,#0x56000000
000bb0  e5810048          STR      r0,[r1,#0x48]
;;;274        rGPECON |= 0xa00000;                //GPE15:IICSDA , GPE14:IICSCL    
000bb4  e3a00456          MOV      r0,#0x56000000
000bb8  e5900040          LDR      r0,[r0,#0x40]
000bbc  e38008a0          ORR      r0,r0,#0xa00000
000bc0  e3a01456          MOV      r1,#0x56000000
000bc4  e5810040          STR      r0,[r1,#0x40]
;;;275    
;;;276          //Enable ACK, Prescaler IICCLK=PCLK/16, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;277        rIICCON  = (1<<7) | (0<<6) | (1<<5) | (0xf);
000bc8  e3a000af          MOV      r0,#0xaf
000bcc  e3a01454          MOV      r1,#0x54000000
000bd0  e5810000          STR      r0,[r1,#0]
;;;278    
;;;279        rIICADD  = 0x10;                    //2442 slave address = [7:1]
000bd4  e3a00010          MOV      r0,#0x10
000bd8  e3a01454          MOV      r1,#0x54000000
000bdc  e5810008          STR      r0,[r1,#8]
;;;280        rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
000be0  e3a00010          MOV      r0,#0x10
000be4  e3a01454          MOV      r1,#0x54000000
000be8  e5810004          STR      r0,[r1,#4]
;;;281    	//rIICLC = (1<<2)|(3);  // Filter enable, 15 clocks SDA output delay     added by junon
;;;282        
;;;283        Uart_Printf("Write test data into KS24C080\n");
000bec  e59f0120          LDR      r0,|L1.3348|
000bf0  ebfffffe          BL       Uart_Printf
;;;284    
;;;285        for(i=0;i<256;i++)
000bf4  e3a04000          MOV      r4,#0
                  |L1.3064|
000bf8  e3540f40          CMP      r4,#0x100
000bfc  2a000008          BCS      |L1.3108|
000c00  ea000001          B        |L1.3084|
                  |L1.3076|
000c04  e2844001          ADD      r4,r4,#1
000c08  eafffffa          B        |L1.3064|
;;;286            _Wr24C080(0xa0,(U8)i,255-i);
                  |L1.3084|
000c0c  e26400ff          RSB      r0,r4,#0xff
000c10  e20020ff          AND      r2,r0,#0xff
000c14  e20410ff          AND      r1,r4,#0xff
000c18  e3a000a0          MOV      r0,#0xa0
000c1c  ebfffffe          BL       _Wr24C080
000c20  eafffff7          B        |L1.3076|
;;;287        for(i=0;i<256;i++)
                  |L1.3108|
000c24  e3a04000          MOV      r4,#0
                  |L1.3112|
000c28  e3540f40          CMP      r4,#0x100
000c2c  2a000006          BCS      |L1.3148|
000c30  ea000001          B        |L1.3132|
                  |L1.3124|
000c34  e2844001          ADD      r4,r4,#1
000c38  eafffffa          B        |L1.3112|
;;;288            data[i] = 0;
                  |L1.3132|
000c3c  e3a00000          MOV      r0,#0
000c40  e59f10d0          LDR      r1,|L1.3352|
000c44  e7c10004          STRB     r0,[r1,r4]
000c48  eafffff9          B        |L1.3124|
;;;289    
;;;290        Uart_Printf("Read test data from KS24C080\n");
                  |L1.3148|
000c4c  e59f00c8          LDR      r0,|L1.3356|
000c50  ebfffffe          BL       Uart_Printf
;;;291        for(i=0;i<256;i++)
000c54  e3a04000          MOV      r4,#0
                  |L1.3160|
000c58  e3540f40          CMP      r4,#0x100
000c5c  2a000008          BCS      |L1.3204|
000c60  ea000001          B        |L1.3180|
                  |L1.3172|
000c64  e2844001          ADD      r4,r4,#1
000c68  eafffffa          B        |L1.3160|
;;;292            _Rd24C080(0xa0,(U8)i,&(data[i])); 
                  |L1.3180|
000c6c  e59f00a4          LDR      r0,|L1.3352|
000c70  e0802004          ADD      r2,r0,r4
000c74  e20410ff          AND      r1,r4,#0xff
000c78  e3a000a0          MOV      r0,#0xa0
000c7c  ebfffffe          BL       _Rd24C080
000c80  eafffff7          B        |L1.3172|
;;;293    
;;;294        for(i=0;i<16;i++)
                  |L1.3204|
000c84  e3a04000          MOV      r4,#0
                  |L1.3208|
000c88  e3540010          CMP      r4,#0x10
000c8c  2a000011          BCS      |L1.3288|
000c90  ea000001          B        |L1.3228|
                  |L1.3220|
000c94  e2844001          ADD      r4,r4,#1
000c98  eafffffa          B        |L1.3208|
;;;295        {
;;;296            for(j=0;j<16;j++)
                  |L1.3228|
000c9c  e3a05000          MOV      r5,#0
                  |L1.3232|
000ca0  e3550010          CMP      r5,#0x10
000ca4  2a000008          BCS      |L1.3276|
000ca8  ea000001          B        |L1.3252|
                  |L1.3244|
000cac  e2855001          ADD      r5,r5,#1
000cb0  eafffffa          B        |L1.3232|
;;;297                Uart_Printf("%2x ",data[i*16+j]);
                  |L1.3252|
000cb4  e0850204          ADD      r0,r5,r4,LSL #4
000cb8  e59f2058          LDR      r2,|L1.3352|
000cbc  e7d21000          LDRB     r1,[r2,r0]
000cc0  e28f0058          ADR      r0,|L1.3360|
000cc4  ebfffffe          BL       Uart_Printf
000cc8  eafffff7          B        |L1.3244|
;;;298            Uart_Printf("\n");
                  |L1.3276|
000ccc  e28f003c          ADR      r0,|L1.3344|
000cd0  ebfffffe          BL       Uart_Printf
;;;299        }
000cd4  eaffffee          B        |L1.3220|
;;;300        
;;;301        rGPEUP  = save_PE;
                  |L1.3288|
000cd8  e3a00456          MOV      r0,#0x56000000
000cdc  e5807048          STR      r7,[r0,#0x48]
;;;302        rGPECON = save_E;
000ce0  e3a00456          MOV      r0,#0x56000000
000ce4  e5806040          STR      r6,[r0,#0x40]
;;;303    }
000ce8  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                  |L1.3308|
000cec  4949205b          DCB      "[ II"
000cf0  65542043          DCB      "C Te"
000cf4  50287473          DCB      "st(P"
000cf8  696c6c6f          DCB      "olli"
000cfc  2029676e          DCB      "ng) "
000d00  6e697375          DCB      "usin"
000d04  534b2067          DCB      "g KS"
000d08  30433432          DCB      "24C0"
000d0c  5d203038          DCB      "80 ]"
                  |L1.3344|
000d10  0000000a          DCB      "\n\0\0\0"
                  |L1.3348|
000d14  00000000          DCD      |L1.1816|
                  |L1.3352|
000d18  00000100          DCD      ||.bss$2|| + 256
                  |L1.3356|
000d1c  00000000          DCD      |L1.1852|
                  |L1.3360|
000d20  20783225          DCB      "%2x "
000d24  00000000          DCB      "\0\0\0\0"
                          ENDP



                          AREA ||.data||, DATA, ALIGN=2

                  ||.data$0||
                  func_iic_test
                          DCD      Test_Iic
                          DCD      ||.constdata$1||
                          DCD      Test_Iic2
                          DCD      ||.constdata$1||+0x11
                          DCD      0x00000000
                          DCD      0x00000000


                          AREA ||.constdata||, DATA, READONLY, ALIGN=0

                  ||.constdata$1||
                          DCB      0x49,0x49,0x43,0x28
                          DCB      0x4b,0x53,0x32,0x34
                          DCB      0x43,0x30,0x38,0x30
                          DCB      0x29,0x49,0x4e,0x54
                          DCB      0x00
                          DCB      0x49,0x49,0x43,0x28
                          DCB      0x4b,0x53,0x32,0x34
                          DCB      0x43,0x30,0x38,0x30
                          DCB      0x29,0x50,0x4f,0x4c
                          DCB      0x00


                          AREA ||.bss||, NOINIT, ALIGN=2

                  ||data@Test_Iic_0||
                  ||.bss$2||
                          % 256
                  ||data@Test_Iic2_0||
                          % 256
                  _iicData
                          % 32
                  _iicDataCount
                          % 4
                  _iicStatus
                          % 4
                  _iicMode
                          % 4
                  _iicPt
                          % 4


        END

⌨️ 快捷键说明

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