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

📄 iic_s5x532.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 4 页
字号:

                  Rd_S5X532 PROC
;;;242    void Rd_S5X532(U32 slvAddr,U32 addr,U8 *data)
;;;243    {
0005d4  e3a03004          MOV      r3,#4
;;;244    
;;;245        /*IIC Slave Addr Write + IIC Reg Addr Write */	
;;;246        _iicMode      = SETRDADDR;
0005d8  e51fc240          LDR      r12,|L1.928|
0005dc  e58c3000          STR      r3,[r12,#0]  ; _iicMode
;;;247        _iicPt        = 0;
0005e0  e3a03000          MOV      r3,#0
0005e4  e51fc240          LDR      r12,|L1.940|
0005e8  e58c3000          STR      r3,[r12,#0]  ; _iicPt
;;;248        _iicData[0]   = (U8)addr;
0005ec  e51f3244          LDR      r3,|L1.944|
0005f0  e5c31000          STRB     r1,[r3,#0]  ; _iicData
;;;249        _iicDataCount = 1;
0005f4  e3a03001          MOV      r3,#1
0005f8  e51fc25c          LDR      r12,|L1.932|
0005fc  e58c3000          STR      r3,[r12,#0]  ; _iicDataCount
;;;250    
;;;251        rIICDS   = slvAddr;
000600  e51f3260          LDR      r3,|L1.936|
000604  e583000c          STR      r0,[r3,#0xc]
;;;252        rIICSTAT = 0xf0;   //Master Tx, Start
000608  e3a030f0          MOV      r3,#0xf0
00060c  e51fc26c          LDR      r12,|L1.936|
000610  e58c3004          STR      r3,[r12,#4]
;;;253        rIICCON  = 0xef;                    //Resumes IIC operation.  
000614  e3a030ef          MOV      r3,#0xef
000618  e1ccc003          BIC      r12,r12,r3
00061c  e58c3000          STR      r3,[r12,#0]
;;;254          //Clearing the pending bit isn't needed because the pending bit has been cleared.
;;;255        while(_iicDataCount!=-1);
000620  e1a00000          NOP      
                  |L1.1572|
000624  e51f3288          LDR      r3,|L1.932|
000628  e5933000          LDR      r3,[r3,#0]  ; _iicDataCount
00062c  e3730001          CMN      r3,#1
000630  1afffffb          BNE      |L1.1572|
;;;256    //        Run_Polling();
;;;257        
;;;258        _iicMode      = RDDATA;
000634  e3a03003          MOV      r3,#3
000638  e51fc2a0          LDR      r12,|L1.928|
00063c  e58c3000          STR      r3,[r12,#0]  ; _iicMode
;;;259        _iicPt        = 0;
000640  e3a03000          MOV      r3,#0
000644  e51fc2a0          LDR      r12,|L1.940|
000648  e58c3000          STR      r3,[r12,#0]  ; _iicPt
;;;260        _iicDataCount = 1;
00064c  e3a03001          MOV      r3,#1
000650  e51fc2b4          LDR      r12,|L1.932|
000654  e58c3000          STR      r3,[r12,#0]  ; _iicDataCount
;;;261        
;;;262        rIICDS   = slvAddr;
000658  e51f32b8          LDR      r3,|L1.936|
00065c  e583000c          STR      r0,[r3,#0xc]
;;;263        rIICSTAT = 0xb0;                    //Master Rx,Start
000660  e3a030b0          MOV      r3,#0xb0
000664  e51fc2c4          LDR      r12,|L1.936|
000668  e58c3004          STR      r3,[r12,#4]
;;;264        rIICCON  = 0xef;                    //Resumes IIC operation.   
00066c  e3a030ef          MOV      r3,#0xef
000670  e1ccc003          BIC      r12,r12,r3
000674  e58c3000          STR      r3,[r12,#0]
;;;265        
;;;266        while(_iicDataCount!=-1);
000678  e1a00000          NOP      
                  |L1.1660|
00067c  e51f32e0          LDR      r3,|L1.932|
000680  e5933000          LDR      r3,[r3,#0]  ; _iicDataCount
000684  e3730001          CMN      r3,#1
000688  1afffffb          BNE      |L1.1660|
;;;267    //        Run_Polling();
;;;268    
;;;269        *data = _iicData[1];
00068c  e51f32e4          LDR      r3,|L1.944|
000690  e5d33001          LDRB     r3,[r3,#1]  ; _iicData
000694  e5c23000          STRB     r3,[r2,#0]
;;;270    }
000698  e12fff1e          BX       lr
                          ENDP

                  S5X532_ReadByte PROC
;;;142    void S5X532_ReadByte(void)
;;;143    {
00069c  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;144        unsigned int i, j, save_E, save_PE, RegAddr, RegData, pageNo;
;;;145        static U8 rdata[8];
;;;146          	
;;;147        //Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;148        rIICCON  = (1<<7) | (1<<6) | (1<<5) | (0xf);
0006a0  e3a000ef          MOV      r0,#0xef
0006a4  e51f1304          LDR      r1,|L1.936|
0006a8  e5810000          STR      r0,[r1,#0]
;;;149    
;;;150        rIICADD  = 0x10;                    //2440 slave address = [7:1]
0006ac  e3a00010          MOV      r0,#0x10
0006b0  e1c11000          BIC      r1,r1,r0
0006b4  e5810008          STR      r0,[r1,#8]
;;;151        rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
0006b8  e3a00010          MOV      r0,#0x10
0006bc  e1c11000          BIC      r1,r1,r0
0006c0  e5810004          STR      r0,[r1,#4]
;;;152        rIICSDADLY  = 1; 			// SDAOUT has 5clock cycle delay
0006c4  e3a00001          MOV      r0,#1
0006c8  e1c11000          BIC      r1,r1,r0
0006cc  e5810010          STR      r0,[r1,#0x10]
;;;153    
;;;154        Uart_Printf("Input Write Page No of S5X532\n=>");
0006d0  e24f0f60          ADR      r0,|L1.1368|
0006d4  ebfffffe          BL       _printf
;;;155        pageNo = (U8)Uart_GetIntNum();
0006d8  ebfffffe          BL       Uart_GetIntNum
0006dc  e20050ff          AND      r5,r0,#0xff
;;;156    
;;;157        Wr_S5X532(SlaveID, (U8)0xec, pageNo);  // set Page no
0006e0  e1a02005          MOV      r2,r5
0006e4  e3a010ec          MOV      r1,#0xec
0006e8  e3a0005a          MOV      r0,#0x5a
0006ec  ebfffffe          BL       Wr_S5X532
;;;158    
;;;159        Uart_Printf("Input Read Register Address of S5X532\n=>");
0006f0  e28f0030          ADR      r0,|L1.1832|
0006f4  ebfffffe          BL       _printf
;;;160        RegAddr = (U8)Uart_GetIntNum();
0006f8  ebfffffe          BL       Uart_GetIntNum
0006fc  e20040ff          AND      r4,r0,#0xff
;;;161        
;;;162        Rd_S5X532(SlaveID, RegAddr, &rdata[0]); 
000700  e59f204c          LDR      r2,|L1.1876|
000704  e1a01004          MOV      r1,r4
000708  e3a0005a          MOV      r0,#0x5a
00070c  ebfffffe          BL       Rd_S5X532
;;;163        Uart_Printf("Register Addr: 0x%2x, data: 0x%2x\n", RegAddr,rdata[0]);
000710  e59f003c          LDR      r0,|L1.1876|
000714  e5d02000          LDRB     r2,[r0,#0]  ; rdata@S5X532_ReadByte_0
000718  e1a01004          MOV      r1,r4
00071c  e28f0034          ADR      r0,|L1.1880|
000720  ebfffffe          BL       _printf
;;;164        
;;;165    }
000724  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.1832|
000728  75706e49          DCB      "Inpu"
00072c  65522074          DCB      "t Re"
000730  52206461          DCB      "ad R"
000734  73696765          DCB      "egis"
000738  20726574          DCB      "ter "
00073c  72646441          DCB      "Addr"
000740  20737365          DCB      "ess "
000744  5320666f          DCB      "of S"
000748  33355835          DCB      "5X53"
00074c  3e3d0a32          DCB      "2\n=>"
000750  00000000          DCB      "\0\0\0\0"
                  |L1.1876|
000754  00000000          DCD      ||.bss$2||
                  |L1.1880|
000758  69676552          DCB      "Regi"
00075c  72657473          DCB      "ster"
000760  64644120          DCB      " Add"
000764  30203a72          DCB      "r: 0"
000768  78322578          DCB      "x%2x"
00076c  6164202c          DCB      ", da"
000770  203a6174          DCB      "ta: "
000774  32257830          DCB      "0x%2"
000778  00000a78          DCB      "x\n\0\0"
                          ENDP

                  S5X532_WriteBlock PROC
;;;168    void S5X532_WriteBlock(void)
;;;169    {
00077c  e92d4010          STMFD    sp!,{r4,lr}
;;;170        unsigned int i, j, save_E, save_PE, RegAddr, RegData;
;;;171        static U8 rdata[256]; 
;;;172          	
;;;173        // for camera init, added by junon
;;;174        pISR_IIC = (unsigned)S5X532_IicInt; 
000780  e51f0358          LDR      r0,|L1.1072|
000784  e51f1358          LDR      r1,|L1.1076|
000788  e5810f8c          STR      r0,[r1,#0xf8c]
;;;175        rINTMSK &= ~(BIT_IIC);
00078c  e51f03f8          LDR      r0,|L1.924|
000790  e5900008          LDR      r0,[r0,#8]
000794  e3c00680          BIC      r0,r0,#0x8000000
000798  e51f1404          LDR      r1,|L1.924|
00079c  e5810008          STR      r0,[r1,#8]
;;;176    
;;;177        //Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;178        rIICCON  = (1<<7) | (1<<6) | (1<<5) | (0xf);
0007a0  e3a000ef          MOV      r0,#0xef
0007a4  e2811644          ADD      r1,r1,#0x4400000
0007a8  e5810000          STR      r0,[r1,#0]
;;;179    
;;;180        rIICADD  = 0x10;                    //2440 slave address = [7:1]
0007ac  e3a00010          MOV      r0,#0x10
0007b0  e1c11000          BIC      r1,r1,r0
0007b4  e5810008          STR      r0,[r1,#8]
;;;181        rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
0007b8  e3a00010          MOV      r0,#0x10
0007bc  e1c11000          BIC      r1,r1,r0
0007c0  e5810004          STR      r0,[r1,#4]
;;;182        rIICSDADLY  = 1; 			// SDAOUT has 5clock cycle delay
0007c4  e3a00001          MOV      r0,#1
0007c8  e1c11000          BIC      r1,r1,r0
0007cc  e5810010          STR      r0,[r1,#0x10]
;;;183    
;;;184        
;;;185        for(i=0; i<(sizeof(S5X532_TV)/2); i++)
0007d0  e3a04000          MOV      r4,#0
                  |L1.2004|
0007d4  e354005d          CMP      r4,#0x5d
0007d8  2a00000a          BCS      |L1.2056|
0007dc  ea000001          B        |L1.2024|
                  |L1.2016|
0007e0  e2844001          ADD      r4,r4,#1
0007e4  eafffffa          B        |L1.2004|
;;;186        {
;;;187    		Wr_S5X532(SlaveID, S5X532_TV[i][0], S5X532_TV[i][1]);
                  |L1.2024|
0007e8  e59f0024          LDR      r0,|L1.2068|
0007ec  e0800084          ADD      r0,r0,r4,LSL #1
0007f0  e5d02001          LDRB     r2,[r0,#1]
0007f4  e59f0018          LDR      r0,|L1.2068|
0007f8  e7d01084          LDRB     r1,[r0,r4,LSL #1]
0007fc  e3a0005a          MOV      r0,#0x5a
000800  ebfffffe          BL       Wr_S5X532
;;;188        }
000804  eafffff5          B        |L1.2016|
;;;189    	
;;;190           Uart_Printf("\nBlock TX Ended...\n");	
                  |L1.2056|
000808  e28f0008          ADR      r0,|L1.2072|
00080c  ebfffffe          BL       _printf
;;;191    
;;;192    }
000810  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.2068|
000814  000000ac          DCD      ||.constdata$1|| + 172
                  |L1.2072|
000818  6f6c420a          DCB      "\nBlo"
00081c  54206b63          DCB      "ck T"
000820  6e452058          DCB      "X En"
000824  2e646564          DCB      "ded."
000828  000a2e2e          DCB      "..\n\0"
                          ENDP

                  S5X532_ReadBlock PROC
;;;195    void S5X532_ReadBlock(void)
;;;196    {
00082c  e92d4010          STMFD    sp!,{r4,lr}
;;;197        unsigned int i, j, save_E, save_PE, RegAddr, RegData;
;;;198        static U8 rdata[256]; 
;;;199    
;;;200          //Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;201        rIICCON  = (1<<7) | (1<<6) | (1<<5) | (0xf);
000830  e3a000ef          MOV      r0,#0xef
000834  e51f1494          LDR      r1,|L1.936|
000838  e5810000          STR      r0,[r1,#0]
;;;202    
;;;203        rIICADD  = 0x10;                    //2440 slave address = [7:1]
00083c  e3a00010          MOV      r0,#0x10
000840  e1c11000          BIC      r1,r1,r0
000844  e5810008          STR      r0,[r1,#8]
;;;204        rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
000848  e3a00010          MOV      r0,#0x10
00084c  e1c11000          BIC      r1,r1,r0
000850  e5810004          STR      r0,[r1,#4]
;;;205        rIICSDADLY  = 1; 			// SDAOUT has 5clock cycle delay
000854  e3a00001          MOV      r0,#1
000858  e1c11000          BIC      r1,r1,r0
00085c  e5810010          STR      r0,[r1,#0x10]
;;;206        
;;;207        for(i=0; i<(sizeof(S5X532_TV)/2);i++)
000860  e3a04000          MOV      r4,#0
                  |L1.2148|
000864  e354005d          CMP      r4,#0x5d
000868  2a000015          BCS      |L1.2244|
00086c  ea000001          B        |L1.2168|
                  |L1.2160|
000870  e2844001          ADD      r4,r4,#1
000874  eafffffa          B        |L1.2148|
;;;208       	{     
;;;209    		if(S5X532_TV[i][0] == 0xec)
                  |L1.2168|
000878  e51f006c          LDR      r0,|L1.2068|
00087c  e7d00084          LDRB     r0,[r0,r4,LSL #1]
000880  e35000ec          CMP      r0,#0xec
000884  1a000007          BNE      |L1.2216|
;;;210    			Wr_S5X532(SlaveID, S5X532_TV[i][0], S5X532_TV[i][1]);
000888  e51f007c          LDR      r0,|L1.2068|
00088c  e0800084          ADD      r0,r0,r4,LSL #1
000890  e5d02001          LDRB     r2,[r0,#1]
000894  e51f0088          LDR      r0,|L1.2068|
000898  e7d01084          LDRB     r1,[r0,r4,LSL #1]
00089c  e3a0005a          MOV      r0,#0x5a
0008a0  ebfffffe          BL       Wr_S5X532

⌨️ 快捷键说明

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