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

📄 iic_s5x532.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;80     
;;;81     	while(1)
0002d8  e1a00000          NOP      
                  |L1.732|
0002dc  e1a00000          NOP      
;;;82     	{
;;;83     		i=0;
0002e0  e3a04000          MOV      r4,#0
;;;84     		Uart_Printf("\n\n");
0002e4  e28f0f53          ADR      r0,|L1.1080|
0002e8  ebfffffe          BL       _printf
;;;85     
;;;86     		while(1)
0002ec  e1a00000          NOP      
                  |L1.752|
0002f0  e1a00000          NOP      
;;;87     		{   //display menu
;;;88     			Uart_Printf("%2d:%s\n", i, func_S5X532_test[i][1]);
0002f4  e59f0140          LDR      r0,|L1.1084|
0002f8  e0800184          ADD      r0,r0,r4,LSL #3
0002fc  e1a01004          MOV      r1,r4
000300  e5902004          LDR      r2,[r0,#4]
000304  e28f0f4d          ADR      r0,|L1.1088|
000308  ebfffffe          BL       _printf
;;;89     			i++;
00030c  e2844001          ADD      r4,r4,#1
;;;90     			if((int)(func_S5X532_test[i][0])==0)
000310  e59f0124          LDR      r0,|L1.1084|
000314  e7900184          LDR      r0,[r0,r4,LSL #3]
000318  e3500000          CMP      r0,#0
00031c  1a000002          BNE      |L1.812|
;;;91     			{
;;;92     				Uart_Printf("\n");
000320  e28f0f41          ADR      r0,|L1.1068|
000324  ebfffffe          BL       _printf
;;;93     				break;
000328  ea000004          B        |L1.832|
;;;94     			}
;;;95     			if((i%4)==0)
                  |L1.812|
00032c  e3140003          TST      r4,#3
000330  1a000001          BNE      |L1.828|
;;;96     			Uart_Printf("\n");
000334  e28f00f0          ADR      r0,|L1.1068|
000338  ebfffffe          BL       _printf
;;;97     		}
                  |L1.828|
00033c  eaffffeb          B        |L1.752|
;;;98     
;;;99     		Uart_Printf("\nPress Enter key to exit : ");
                  |L1.832|
000340  e28f0f40          ADR      r0,|L1.1096|
000344  ebfffffe          BL       _printf
;;;100    		i = Uart_GetIntNum();
000348  ebfffffe          BL       Uart_GetIntNum
00034c  e1a04000          MOV      r4,r0
;;;101    
;;;102    		if(i==-1) break;		// return.
000350  e3740001          CMN      r4,#1
000354  1a000000          BNE      |L1.860|
000358  ea000007          B        |L1.892|
;;;103    		if(i>=0 && (i<((sizeof(func_S5X532_test)-1)/8)) )	// select and execute...
                  |L1.860|
00035c  e3540000          CMP      r4,#0
000360  ba000004          BLT      |L1.888|
000364  e3540004          CMP      r4,#4
000368  2a000002          BCS      |L1.888|
;;;104    			( (void (*)(void)) (func_S5X532_test[i][0]) )();
00036c  e59f10c8          LDR      r1,|L1.1084|
000370  e7910184          LDR      r0,[r1,r4,LSL #3]
000374  e12fff30          BLX      r0
;;;105    	}
                  |L1.888|
000378  eaffffd7          B        |L1.732|
;;;106    
;;;107    	rCLKCON &= ~((1<<23)|(1<<21)); // enable camclk	
                  |L1.892|
00037c  e3a00440          MOV      r0,#0x40000000
000380  e5900020          LDR      r0,[r0,#0x20]
000384  e3c008a0          BIC      r0,r0,#0xa00000
000388  e3a01440          MOV      r1,#0x40000000
00038c  e5810020          STR      r0,[r1,#0x20]
;;;108    
;;;109    	Uart_Printf("\n");
000390  e28f0094          ADR      r0,|L1.1068|
000394  ebfffffe          BL       _printf
;;;110    }
000398  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.924|
00039c  40200000          DCD      0x40200000
                  |L1.928|
0003a0  00000230          DCD      ||.bss$2|| + 560
                  |L1.932|
0003a4  00000228          DCD      ||.bss$2|| + 552
                  |L1.936|
0003a8  44600000          DCD      0x44600000
                  |L1.940|
0003ac  00000234          DCD      ||.bss$2|| + 564
                  |L1.944|
0003b0  00000208          DCD      ||.bss$2|| + 520
                  |L1.948|
0003b4  2a2a2a0a          DCB      "\n***"
0003b8  49202a2a          DCB      "** I"
0003bc  4d204349          DCB      "IC M"
0003c0  65747361          DCB      "aste"
0003c4  78542072          DCB      "r Tx"
0003c8  2078522f          DCB      "/Rx "
0003cc  74736554          DCB      "Test"
0003d0  6f725020          DCB      " Pro"
0003d4  6d617267          DCB      "gram"
0003d8  74697720          DCB      " wit"
0003dc  35532068          DCB      "h S5"
0003e0  32333558          DCB      "X532"
0003e4  2a2a2a20          DCB      " ***"
0003e8  000a2a2a          DCB      "**\n\0"
                  |L1.1004|
0003ec  75706e49          DCB      "Inpu"
0003f0  61432074          DCB      "t Ca"
0003f4  6172656d          DCB      "mera"
0003f8  6f6c4320          DCB      " Clo"
0003fc  000a6b63          DCB      "ck\n\0"
                  |L1.1024|
000400  38343a30          DCB      "0:48"
000404  2c7a684d          DCB      "Mhz,"
000408  323a3120          DCB      " 1:2"
00040c  7a684d34          DCB      "4Mhz"
000410  3a32202c          DCB      ", 2:"
000414  684d3631          DCB      "16Mh"
000418  33202c7a          DCB      "z, 3"
00041c  4d32313a          DCB      ":12M"
000420  202c7a68          DCB      "hz, "
000424  2e393a34          DCB      "4:9."
000428  7a684d36          DCB      "6Mhz"
                  |L1.1068|
00042c  0000000a          DCB      "\n\0\0\0"
                  |L1.1072|
000430  00000000          DCD      S5X532_IicInt
                  |L1.1076|
000434  13fff000          DCD      0x13fff000
                  |L1.1080|
000438  00000a0a          DCB      "\n\n\0\0"
                  |L1.1084|
00043c  00000000          DCD      func_S5X532_test
                  |L1.1088|
000440  3a643225          DCB      "%2d:"
000444  000a7325          DCB      "%s\n\0"
                  |L1.1096|
000448  6572500a          DCB      "\nPre"
00044c  45207373          DCB      "ss E"
000450  7265746e          DCB      "nter"
000454  79656b20          DCB      " key"
000458  206f7420          DCB      " to "
00045c  74697865          DCB      "exit"
000460  00203a20          DCB      " : \0"
                          ENDP

                  Wr_S5X532 PROC
;;;225    void Wr_S5X532(U32 slvAddr, U32 addr, U8 data)
;;;226    {
000464  e3a03001          MOV      r3,#1
;;;227        	_iicMode      = WRDATA;
000468  e51fc0d0          LDR      r12,|L1.928|
00046c  e58c3000          STR      r3,[r12,#0]  ; _iicMode
;;;228        	_iicPt        = 0;
000470  e3a03000          MOV      r3,#0
000474  e51fc0d0          LDR      r12,|L1.940|
000478  e58c3000          STR      r3,[r12,#0]  ; _iicPt
;;;229        _iicData[0]   = (U8)addr;
00047c  e51f30d4          LDR      r3,|L1.944|
000480  e5c31000          STRB     r1,[r3,#0]  ; _iicData
;;;230        _iicData[1]   = data;
000484  e51f30dc          LDR      r3,|L1.944|
000488  e5c32001          STRB     r2,[r3,#1]  ; _iicData
;;;231        _iicDataCount = 2;
00048c  e3a03002          MOV      r3,#2
000490  e51fc0f4          LDR      r12,|L1.932|
000494  e58c3000          STR      r3,[r12,#0]  ; _iicDataCount
;;;232        
;;;233        rIICDS        = slvAddr;            //0x5a: S5X532 Slave ID 
000498  e51f30f8          LDR      r3,|L1.936|
00049c  e583000c          STR      r0,[r3,#0xc]
;;;234        rIICSTAT      = 0xf0; //Start Master TX Condition    
0004a0  e3a030f0          MOV      r3,#0xf0
0004a4  e51fc104          LDR      r12,|L1.936|
0004a8  e58c3004          STR      r3,[r12,#4]
;;;235        rIICCON    = 0xef;   //Clearing the pending bit isn't needed because the pending bit has been cleared.
0004ac  e3a030ef          MOV      r3,#0xef
0004b0  e1ccc003          BIC      r12,r12,r3
0004b4  e58c3000          STR      r3,[r12,#0]
;;;236    
;;;237        while(_iicDataCount!=-1);
0004b8  e1a00000          NOP      
                  |L1.1212|
0004bc  e51f3120          LDR      r3,|L1.932|
0004c0  e5933000          LDR      r3,[r3,#0]  ; _iicDataCount
0004c4  e3730001          CMN      r3,#1
0004c8  1afffffb          BNE      |L1.1212|
;;;238    //       Run_Polling();
;;;239        
;;;240    }
0004cc  e12fff1e          BX       lr
                          ENDP

                  S5X532_WriteByte PROC
;;;113    void S5X532_WriteByte(void)
;;;114    {
0004d0  e92d4070          STMFD    sp!,{r4-r6,lr}
;;;115        unsigned int i, j, save_E, save_PE, RegAddr, RegData, pageNo;
;;;116          	
;;;117        //Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;118        rIICCON  = (1<<7) | (1<<6) | (1<<5) | (0xf);
0004d4  e3a000ef          MOV      r0,#0xef
0004d8  e51f1138          LDR      r1,|L1.936|
0004dc  e5810000          STR      r0,[r1,#0]
;;;119        
;;;120        
;;;121        rIICADD  = 0x10;                    //24a0 slave address = [7:1]
0004e0  e3a00010          MOV      r0,#0x10
0004e4  e1c11000          BIC      r1,r1,r0
0004e8  e5810008          STR      r0,[r1,#8]
;;;122        rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
0004ec  e3a00010          MOV      r0,#0x10
0004f0  e1c11000          BIC      r1,r1,r0
0004f4  e5810004          STR      r0,[r1,#4]
;;;123        rIICSDADLY  = 1; 			// SDAOUT has 5clock cycle delay
0004f8  e3a00001          MOV      r0,#1
0004fc  e1c11000          BIC      r1,r1,r0
000500  e5810010          STR      r0,[r1,#0x10]
;;;124        
;;;125    
;;;126        Uart_Printf("Input Write Page No of S5X532\n=>");
000504  e28f004c          ADR      r0,|L1.1368|
000508  ebfffffe          BL       _printf
;;;127        pageNo = (U8)Uart_GetIntNum();
00050c  ebfffffe          BL       Uart_GetIntNum
000510  e20060ff          AND      r6,r0,#0xff
;;;128    
;;;129        Uart_Printf("Input Write Register Address of S5X532\n=>");
000514  e28f0060          ADR      r0,|L1.1404|
000518  ebfffffe          BL       _printf
;;;130        RegAddr = (U8)Uart_GetIntNum();
00051c  ebfffffe          BL       Uart_GetIntNum
000520  e20040ff          AND      r4,r0,#0xff
;;;131        
;;;132        Uart_Printf("Input Write Transfer Data into S5X532\n=>");
000524  e28f007c          ADR      r0,|L1.1448|
000528  ebfffffe          BL       _printf
;;;133        RegData = (U8)Uart_GetIntNum();
00052c  ebfffffe          BL       Uart_GetIntNum
000530  e20050ff          AND      r5,r0,#0xff
;;;134    
;;;135        Wr_S5X532(SlaveID, (U8)0xec, pageNo);  // set Page no
000534  e1a02006          MOV      r2,r6
000538  e3a010ec          MOV      r1,#0xec
00053c  e3a0005a          MOV      r0,#0x5a
000540  ebfffffe          BL       Wr_S5X532
;;;136        Wr_S5X532(SlaveID, (U8)RegAddr, RegData); // set register after setting page number
000544  e1a02005          MOV      r2,r5
000548  e1a01004          MOV      r1,r4
00054c  e3a0005a          MOV      r0,#0x5a
000550  ebfffffe          BL       Wr_S5X532
;;;137        			
;;;138    }
000554  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                  |L1.1368|
000558  75706e49          DCB      "Inpu"
00055c  72572074          DCB      "t Wr"
000560  20657469          DCB      "ite "
000564  65676150          DCB      "Page"
000568  206f4e20          DCB      " No "
00056c  5320666f          DCB      "of S"
000570  33355835          DCB      "5X53"
000574  3e3d0a32          DCB      "2\n=>"
000578  00000000          DCB      "\0\0\0\0"
                  |L1.1404|
00057c  75706e49          DCB      "Inpu"
000580  72572074          DCB      "t Wr"
000584  20657469          DCB      "ite "
000588  69676552          DCB      "Regi"
00058c  72657473          DCB      "ster"
000590  64644120          DCB      " Add"
000594  73736572          DCB      "ress"
000598  20666f20          DCB      " of "
00059c  35583553          DCB      "S5X5"
0005a0  3d0a3233          DCB      "32\n="
0005a4  0000003e          DCB      ">\0\0\0"
                  |L1.1448|
0005a8  75706e49          DCB      "Inpu"
0005ac  72572074          DCB      "t Wr"
0005b0  20657469          DCB      "ite "
0005b4  6e617254          DCB      "Tran"
0005b8  72656673          DCB      "sfer"
0005bc  74614420          DCB      " Dat"
0005c0  6e692061          DCB      "a in"
0005c4  53206f74          DCB      "to S"
0005c8  33355835          DCB      "5X53"
0005cc  3e3d0a32          DCB      "2\n=>"
0005d0  00000000          DCB      "\0\0\0\0"
                          ENDP

⌨️ 快捷键说明

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