📄 camproset.txt
字号:
00057c e58c3000 STR r3,[r12,#0] ; _CAMiicDataCount
;;;149
;;;150 rIICDS = slvAddr;
000580 e3a03454 MOV r3,#0x54000000
000584 e583000c STR r0,[r3,#0xc]
;;;151 rIICSTAT = 0xf0; //Master Tx, Start
000588 e3a030f0 MOV r3,#0xf0
00058c e3a0c454 MOV r12,#0x54000000
000590 e58c3004 STR r3,[r12,#4]
;;;152 rIICCON &= ~(1<<4); //Resumes IIC operation.
000594 e3a03454 MOV r3,#0x54000000
000598 e5933000 LDR r3,[r3,#0]
00059c e3c33010 BIC r3,r3,#0x10
0005a0 e3a0c454 MOV r12,#0x54000000
0005a4 e58c3000 STR r3,[r12,#0]
;;;153 //Clearing the pending bit isn't needed because the pending bit has been cleared.
;;;154 while(_CAMiicDataCount!=-1);
0005a8 e1a00000 NOP
|L1.1452|
0005ac e51f34ec LDR r3,|L1.200|
0005b0 e5933000 LDR r3,[r3,#0] ; _CAMiicDataCount
0005b4 e3730001 CMN r3,#1
0005b8 1afffffb BNE |L1.1452|
;;;155
;;;156 _CAMiicMode = CAMRDDATA;
0005bc e3a03003 MOV r3,#3
0005c0 e51fc50c LDR r12,|L1.188|
0005c4 e58c3000 STR r3,[r12,#0] ; _CAMiicMode
;;;157 _CAMiicPt = 0;
0005c8 e3a03000 MOV r3,#0
0005cc e51fc514 LDR r12,|L1.192|
0005d0 e58c3000 STR r3,[r12,#0] ; _CAMiicPt
;;;158 _CAMiicDataCount = 1;
0005d4 e3a03001 MOV r3,#1
0005d8 e51fc518 LDR r12,|L1.200|
0005dc e58c3000 STR r3,[r12,#0] ; _CAMiicDataCount
;;;159
;;;160 rIICDS = slvAddr;
0005e0 e3a03454 MOV r3,#0x54000000
0005e4 e583000c STR r0,[r3,#0xc]
;;;161 rIICSTAT = 0xb0; //Master Rx,Start
0005e8 e3a030b0 MOV r3,#0xb0
0005ec e3a0c454 MOV r12,#0x54000000
0005f0 e58c3004 STR r3,[r12,#4]
;;;162 rIICCON &= ~(1<<4); //Resumes IIC operation.
0005f4 e3a03454 MOV r3,#0x54000000
0005f8 e5933000 LDR r3,[r3,#0]
0005fc e3c33010 BIC r3,r3,#0x10
000600 e3a0c454 MOV r12,#0x54000000
000604 e58c3000 STR r3,[r12,#0]
;;;163
;;;164 while(_CAMiicDataCount!=-1);
000608 e1a00000 NOP
|L1.1548|
00060c e51f354c LDR r3,|L1.200|
000610 e5933000 LDR r3,[r3,#0] ; _CAMiicDataCount
000614 e3730001 CMN r3,#1
000618 1afffffb BNE |L1.1548|
;;;165
;;;166 *data = _CAMiicData[1];
00061c e51f3560 LDR r3,|L1.196|
000620 e5d33001 LDRB r3,[r3,#1] ; _CAMiicData
000624 e5c23000 STRB r3,[r2,#0]
;;;167 }
000628 e1a0f00e MOV pc,lr
ENDP
Camera_WriteByte PROC
;;;234 void Camera_WriteByte(void)
;;;235 {
00062c e92d4070 STMFD sp!,{r4-r6,lr}
;;;236 unsigned int i, j, save_E, save_PE, RegAddr, RegData, pageNo;
;;;237
;;;238 #if (USED_CAM_TYPE==CAM_S5X532)||(USED_CAM_TYPE==CAM_S5X3A1)
;;;239 Uart_Printf("Input Write Page No of %s\n=>", CAM_NAME);
000630 e24f1f4d ADR r1,|L1.1284|
000634 e28f0054 ADR r0,|L1.1680|
000638 ebfffffe BL Uart_Printf
;;;240 pageNo = (U8)Uart_GetIntNum();
00063c ebfffffe BL Uart_GetIntNum
000640 e20060ff AND r6,r0,#0xff
;;;241 #endif
;;;242
;;;243 Uart_Printf("Input Write Register Address of %s\n=>", CAM_NAME);
000644 e24f1f52 ADR r1,|L1.1284|
000648 e28f0060 ADR r0,|L1.1712|
00064c ebfffffe BL Uart_Printf
;;;244 RegAddr = (U8)Uart_GetIntNum();
000650 ebfffffe BL Uart_GetIntNum
000654 e20040ff AND r4,r0,#0xff
;;;245
;;;246 Uart_Printf("Input Write Transfer Data into %s\n=>", CAM_NAME);
000658 e24f1f57 ADR r1,|L1.1284|
00065c e28f0074 ADR r0,|L1.1752|
000660 ebfffffe BL Uart_Printf
;;;247 RegData = (U8)Uart_GetIntNum();
000664 ebfffffe BL Uart_GetIntNum
000668 e20050ff AND r5,r0,#0xff
;;;248
;;;249 #if (USED_CAM_TYPE==CAM_S5X532)||(USED_CAM_TYPE==CAM_S5X3A1)
;;;250 Wr_CamIIC(CAM_ID, (U8)0xec, pageNo); // set Page no
00066c e1a02006 MOV r2,r6
000670 e3a010ec MOV r1,#0xec
000674 e3a0005a MOV r0,#0x5a
000678 ebfffffe BL Wr_CamIIC
;;;251 #endif
;;;252 Wr_CamIIC(CAM_ID, (U8)RegAddr, RegData); // set register after setting page number
00067c e1a02005 MOV r2,r5
000680 e1a01004 MOV r1,r4
000684 e3a0005a MOV r0,#0x5a
000688 ebfffffe BL Wr_CamIIC
;;;253 }
00068c e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.1680|
000690 75706e49 DCB "Inpu"
000694 72572074 DCB "t Wr"
000698 20657469 DCB "ite "
00069c 65676150 DCB "Page"
0006a0 206f4e20 DCB " No "
0006a4 2520666f DCB "of %"
0006a8 3e3d0a73 DCB "s\n=>"
0006ac 00000000 DCB "\0\0\0\0"
|L1.1712|
0006b0 75706e49 DCB "Inpu"
0006b4 72572074 DCB "t Wr"
0006b8 20657469 DCB "ite "
0006bc 69676552 DCB "Regi"
0006c0 72657473 DCB "ster"
0006c4 64644120 DCB " Add"
0006c8 73736572 DCB "ress"
0006cc 20666f20 DCB " of "
0006d0 3d0a7325 DCB "%s\n="
0006d4 0000003e DCB ">\0\0\0"
|L1.1752|
0006d8 75706e49 DCB "Inpu"
0006dc 72572074 DCB "t Wr"
0006e0 20657469 DCB "ite "
0006e4 6e617254 DCB "Tran"
0006e8 72656673 DCB "sfer"
0006ec 74614420 DCB " Dat"
0006f0 6e692061 DCB "a in"
0006f4 25206f74 DCB "to %"
0006f8 3e3d0a73 DCB "s\n=>"
0006fc 00000000 DCB "\0\0\0\0"
ENDP
Camera_ReadByte PROC
;;;256 void Camera_ReadByte(void)
;;;257 {
000700 e92d4038 STMFD sp!,{r3-r5,lr}
;;;258 unsigned int i, j, save_E, save_PE, RegAddr, RegData, pageNo;
;;;259 static U8 rdata[8];
;;;260
;;;261 #if (USED_CAM_TYPE==CAM_S5X532)||(USED_CAM_TYPE==CAM_S5X3A1)
;;;262 Uart_Printf("Input Write Page No of %s\n=>", CAM_NAME);
000704 e24f1f82 ADR r1,|L1.1284|
000708 e24f0080 ADR r0,|L1.1680|
00070c ebfffffe BL Uart_Printf
;;;263 pageNo = (U8)Uart_GetIntNum();
000710 ebfffffe BL Uart_GetIntNum
000714 e20050ff AND r5,r0,#0xff
;;;264 Wr_CamIIC(CAM_ID, (U8)0xec, pageNo); // set Page no
000718 e1a02005 MOV r2,r5
00071c e3a010ec MOV r1,#0xec
000720 e3a0005a MOV r0,#0x5a
000724 ebfffffe BL Wr_CamIIC
;;;265 #endif
;;;266
;;;267 Uart_Printf("Input Read Register Address of %s\n=>", CAM_NAME);
000728 e24f1f8b ADR r1,|L1.1284|
00072c e28f0030 ADR r0,|L1.1892|
000730 ebfffffe BL Uart_Printf
;;;268 RegAddr = (U8)Uart_GetIntNum();
000734 ebfffffe BL Uart_GetIntNum
000738 e20040ff AND r4,r0,#0xff
;;;269 Rd_CamIIC(CAM_ID, RegAddr, &rdata[0]);
00073c e59f2048 LDR r2,|L1.1932|
000740 e1a01004 MOV r1,r4
000744 e3a0005a MOV r0,#0x5a
000748 ebfffffe BL Rd_CamIIC
;;;270 Uart_Printf("Register Addr: 0x%2x, data: 0x%2x\n", RegAddr,rdata[0]);
00074c e59f0038 LDR r0,|L1.1932|
000750 e5d02000 LDRB r2,[r0,#0] ; rdata@Camera_ReadByte_0
000754 e1a01004 MOV r1,r4
000758 e28f0030 ADR r0,|L1.1936|
00075c ebfffffe BL Uart_Printf
;;;271 }
000760 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.1892|
000764 75706e49 DCB "Inpu"
000768 65522074 DCB "t Re"
00076c 52206461 DCB "ad R"
000770 73696765 DCB "egis"
000774 20726574 DCB "ter "
000778 72646441 DCB "Addr"
00077c 20737365 DCB "ess "
000780 2520666f DCB "of %"
000784 3e3d0a73 DCB "s\n=>"
000788 00000000 DCB "\0\0\0\0"
|L1.1932|
00078c 00000000 DCD ||.bss$2||
|L1.1936|
000790 69676552 DCB "Regi"
000794 72657473 DCB "ster"
000798 64644120 DCB " Add"
00079c 30203a72 DCB "r: 0"
0007a0 78322578 DCB "x%2x"
0007a4 6164202c DCB ", da"
0007a8 203a6174 DCB "ta: "
0007ac 32257830 DCB "0x%2"
0007b0 00000a78 DCB "x\n\0\0"
ENDP
Camera_ReadBlock PROC
;;;297 void Camera_ReadBlock(void)
;;;298 {
0007b4 e92d4010 STMFD sp!,{r4,lr}
;;;299 unsigned int i, j, save_E, save_PE, RegAddr, RegData;
;;;300 static U8 rdata[256];
;;;301
;;;302 #if USED_CAM_TYPE==CAM_OV7620
;;;303 for(i=0; i<(sizeof(Ov7620_YCbCr8bit)/2);i++)
;;;304 Rd_CamIIC(CAM_ID, Ov7620_YCbCr8bit[i][0], &rdata[i]);
;;;305 for(i=0; i<(sizeof(Ov7620_YCbCr8bit)/2);i++)
;;;306 Uart_Printf("Addr: 0x%2x, W: 0x%2x, R: 0x%2x\n", Ov7620_YCbCr8bit[i][0], Ov7620_YCbCr8bit[i][1], rdata[i]);
;;;307 #elif USED_CAM_TYPE==CAM_S5X532
;;;308 for(i=0; i<(sizeof(S5X532_YCbCr8bit)/2);i++)
0007b8 e3a04000 MOV r4,#0
|L1.1980|
0007bc e354005e CMP r4,#0x5e
0007c0 2a000015 BCS |L1.2076|
0007c4 ea000001 B |L1.2000|
|L1.1992|
0007c8 e2844001 ADD r4,r4,#1
0007cc eafffffa B |L1.1980|
;;;309 {
;;;310 if(S5X532_YCbCr8bit[i][0] == 0xec)
|L1.2000|
0007d0 e51f070c LDR r0,|L1.204|
0007d4 e7d00084 LDRB r0,[r0,r4,LSL #1]
0007d8 e35000ec CMP r0,#0xec
0007dc 1a000007 BNE |L1.2048|
;;;311 Wr_CamIIC(CAM_ID, S5X532_YCbCr8bit[i][0], S5X532_YCbCr8bit[i][1]);
0007e0 e51f071c LDR r0,|L1.204|
0007e4 e0800084 ADD r0,r0,r4,LSL #1
0007e8 e5d02001 LDRB r2,[r0,#1]
0007ec e51f0728 LDR r0,|L1.204|
0007f0 e7d01084 LDRB r1,[r0,r4,LSL #1]
0007f4 e3a0005a MOV r0,#0x5a
0007f8 ebfffffe BL Wr_CamIIC
0007fc ea000005 B |L1.2072|
;;;312 else
;;;313 Rd_CamIIC(CAM_ID, S5X532_YCbCr8bit[i][0], &rdata[i]);
|L1.2048|
000800 e59f0080 LDR r0,|L1.2184|
000804 e0802004 ADD r2,r0,r4
000808 e51f0744 LDR r0,|L1.204|
00080c e7d01084 LDRB r1,[r0,r4,LSL #1]
000810 e3a0005a MOV r0,#0x5a
000814 ebfffffe BL Rd_CamIIC
;;;314 }
|L1.2072|
000818 eaffffea B |L1.1992|
;;;315 for(i=0; i<(sizeof(S5X532_YCbCr8bit)/2);i++)
|L1.2076|
00081c e3a04000 MOV r4,#0
|L1.2080|
000820 e354005e CMP r4,#0x5e
000824 2a000016 BCS |L1.2180|
000828 ea000001 B |L1.2100|
|L1.2092|
00082c e2844001 ADD r4,r4,#1
000830 eafffffa B |L1.2080|
;;;316 {
;;;317 if(S5X532_YCbCr8bit[i][0] == 0xec)
|L1.2100|
000834 e51f0770 LDR r0,|L1.204|
000838 e7d00084 LDRB r0,[r0,r4,LSL #1]
00083c e35000ec CMP r0,#0xec
000840 1a000005 BNE |L1.2140|
;;;318 Uart_Printf("Page: 0x%2x\n", S5X532_YCbCr8bit[i][1]);
000844 e51f0780 LDR r0,|L1.204|
000848 e0800084 ADD r0,r0,r4,LSL #1
00084c e5d01001 LDRB r1,[r0,#1]
000850 e28f0034 ADR r0,|L1.2188|
000854 ebfffffe BL Uart_Printf
000858 ea000008 B |L1.2176|
;;;319 else
;;;320 Uart_Printf("Addr: 0x%2x, W: 0x%2x, R: 0x%2x\n", S5X532_YCbCr8bit[i][0], S5X532_YCbCr8bit[i][1], rdata[i]);
|L1.2140|
00085c e59f0024 LDR r0,|L1.2184|
000860 e7d03004 LDRB r3,[r0,r4]
000864 e51f07a0 LDR r0,|L1.204|
000868 e0800084 ADD r0,r0,r4,LSL #1
00086c e5d02001 LDRB r2,[r0,#1]
000870 e51f07ac LDR r0,|L1.204|
000874 e7d01084 LDRB r1,[r0,r4,LSL #1]
000878 e28f001c ADR r0,|L1.2204|
00087c ebfffffe BL Uart_Printf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -