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

📄 camproset.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
0002dc  e5902000          LDR      r2,[r0,#0]  ; _CAMiicDataCount
0002e0  e5801000          STR      r1,[r0,#0]  ; _CAMiicDataCount
0002e4  e3520000          CMP      r2,#0
0002e8  1a00000a          BNE      |L1.792|
;;;216    				rIICSTAT = 0xd0;                //stop MasTx condition 
0002ec  e3a000d0          MOV      r0,#0xd0
0002f0  e3a01454          MOV      r1,#0x54000000
0002f4  e5810004          STR      r0,[r1,#4]
;;;217    				rIICCON  &= ~(1<<4);                //resumes IIC operation.
0002f8  e3a00454          MOV      r0,#0x54000000
0002fc  e5900000          LDR      r0,[r0,#0]
000300  e3c00010          BIC      r0,r0,#0x10
000304  e3a01454          MOV      r1,#0x54000000
000308  e5810000          STR      r0,[r1,#0]
;;;218    				Delay(1);      //wait until stop condtion is in effect.
00030c  e3a00001          MOV      r0,#1
000310  ebfffffe          BL       Delay
;;;219    
;;;220    				break;                  //IIC operation is stopped because of IICCON[4]    
000314  ea000014          B        |L1.876|
;;;221    			}
;;;222    			rIICDS = _CAMiicData[_CAMiicPt++];
                  |L1.792|
000318  e51f0260          LDR      r0,|L1.192|
00031c  e5900000          LDR      r0,[r0,#0]  ; _CAMiicPt
000320  e2801001          ADD      r1,r0,#1
000324  e51f226c          LDR      r2,|L1.192|
000328  e5821000          STR      r1,[r2,#0]  ; _CAMiicPt
00032c  e51f1270          LDR      r1,|L1.196|
000330  e7d10000          LDRB     r0,[r1,r0]
000334  e3a01454          MOV      r1,#0x54000000
000338  e581000c          STR      r0,[r1,#0xc]
;;;223    			for(i=0;i<10;i++);          //for setup time until rising edge of IICSCL
00033c  e3a04000          MOV      r4,#0
                  |L1.832|
000340  e354000a          CMP      r4,#0xa
000344  2a000001          BCS      |L1.848|
000348  e2844001          ADD      r4,r4,#1
00034c  eafffffb          B        |L1.832|
;;;224    				rIICCON &= ~(1<<4);             //resumes IIC operation.
                  |L1.848|
000350  e3a00454          MOV      r0,#0x54000000
000354  e5900000          LDR      r0,[r0,#0]
000358  e3c00010          BIC      r0,r0,#0x10
00035c  e3a01454          MOV      r1,#0x54000000
000360  e5810000          STR      r0,[r1,#0]
;;;225    			break;
000364  ea000000          B        |L1.876|
;;;226    		default:
;;;227    			break;      
                  |L1.872|
000368  e1a00000          NOP      
;;;228    	}
;;;229    
;;;230    	rINTMSK &= ~BIT_IIC;
                  |L1.876|
00036c  e3a0044a          MOV      r0,#0x4a000000
000370  e5900008          LDR      r0,[r0,#8]
000374  e3c00680          BIC      r0,r0,#0x8000000
000378  e3a0144a          MOV      r1,#0x4a000000
00037c  e5810008          STR      r0,[r1,#8]
;;;231    }
000380  e8bd503f          LDMFD    sp!,{r0-r5,r12,lr}
000384  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  IicPortSet PROC
;;;115    void IicPortSet(void)
;;;116    {
000388  e3a00456          MOV      r0,#0x56000000
;;;117    	save_GPECON = rGPECON;
00038c  e5900040          LDR      r0,[r0,#0x40]
000390  e59f1160          LDR      r1,|L1.1272|
000394  e5810000          STR      r0,[r1,#0]  ; save_GPECON
;;;118    	rGPECON = rGPECON & ~(0xf<<28) | (0xa<<28);	//GPE15:IICSDA , GPE14:IICSCL 	 
000398  e3a00456          MOV      r0,#0x56000000
00039c  e5900040          LDR      r0,[r0,#0x40]
0003a0  e3c004f0          BIC      r0,r0,#0xf0000000
0003a4  e38004a0          ORR      r0,r0,#0xa0000000
0003a8  e3a01456          MOV      r1,#0x56000000
0003ac  e5810040          STR      r0,[r1,#0x40]
;;;119    }
0003b0  e1a0f00e          MOV      pc,lr
                          ENDP

                  CameraModuleSetting PROC
;;;347    int CameraModuleSetting(void)
;;;348    {
0003b4  e92d4010          STMFD    sp!,{r4,lr}
;;;349    	unsigned int i, j, save_E, save_PE, RegAddr, RegData;
;;;350    	static U8 rdata[256]; 
;;;351    	int donestatus;
;;;352          	
;;;353    	IicPortSet();
0003b8  ebfffffe          BL       IicPortSet
;;;354    
;;;355    	// for camera init, added by junon
;;;356    	pISR_IIC = (unsigned)Cam_IICInt; 
0003bc  e59f0138          LDR      r0,|L1.1276|
0003c0  e59f1138          LDR      r1,|L1.1280|
0003c4  e5810f8c          STR      r0,[r1,#0xf8c]
;;;357    	rINTMSK &= ~(BIT_IIC);
0003c8  e3a0044a          MOV      r0,#0x4a000000
0003cc  e5900008          LDR      r0,[r0,#8]
0003d0  e3c00680          BIC      r0,r0,#0x8000000
0003d4  e3a0144a          MOV      r1,#0x4a000000
0003d8  e5810008          STR      r0,[r1,#8]
;;;358    
;;;359    	//Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;360    	rIICCON  = (1<<7) | (1<<6) | (1<<5) | (0x3);
0003dc  e3a000e3          MOV      r0,#0xe3
0003e0  e3a01454          MOV      r1,#0x54000000
0003e4  e5810000          STR      r0,[r1,#0]
;;;361    
;;;362    	rIICADD  = 0x10;                    //24A0 slave address = [7:1]
0003e8  e3a00010          MOV      r0,#0x10
0003ec  e3a01454          MOV      r1,#0x54000000
0003f0  e5810008          STR      r0,[r1,#8]
;;;363    	rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
0003f4  e3a00010          MOV      r0,#0x10
0003f8  e3a01454          MOV      r1,#0x54000000
0003fc  e5810004          STR      r0,[r1,#4]
;;;364    	rIICLC = (1<<2)|(3);   			// SDAOUT has 5clock cycle delay
000400  e3a00007          MOV      r0,#7
000404  e3a01454          MOV      r1,#0x54000000
000408  e5810010          STR      r0,[r1,#0x10]
;;;365    
;;;366    	donestatus=1;
00040c  e3a04001          MOV      r4,#1
;;;367    
;;;368    	Camera_WriteBlock();
000410  ebfffffe          BL       Camera_WriteBlock
;;;369    //	Camera_ReadBlock();
;;;370    	
;;;371    	return donestatus;
000414  e1a00004          MOV      r0,r4
;;;372    }
000418  e8bd8010          LDMFD    sp!,{r4,pc}
                          ENDP

                  Camera_Iic_Test PROC
;;;79     void Camera_Iic_Test(void)
;;;80     {
00041c  e92d4010          STMFD    sp!,{r4,lr}
;;;81     	int i, camclk;
;;;82     
;;;83     	CameraModuleSetting();
000420  ebfffffe          BL       CameraModuleSetting
;;;84     
;;;85     	Uart_Printf("\n***** IIC Master Tx/Rx Test Program with %s Camera Module *****\n", CAM_NAME);
000424  e28f10d8          ADR      r1,|L1.1284|
000428  e59f00dc          LDR      r0,|L1.1292|
00042c  ebfffffe          BL       Uart_Printf
;;;86     
;;;87     	while(1) 	{
000430  e1a00000          NOP      
                  |L1.1076|
000434  e1a00000          NOP      
;;;88     		i=0;
000438  e3a04000          MOV      r4,#0
;;;89     		Uart_Printf("\n\n");
00043c  e28f00cc          ADR      r0,|L1.1296|
000440  ebfffffe          BL       Uart_Printf
;;;90     
;;;91     		while(1) {   //display menu
000444  e1a00000          NOP      
                  |L1.1096|
000448  e1a00000          NOP      
;;;92     			Uart_Printf("%2d:%s\n", i, func_cammodule_test[i][1]);
00044c  e59f00c0          LDR      r0,|L1.1300|
000450  e0800184          ADD      r0,r0,r4,LSL #3
000454  e1a01004          MOV      r1,r4
000458  e5902004          LDR      r2,[r0,#4]
00045c  e28f00b4          ADR      r0,|L1.1304|
000460  ebfffffe          BL       Uart_Printf
;;;93     			i++;
000464  e2844001          ADD      r4,r4,#1
;;;94     			if((int)(func_cammodule_test[i][0])==0) {
000468  e59f00a4          LDR      r0,|L1.1300|
00046c  e7900184          LDR      r0,[r0,r4,LSL #3]
000470  e3500000          CMP      r0,#0
000474  1a000002          BNE      |L1.1156|
;;;95     				Uart_Printf("\n");
000478  e28f00a0          ADR      r0,|L1.1312|
00047c  ebfffffe          BL       Uart_Printf
;;;96     				break;
000480  ea000004          B        |L1.1176|
;;;97     			}
;;;98     			if((i%4)==0)
                  |L1.1156|
000484  e3140003          TST      r4,#3
000488  1a000001          BNE      |L1.1172|
;;;99     			Uart_Printf("\n");
00048c  e28f008c          ADR      r0,|L1.1312|
000490  ebfffffe          BL       Uart_Printf
;;;100    		}
                  |L1.1172|
000494  eaffffeb          B        |L1.1096|
;;;101    
;;;102    		Uart_Printf("\nPress Enter key to exit : ");
                  |L1.1176|
000498  e28f0084          ADR      r0,|L1.1316|
00049c  ebfffffe          BL       Uart_Printf
;;;103    		i = Uart_GetIntNum();
0004a0  ebfffffe          BL       Uart_GetIntNum
0004a4  e1a04000          MOV      r4,r0
;;;104    
;;;105    		if(i==-1) break;		// return.
0004a8  e3740001          CMN      r4,#1
0004ac  1a000000          BNE      |L1.1204|
0004b0  ea000008          B        |L1.1240|
;;;106    		if(i>=0 && (i<((sizeof(func_cammodule_test)-1)/8)) )	// select and execute...
                  |L1.1204|
0004b4  e3540000          CMP      r4,#0
0004b8  ba000005          BLT      |L1.1236|
0004bc  e3540004          CMP      r4,#4
0004c0  2a000003          BCS      |L1.1236|
;;;107    			( (void (*)(void)) (func_cammodule_test[i][0]) )();
0004c4  e59f1048          LDR      r1,|L1.1300|
0004c8  e7910184          LDR      r0,[r1,r4,LSL #3]
0004cc  e1a0e00f          MOV      lr,pc
0004d0  e1a0f000          MOV      pc,r0
;;;108    	}
                  |L1.1236|
0004d4  eaffffd6          B        |L1.1076|
;;;109    
;;;110    	Uart_Printf("\n");
                  |L1.1240|
0004d8  e28f0040          ADR      r0,|L1.1312|
0004dc  ebfffffe          BL       Uart_Printf
;;;111       	rINTMSK |= BIT_IIC;
0004e0  e3a0044a          MOV      r0,#0x4a000000
0004e4  e5900008          LDR      r0,[r0,#8]
0004e8  e3800680          ORR      r0,r0,#0x8000000
0004ec  e3a0144a          MOV      r1,#0x4a000000
0004f0  e5810008          STR      r0,[r1,#8]
;;;112    }
0004f4  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.1272|
0004f8  00000338          DCD      ||.bss$2|| + 824
                  |L1.1276|
0004fc  00000000          DCD      Cam_IICInt
                  |L1.1280|
000500  31fff000          DCD      0x31fff000
                  |L1.1284|
000504  35583553          DCB      "S5X5"
000508  00003233          DCB      "32\0\0"
                  |L1.1292|
00050c  000002b4          DCD      ||.constdata$1|| + 692
                  |L1.1296|
000510  00000a0a          DCB      "\n\n\0\0"
                  |L1.1300|
000514  00000000          DCD      func_cammodule_test
                  |L1.1304|
000518  3a643225          DCB      "%2d:"
00051c  000a7325          DCB      "%s\n\0"
                  |L1.1312|
000520  0000000a          DCB      "\n\0\0\0"
                  |L1.1316|
000524  6572500a          DCB      "\nPre"
000528  45207373          DCB      "ss E"
00052c  7265746e          DCB      "nter"
000530  79656b20          DCB      " key"
000534  206f7420          DCB      " to "
000538  74697865          DCB      "exit"
00053c  00203a20          DCB      " : \0"
                          ENDP

                  IicPortReturn PROC
;;;121    void IicPortReturn(void)
;;;122    {
000540  e51f0050          LDR      r0,|L1.1272|
;;;123    	rGPECON = save_GPECON;
000544  e5900000          LDR      r0,[r0,#0]  ; save_GPECON
000548  e3a01456          MOV      r1,#0x56000000
00054c  e5810040          STR      r0,[r1,#0x40]
;;;124    }
000550  e1a0f00e          MOV      pc,lr
                          ENDP

                  Rd_CamIIC PROC
;;;141    void Rd_CamIIC(U32 slvAddr,U32 addr,U8 *data)
;;;142    {
000554  e3a03004          MOV      r3,#4
;;;143    
;;;144    	/*IIC Slave Addr Write + IIC Reg Addr Write */	
;;;145    	_CAMiicMode      = CAMSETRDADDR;
000558  e51fc4a4          LDR      r12,|L1.188|
00055c  e58c3000          STR      r3,[r12,#0]  ; _CAMiicMode
;;;146    	_CAMiicPt        = 0;
000560  e3a03000          MOV      r3,#0
000564  e51fc4ac          LDR      r12,|L1.192|
000568  e58c3000          STR      r3,[r12,#0]  ; _CAMiicPt
;;;147    	_CAMiicData[0]   = (U8)addr;
00056c  e51f34b0          LDR      r3,|L1.196|
000570  e5c31000          STRB     r1,[r3,#0]  ; _CAMiicData
;;;148    	_CAMiicDataCount = 1;
000574  e3a03001          MOV      r3,#1
000578  e51fc4b8          LDR      r12,|L1.200|

⌨️ 快捷键说明

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