📄 at45db161.txt
字号:
000188 8980 LDRH r0,[r0,#0xc]
00018a 2101 MOVS r1,#1
00018c 03c9 LSLS r1,r1,#15
00018e 4308 ORRS r0,r0,r1
000190 499d LDR r1,|L1.1032|
000192 8188 STRH r0,[r1,#0xc]
;;;137
;;;138 return tmp;
000194 0020 MOVS r0,r4
;;;139 }
000196 bc10 POP {r4}
000198 bc08 POP {r3}
00019a 4718 BX r3
ENDP
AT45_Ready PROC
;;;151 void AT45_Ready(void)
;;;152 {
00019c b510 PUSH {r4,lr}
;;;153 u8 tmp = 0x00;
00019e 2400 MOVS r4,#0
;;;154
;;;155 while(!(tmp & 0x80))
0001a0 e002 B |L1.424|
;;;156 {
;;;157 tmp = AT45_Read_REG();
|L1.418|
0001a2 f7ff fffe BL AT45_Read_REG
0001a6 0004 MOVS r4,r0
|L1.424|
0001a8 2080 MOVS r0,#0x80 ;155
0001aa 4204 TST r4,r0 ;155
0001ac d0f9 BEQ |L1.418| ;155
;;;158 }
;;;159 }
0001ae bc10 POP {r4}
0001b0 bc08 POP {r3}
0001b2 4718 BX r3
ENDP
Detect_AT45DB PROC
;;;170 u8 Detect_AT45DB(void)
;;;171 {
0001b4 b510 PUSH {r4,lr}
;;;172 u8 temp;
;;;173
;;;174 AT45_Ready(); //wait until dataflash is ready
0001b6 f7ff fffe BL AT45_Ready
;;;175 temp = AT45_Read_REG();
0001ba f7ff fffe BL AT45_Read_REG
0001be 0004 MOVS r4,r0
;;;176
;;;177 return (temp>>2)&0x0f;
0001c0 06a0 LSLS r0,r4,#26
0001c2 0f00 LSRS r0,r0,#28
;;;178 }
0001c4 bc10 POP {r4}
0001c6 bc08 POP {r3}
0001c8 4718 BX r3
ENDP
WriteMultiByteToBuffer1 PROC
;;;213 void WriteMultiByteToBuffer1( u16 Address, u8 *Data, u16 len )
;;;214 {
0001ca b5f8 PUSH {r3-r7,lr}
0001cc 0004 MOVS r4,r0
0001ce 000e MOVS r6,r1
0001d0 0017 MOVS r7,r2
;;;215 u16 i;
;;;216 if ( len == 0 )
0001d2 2f00 CMP r7,#0
0001d4 d102 BNE |L1.476|
;;;217 {
;;;218 return ;
;;;219 }
;;;220 AT45_Chip_Select_ENABLE;
;;;221 BPSI_DataSendReceive( BUFFER1_WRITE ); // 写入命令
;;;222 BPSI_DataSendReceive( 0 );
;;;223 BPSI_DataSendReceive( Address / 256 ); // 2位高位地址
;;;224 BPSI_DataSendReceive( Address % 256 ); // 8位低位地址
;;;225 for ( i = 0; i < len; i++ )
;;;226 {
;;;227 BPSI_DataSendReceive( *Data ); // 写入数据
;;;228 Data++;
;;;229 }
;;;230 AT45_Chip_Select_DISABLE;
;;;231 }
|L1.470|
0001d6 bcf8 POP {r3-r7}
0001d8 bc08 POP {r3}
0001da 4718 BX r3
|L1.476|
0001dc 488a LDR r0,|L1.1032| ;220
0001de 8980 LDRH r0,[r0,#0xc] ;220
0001e0 2101 MOVS r1,#1 ;220
0001e2 03c9 LSLS r1,r1,#15 ;220
0001e4 4388 BICS r0,r0,r1 ;220
0001e6 4988 LDR r1,|L1.1032| ;220
0001e8 8188 STRH r0,[r1,#0xc] ;220
0001ea 2084 MOVS r0,#0x84 ;221
0001ec f7ff fffe BL BPSI_DataSendReceive ;221
0001f0 2000 MOVS r0,#0 ;222
0001f2 f7ff fffe BL BPSI_DataSendReceive ;222
0001f6 0025 MOVS r5,r4 ;223
0001f8 17e1 ASRS r1,r4,#31 ;223
0001fa 0e09 LSRS r1,r1,#24 ;223
0001fc 1909 ADDS r1,r1,r4 ;223
0001fe 0409 LSLS r1,r1,#16 ;223
000200 0e08 LSRS r0,r1,#24 ;223
000202 f7ff fffe BL BPSI_DataSendReceive ;223
000206 17e1 ASRS r1,r4,#31 ;224
000208 0e09 LSRS r1,r1,#24 ;224
00020a 1909 ADDS r1,r1,r4 ;224
00020c 1209 ASRS r1,r1,#8 ;224
00020e 0209 LSLS r1,r1,#8 ;224
000210 1a61 SUBS r1,r4,r1 ;224
000212 0608 LSLS r0,r1,#24 ;224
000214 0e00 LSRS r0,r0,#24 ;224
000216 f7ff fffe BL BPSI_DataSendReceive ;224
00021a 2000 MOVS r0,#0 ;225
00021c 9000 STR r0,[sp,#0] ;225
00021e e008 B |L1.562| ;225
|L1.544|
000220 7830 LDRB r0,[r6,#0] ;227
000222 f7ff fffe BL BPSI_DataSendReceive ;227
000226 1c76 ADDS r6,r6,#1 ;228
000228 9800 LDR r0,[sp,#0] ;225
00022a 1c40 ADDS r0,r0,#1 ;225
00022c 0400 LSLS r0,r0,#16 ;225
00022e 0c00 LSRS r0,r0,#16 ;225
000230 9000 STR r0,[sp,#0] ;225
|L1.562|
000232 9800 LDR r0,[sp,#0] ;225
000234 42b8 CMP r0,r7 ;225
000236 dbf3 BLT |L1.544| ;225
000238 4873 LDR r0,|L1.1032| ;230
00023a 8980 LDRH r0,[r0,#0xc] ;230
00023c 2101 MOVS r1,#1 ;230
00023e 03c9 LSLS r1,r1,#15 ;230
000240 4308 ORRS r0,r0,r1 ;230
000242 4971 LDR r1,|L1.1032| ;230
000244 8188 STRH r0,[r1,#0xc] ;230
000246 e7c6 B |L1.470|
ENDP
ErasePage PROC
;;;269 void ErasePage(u16 PageNum)
;;;270 {
000248 b530 PUSH {r4,r5,lr}
00024a 0004 MOVS r4,r0
;;;271 while ( IS_DATA_FLASH_BUSY() ); // 等待芯片空闲
00024c 46c0 MOV r8,r8
|L1.590|
00024e f7ff fffe BL AT45_Read_REG
000252 2180 MOVS r1,#0x80
000254 4208 TST r0,r1
000256 d0fa BEQ |L1.590|
;;;272 AT45_Chip_Select_ENABLE;
000258 486b LDR r0,|L1.1032|
00025a 8980 LDRH r0,[r0,#0xc]
00025c 0209 LSLS r1,r1,#8
00025e 4388 BICS r0,r0,r1
000260 4969 LDR r1,|L1.1032|
000262 8188 STRH r0,[r1,#0xc]
;;;273 PageNum <<= PAGE_RL;
000264 04a0 LSLS r0,r4,#18
000266 0c04 LSRS r4,r0,#16
;;;274 BPSI_DataSendReceive(PAGE_ERASE); // 命令
000268 2081 MOVS r0,#0x81
00026a f7ff fffe BL BPSI_DataSendReceive
;;;275 BPSI_DataSendReceive(PageNum/256); // 高7位地址
00026e 0025 MOVS r5,r4
000270 17e1 ASRS r1,r4,#31
000272 0e09 LSRS r1,r1,#24
000274 1909 ADDS r1,r1,r4
000276 0409 LSLS r1,r1,#16
000278 0e08 LSRS r0,r1,#24
00027a f7ff fffe BL BPSI_DataSendReceive
;;;276 BPSI_DataSendReceive(PageNum%256); // 低6位地址
00027e 17e1 ASRS r1,r4,#31
000280 0e09 LSRS r1,r1,#24
000282 1909 ADDS r1,r1,r4
000284 1209 ASRS r1,r1,#8
000286 0209 LSLS r1,r1,#8
000288 1a61 SUBS r1,r4,r1
00028a 0608 LSLS r0,r1,#24
00028c 0e00 LSRS r0,r0,#24
00028e f7ff fffe BL BPSI_DataSendReceive
;;;277 BPSI_DataSendReceive(0);
000292 2000 MOVS r0,#0
000294 f7ff fffe BL BPSI_DataSendReceive
;;;278 AT45_Chip_Select_DISABLE;
000298 485b LDR r0,|L1.1032|
00029a 8980 LDRH r0,[r0,#0xc]
00029c 2101 MOVS r1,#1
00029e 03c9 LSLS r1,r1,#15
0002a0 4308 ORRS r0,r0,r1
0002a2 4959 LDR r1,|L1.1032|
0002a4 8188 STRH r0,[r1,#0xc]
;;;279 }
0002a6 bc30 POP {r4,r5}
0002a8 bc08 POP {r3}
0002aa 4718 BX r3
ENDP
ReadMultiByteFromMainMemory PROC
;;;322 u8 ReadMultiByteFromMainMemory( u16 PageNum, u16 SubAddress, u8 *msg, u8 len )
;;;323 {
0002ac b5ff PUSH {r0-r7,lr}
0002ae b081 SUB sp,sp,#4
0002b0 0005 MOVS r5,r0
0002b2 000c MOVS r4,r1
;;;324 u8 i;
;;;325 i = 255;
0002b4 20ff MOVS r0,#0xff
0002b6 9000 STR r0,[sp,#0]
;;;326 if ( len == 0 )
0002b8 9804 LDR r0,[sp,#0x10]
0002ba 2800 CMP r0,#0
0002bc d103 BNE |L1.710|
;;;327 {
;;;328 return FALSE;
;;;329 }
;;;330 while ( IS_DATA_FLASH_BUSY() && i-- )
;;;331 {
;;;332 ;
;;;333 }
;;;334 if ( i == 0 )
;;;335 {
;;;336 return FALSE;
;;;337 }
;;;338 PageNum <<= PAGE_RL;
;;;339 AT45_Chip_Select_ENABLE;
;;;340 BPSI_DataSendReceive( CONTINUOUS_ARRAY_READ ); // 命令
;;;341 BPSI_DataSendReceive( PageNum / 256 ); // 高7位页地址
;;;342 BPSI_DataSendReceive( ( ( PageNum % 256 ) & ADDR_MASK) | ( ( SubAddress / 256 ) & (~ADDR_MASK) ) );
;;;343 /*低6位页地址和高2位页内地址*/
;;;344 BPSI_DataSendReceive( SubAddress % 256 ); // 低8位页内地址
;;;345 BPSI_DataSendReceive( 0 );
;;;346 BPSI_DataSendReceive( 0 );
;;;347 BPSI_DataSendReceive( 0 );
;;;348 BPSI_DataSendReceive( 0 );
;;;349 for ( i = 0; i < len; i++ )
;;;350 {
;;;351 *msg = BPSI_DataSendReceive(0xff); // 读出数据
;;;352 msg ++;
;;;353 }
;;;354 AT45_Chip_Select_DISABLE;
;;;355 return TRUE;
;;;356 }
|L1.702|
0002be b005 ADD sp,sp,#0x14
0002c0 bcf0 POP {r4-r7}
0002c2 bc08 POP {r3}
0002c4 4718 BX r3
|L1.710|
0002c6 46c0 MOV r8,r8 ;330
|L1.712|
0002c8 f7ff fffe BL AT45_Read_REG ;330
0002cc 2180 MOVS r1,#0x80 ;330
0002ce 4208 TST r0,r1 ;330
0002d0 d106 BNE |L1.736| ;330
0002d2 9800 LDR r0,[sp,#0] ;330
0002d4 1e41 SUBS r1,r0,#1 ;330
0002d6 0609 LSLS r1,r1,#24 ;330
0002d8 0e09 LSRS r1,r1,#24 ;330
0002da 9100 STR r1,[sp,#0] ;330
0002dc 2800 CMP r0,#0 ;330
0002de d1f3 BNE |L1.712| ;330
|L1.736|
0002e0 9800 LDR r0,[sp,#0] ;334
0002e2 2800 CMP r0,#0 ;334
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -