📄 camproset.txt
字号:
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 + -