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