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

📄 iic.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000570  e5810040          STR      r0,[r1,#0x40]
;;;87     
;;;88         pISR_IIC = (unsigned)IicInt;
000574  e59f0194          LDR      r0,|L1.1808|
000578  e59f1194          LDR      r1,|L1.1812|
00057c  e5810f8c          STR      r0,[r1,#0xf8c]
;;;89         rINTMSK &= ~(BIT_IIC);
000580  e3a0044a          MOV      r0,#0x4a000000
000584  e5900008          LDR      r0,[r0,#8]
000588  e3c00680          BIC      r0,r0,#0x8000000
00058c  e3a0144a          MOV      r1,#0x4a000000
000590  e5810008          STR      r0,[r1,#8]
;;;90     
;;;91           //Enable ACK, Prescaler IICCLK=PCLK/16, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;92           // If PCLK 50.7MHz, IICCLK = 3.17MHz, Tx Clock = 0.198MHz
;;;93         rIICCON = (1<<7) | (0<<6) | (1<<5) | (0xf);
000594  e3a000af          MOV      r0,#0xaf
000598  e3a01454          MOV      r1,#0x54000000
00059c  e5810000          STR      r0,[r1,#0]
;;;94     
;;;95         rIICADD  = 0x10;                    //2442 slave address = [7:1]
0005a0  e3a00010          MOV      r0,#0x10
0005a4  e3a01454          MOV      r1,#0x54000000
0005a8  e5810008          STR      r0,[r1,#8]
;;;96         rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
0005ac  e3a00010          MOV      r0,#0x10
0005b0  e3a01454          MOV      r1,#0x54000000
0005b4  e5810004          STR      r0,[r1,#4]
;;;97     	rIICLC = (1<<2)|(1);  				// Filter enable, 15 clocks SDA output delay       added by junon
0005b8  e3a00005          MOV      r0,#5
0005bc  e3a01454          MOV      r1,#0x54000000
0005c0  e5810010          STR      r0,[r1,#0x10]
;;;98         
;;;99         Uart_Printf("Write test data into KS24C080\n");
0005c4  e28f0f53          ADR      r0,|L1.1816|
0005c8  ebfffffe          BL       Uart_Printf
;;;100    
;;;101        for(i=0;i<256;i++)
0005cc  e3a04000          MOV      r4,#0
                  |L1.1488|
0005d0  e3540f40          CMP      r4,#0x100
0005d4  2a000007          BCS      |L1.1528|
0005d8  ea000001          B        |L1.1508|
                  |L1.1500|
0005dc  e2844001          ADD      r4,r4,#1
0005e0  eafffffa          B        |L1.1488|
;;;102            Wr24C080(0xa0,(U8)i,i);
                  |L1.1508|
0005e4  e20420ff          AND      r2,r4,#0xff
0005e8  e20410ff          AND      r1,r4,#0xff
0005ec  e3a000a0          MOV      r0,#0xa0
0005f0  ebfffffe          BL       Wr24C080
0005f4  eafffff8          B        |L1.1500|
;;;103               
;;;104        for(i=0;i<256;i++)
                  |L1.1528|
0005f8  e3a04000          MOV      r4,#0
                  |L1.1532|
0005fc  e3540f40          CMP      r4,#0x100
000600  2a000006          BCS      |L1.1568|
000604  ea000001          B        |L1.1552|
                  |L1.1544|
000608  e2844001          ADD      r4,r4,#1
00060c  eafffffa          B        |L1.1532|
;;;105            data[i] = 0;
                  |L1.1552|
000610  e3a00000          MOV      r0,#0
000614  e59f111c          LDR      r1,|L1.1848|
000618  e7c10004          STRB     r0,[r1,r4]
00061c  eafffff9          B        |L1.1544|
;;;106    
;;;107        Uart_Printf("Read test data from KS24C080\n");
                  |L1.1568|
000620  e28f0f45          ADR      r0,|L1.1852|
000624  ebfffffe          BL       Uart_Printf
;;;108        
;;;109        for(i=0;i<256;i++)
000628  e3a04000          MOV      r4,#0
                  |L1.1580|
00062c  e3540f40          CMP      r4,#0x100
000630  2a000008          BCS      |L1.1624|
000634  ea000001          B        |L1.1600|
                  |L1.1592|
000638  e2844001          ADD      r4,r4,#1
00063c  eafffffa          B        |L1.1580|
;;;110            Rd24C080(0xa0,(U8)i,&(data[i])); 
                  |L1.1600|
000640  e59f00f0          LDR      r0,|L1.1848|
000644  e0802004          ADD      r2,r0,r4
000648  e20410ff          AND      r1,r4,#0xff
00064c  e3a000a0          MOV      r0,#0xa0
000650  ebfffffe          BL       Rd24C080
000654  eafffff7          B        |L1.1592|
;;;111    
;;;112            //Line changed 0 ~ f
;;;113        for(i=0;i<16;i++)
                  |L1.1624|
000658  e3a04000          MOV      r4,#0
                  |L1.1628|
00065c  e3540010          CMP      r4,#0x10
000660  2a000011          BCS      |L1.1708|
000664  ea000001          B        |L1.1648|
                  |L1.1640|
000668  e2844001          ADD      r4,r4,#1
00066c  eafffffa          B        |L1.1628|
;;;114        {
;;;115            for(j=0;j<16;j++)
                  |L1.1648|
000670  e3a05000          MOV      r5,#0
                  |L1.1652|
000674  e3550010          CMP      r5,#0x10
000678  2a000008          BCS      |L1.1696|
00067c  ea000001          B        |L1.1672|
                  |L1.1664|
000680  e2855001          ADD      r5,r5,#1
000684  eafffffa          B        |L1.1652|
;;;116                Uart_Printf("%2x ",data[i*16+j]);
                  |L1.1672|
000688  e0850204          ADD      r0,r5,r4,LSL #4
00068c  e59f20a4          LDR      r2,|L1.1848|
000690  e7d21000          LDRB     r1,[r2,r0]
000694  e28f00c0          ADR      r0,|L1.1884|
000698  ebfffffe          BL       Uart_Printf
00069c  eafffff7          B        |L1.1664|
;;;117            Uart_Printf("\n");
                  |L1.1696|
0006a0  e28f00b0          ADR      r0,|L1.1880|
0006a4  ebfffffe          BL       Uart_Printf
;;;118        }
0006a8  eaffffee          B        |L1.1640|
;;;119        rINTMSK |= BIT_IIC;    
                  |L1.1708|
0006ac  e3a0044a          MOV      r0,#0x4a000000
0006b0  e5900008          LDR      r0,[r0,#8]
0006b4  e3800680          ORR      r0,r0,#0x8000000
0006b8  e3a0144a          MOV      r1,#0x4a000000
0006bc  e5810008          STR      r0,[r1,#8]
;;;120        rGPEUP  = save_PE;
0006c0  e3a00456          MOV      r0,#0x56000000
0006c4  e5807048          STR      r7,[r0,#0x48]
;;;121        rGPECON = save_E;
0006c8  e3a00456          MOV      r0,#0x56000000
0006cc  e5806040          STR      r6,[r0,#0x40]
;;;122    }
0006d0  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                  |L1.1748|
0006d4  00000228          DCD      ||.bss$2|| + 552
                  |L1.1752|
0006d8  0000022c          DCD      ||.bss$2|| + 556
                  |L1.1756|
0006dc  00000200          DCD      ||.bss$2|| + 512
                  |L1.1760|
0006e0  00000220          DCD      ||.bss$2|| + 544
                  |L1.1764|
0006e4  00000224          DCD      ||.bss$2|| + 548
                  |L1.1768|
0006e8  4949205b          DCB      "[ II"
0006ec  65542043          DCB      "C Te"
0006f0  49287473          DCB      "st(I"
0006f4  7265746e          DCB      "nter"
0006f8  74707572          DCB      "rupt"
0006fc  73752029          DCB      ") us"
000700  20676e69          DCB      "ing "
000704  3432534b          DCB      "KS24"
000708  30383043          DCB      "C080"
00070c  000a5d20          DCB      " ]\n\0"
                  |L1.1808|
000710  00000000          DCD      IicInt
                  |L1.1812|
000714  31fff000          DCD      0x31fff000
                  |L1.1816|
000718  74697257          DCB      "Writ"
00071c  65742065          DCB      "e te"
000720  64207473          DCB      "st d"
000724  20617461          DCB      "ata "
000728  6f746e69          DCB      "into"
00072c  32534b20          DCB      " KS2"
000730  38304334          DCB      "4C08"
000734  00000a30          DCB      "0\n\0\0"
                  |L1.1848|
000738  00000000          DCD      ||.bss$2||
                  |L1.1852|
00073c  64616552          DCB      "Read"
000740  73657420          DCB      " tes"
000744  61642074          DCB      "t da"
000748  66206174          DCB      "ta f"
00074c  206d6f72          DCB      "rom "
000750  3432534b          DCB      "KS24"
000754  30383043          DCB      "C080"
                  |L1.1880|
000758  0000000a          DCB      "\n\0\0\0"
                  |L1.1884|
00075c  20783225          DCB      "%2x "
000760  00000000          DCB      "\0\0\0\0"
                          ENDP

                  IicPoll PROC
;;;378    void IicPoll(void)
;;;379    {
000764  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;380        U32 iicSt,i;
;;;381        
;;;382        iicSt = rIICSTAT; 
000768  e3a00454          MOV      r0,#0x54000000
00076c  e5900004          LDR      r0,[r0,#4]
000770  e1a05000          MOV      r5,r0
;;;383        if(iicSt & 0x8){}                   //When bus arbitration is failed.
000774  e1a00000          NOP      
;;;384        if(iicSt & 0x4){}                   //When a slave address is matched with IICADD
000778  e1a00000          NOP      
;;;385        if(iicSt & 0x2){}                   //When a slave address is 0000000b
00077c  e1a00000          NOP      
;;;386        if(iicSt & 0x1){}                   //When ACK isn't received
000780  e1a00000          NOP      
;;;387    
;;;388        switch(_iicMode)
000784  e51f00b8          LDR      r0,|L1.1748|
000788  e5900000          LDR      r0,[r0,#0]  ; _iicMode
00078c  e3500001          CMP      r0,#1
000790  0a000038          BEQ      |L1.2168|
000794  e3500002          CMP      r0,#2
000798  0a000004          BEQ      |L1.1968|
00079c  e3500003          CMP      r0,#3
0007a0  0a000005          BEQ      |L1.1980|
0007a4  e3500004          CMP      r0,#4
0007a8  1a000070          BNE      |L1.2416|
0007ac  ea000054          B        |L1.2308|
;;;389        {
;;;390            case POLLACK:
;;;391                _iicStatus = iicSt;
                  |L1.1968|
0007b0  e51f00d4          LDR      r0,|L1.1764|
0007b4  e5805000          STR      r5,[r0,#0]  ; _iicStatus
;;;392                break;
0007b8  ea00006d          B        |L1.2420|
;;;393    
;;;394            case RDDATA:
;;;395                if((_iicDataCount--)==0)
                  |L1.1980|
0007bc  e51f00e4          LDR      r0,|L1.1760|
0007c0  e5900000          LDR      r0,[r0,#0]  ; _iicDataCount
0007c4  e2401001          SUB      r1,r0,#1
0007c8  e51f00f0          LDR      r0,|L1.1760|
0007cc  e5902000          LDR      r2,[r0,#0]  ; _iicDataCount
0007d0  e5801000          STR      r1,[r0,#0]  ; _iicDataCount
0007d4  e3520000          CMP      r2,#0
0007d8  1a000011          BNE      |L1.2084|
;;;396                {
;;;397                    _iicData[_iicPt++] = rIICDS;
0007dc  e3a00454          MOV      r0,#0x54000000
0007e0  e590100c          LDR      r1,[r0,#0xc]
0007e4  e51f0114          LDR      r0,|L1.1752|
0007e8  e5900000          LDR      r0,[r0,#0]  ; _iicPt
0007ec  e2802001          ADD      r2,r0,#1
0007f0  e51f3120          LDR      r3,|L1.1752|
0007f4  e5832000          STR      r2,[r3,#0]  ; _iicPt
0007f8  e51f2124          LDR      r2,|L1.1756|
0007fc  e7c21000          STRB     r1,[r2,r0]
;;;398                
;;;399                    rIICSTAT = 0x90;                //Stop MasRx condition 
000800  e3a00090          MOV      r0,#0x90
000804  e3a01454          MOV      r1,#0x54000000
000808  e5810004          STR      r0,[r1,#4]
;;;400                    rIICCON  = 0xaf;                //Resumes IIC operation.
00080c  e3a000af          MOV      r0,#0xaf
000810  e3a01454          MOV      r1,#0x54000000
000814  e5810000          STR      r0,[r1,#0]
;;;401                    Delay(1);                       //Wait until stop condtion is in effect.
000818  e3a00001          MOV      r0,#1
00081c  ebfffffe          BL       Delay
;;;402                                                    //Too long time... 
;;;403                                                    //The pending bit will not be set after issuing stop condition.
;;;404                    break;    
000820  ea000053          B        |L1.2420|
;;;405                }      
;;;406                _iicData[_iicPt++] = rIICDS;
                  |L1.2084|
000824  e3a00454          MOV      r0,#0x54000000
000828  e590100c          LDR      r1,[r0,#0xc]
00082c  e51f015c          LDR      r0,|L1.1752|
000830  e5900000          LDR      r0,[r0,#0]  ; _iicPt
000834  e2802001          ADD      r2,r0,#1
000838  e51f3168          LDR      r3,|L1.1752|
00083c  e5832000          STR      r2,[r3,#0]  ; _iicPt
000840  e51f216c          LDR      r2,|L1.1756|
000844  e7c21000          STRB     r1,[r2,r0]

⌨️ 快捷键说明

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