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

📄 at45db161.txt

📁 使用STR710的SPI接口访问外部EEPROM的例子程序.使用KEIL UV3编译.使用了MDK3.05操作系统.
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0002e4  d100              BNE      |L1.744|              ;334
0002e6  e7ea              B        |L1.702|              ;336
                  |L1.744|
0002e8  04a8              LSLS     r0,r5,#18             ;338
0002ea  0c05              LSRS     r5,r0,#16             ;338
0002ec  4846              LDR      r0,|L1.1032|          ;339
0002ee  8980              LDRH     r0,[r0,#0xc]          ;339
0002f0  2101              MOVS     r1,#1                 ;339
0002f2  03c9              LSLS     r1,r1,#15             ;339
0002f4  4388              BICS     r0,r0,r1              ;339
0002f6  4944              LDR      r1,|L1.1032|          ;339
0002f8  8188              STRH     r0,[r1,#0xc]          ;339
0002fa  20e8              MOVS     r0,#0xe8              ;340
0002fc  f7ff fffe         BL       BPSI_DataSendReceive  ;340
000300  002e              MOVS     r6,r5                 ;341
000302  17e9              ASRS     r1,r5,#31             ;341
000304  0e09              LSRS     r1,r1,#24             ;341
000306  1949              ADDS     r1,r1,r5              ;341
000308  0409              LSLS     r1,r1,#16             ;341
00030a  0e08              LSRS     r0,r1,#24             ;341
00030c  f7ff fffe         BL       BPSI_DataSendReceive  ;341
000310  002f              MOVS     r7,r5                 ;342
000312  17e9              ASRS     r1,r5,#31             ;342
000314  0e09              LSRS     r1,r1,#24             ;342
000316  1949              ADDS     r1,r1,r5              ;342
000318  1209              ASRS     r1,r1,#8              ;342
00031a  0209              LSLS     r1,r1,#8              ;342
00031c  1a69              SUBS     r1,r5,r1              ;342
00031e  22fc              MOVS     r2,#0xfc              ;342
000320  4011              ANDS     r1,r1,r2              ;342
000322  0026              MOVS     r6,r4                 ;342
000324  17e2              ASRS     r2,r4,#31             ;342
000326  0e12              LSRS     r2,r2,#24             ;342
000328  1912              ADDS     r2,r2,r4              ;342
00032a  1212              ASRS     r2,r2,#8              ;342
00032c  23fc              MOVS     r3,#0xfc              ;342
00032e  439a              BICS     r2,r2,r3              ;342
000330  4311              ORRS     r1,r1,r2              ;342
000332  0608              LSLS     r0,r1,#24             ;342
000334  0e00              LSRS     r0,r0,#24             ;342
000336  f7ff fffe         BL       BPSI_DataSendReceive  ;342
00033a  17e1              ASRS     r1,r4,#31             ;344
00033c  0e09              LSRS     r1,r1,#24             ;344
00033e  1909              ADDS     r1,r1,r4              ;344
000340  1209              ASRS     r1,r1,#8              ;344
000342  0209              LSLS     r1,r1,#8              ;344
000344  1a61              SUBS     r1,r4,r1              ;344
000346  0608              LSLS     r0,r1,#24             ;344
000348  0e00              LSRS     r0,r0,#24             ;344
00034a  f7ff fffe         BL       BPSI_DataSendReceive  ;344
00034e  2000              MOVS     r0,#0                 ;345
000350  f7ff fffe         BL       BPSI_DataSendReceive  ;345
000354  2000              MOVS     r0,#0                 ;346
000356  f7ff fffe         BL       BPSI_DataSendReceive  ;346
00035a  2000              MOVS     r0,#0                 ;347
00035c  f7ff fffe         BL       BPSI_DataSendReceive  ;347
000360  2000              MOVS     r0,#0                 ;348
000362  f7ff fffe         BL       BPSI_DataSendReceive  ;348
000366  2000              MOVS     r0,#0                 ;349
000368  9000              STR      r0,[sp,#0]            ;349
00036a  e00c              B        |L1.902|              ;349
                  |L1.876|
00036c  20ff              MOVS     r0,#0xff              ;351
00036e  f7ff fffe         BL       BPSI_DataSendReceive  ;351
000372  9903              LDR      r1,[sp,#0xc]          ;351
000374  7008              STRB     r0,[r1,#0]            ;351
000376  9803              LDR      r0,[sp,#0xc]          ;352
000378  1c40              ADDS     r0,r0,#1              ;352
00037a  9003              STR      r0,[sp,#0xc]          ;352
00037c  9800              LDR      r0,[sp,#0]            ;349
00037e  1c40              ADDS     r0,r0,#1              ;349
000380  0600              LSLS     r0,r0,#24             ;349
000382  0e00              LSRS     r0,r0,#24             ;349
000384  9000              STR      r0,[sp,#0]            ;349
                  |L1.902|
000386  9904              LDR      r1,[sp,#0x10]         ;349
000388  9800              LDR      r0,[sp,#0]            ;349
00038a  4288              CMP      r0,r1                 ;349
00038c  dbee              BLT      |L1.876|              ;349
00038e  481e              LDR      r0,|L1.1032|          ;354
000390  8980              LDRH     r0,[r0,#0xc]          ;354
000392  2101              MOVS     r1,#1                 ;354
000394  03c9              LSLS     r1,r1,#15             ;354
000396  4308              ORRS     r0,r0,r1              ;354
000398  491b              LDR      r1,|L1.1032|          ;354
00039a  8188              STRH     r0,[r1,#0xc]          ;354
00039c  2001              MOVS     r0,#1                 ;355
00039e  e78e              B        |L1.702|              ;355
                          ENDP

                  MainMemoryPageToBuffer1 PROC
;;;368    void MainMemoryPageToBuffer1( u16 PageNum )
;;;369    {
0003a0  b570              PUSH     {r4-r6,lr}
0003a2  0004              MOVS     r4,r0
;;;370    	u8 i;
;;;371    	AT45_Chip_Select_ENABLE;
0003a4  4818              LDR      r0,|L1.1032|
0003a6  8980              LDRH     r0,[r0,#0xc]
0003a8  2101              MOVS     r1,#1
0003aa  03c9              LSLS     r1,r1,#15
0003ac  4388              BICS     r0,r0,r1
0003ae  4916              LDR      r1,|L1.1032|
0003b0  8188              STRH     r0,[r1,#0xc]
;;;372    	PageNum <<= PAGE_RL;
0003b2  04a0              LSLS     r0,r4,#18
0003b4  0c04              LSRS     r4,r0,#16
;;;373    	BPSI_DataSendReceive( MAIN_MEMORY_PAGE_TO_BUFFER1_COPY );		// 命令
0003b6  2053              MOVS     r0,#0x53
0003b8  f7ff fffe         BL       BPSI_DataSendReceive
;;;374    	BPSI_DataSendReceive( PageNum / 256 );							// 高7位地址
0003bc  0025              MOVS     r5,r4
0003be  17e1              ASRS     r1,r4,#31
0003c0  0e09              LSRS     r1,r1,#24
0003c2  1909              ADDS     r1,r1,r4
0003c4  0409              LSLS     r1,r1,#16
0003c6  0e08              LSRS     r0,r1,#24
0003c8  f7ff fffe         BL       BPSI_DataSendReceive
;;;375    	BPSI_DataSendReceive( PageNum % 256 );							// 低6位地址
0003cc  17e1              ASRS     r1,r4,#31
0003ce  0e09              LSRS     r1,r1,#24
0003d0  1909              ADDS     r1,r1,r4
0003d2  1209              ASRS     r1,r1,#8
0003d4  0209              LSLS     r1,r1,#8
0003d6  1a61              SUBS     r1,r4,r1
0003d8  0608              LSLS     r0,r1,#24
0003da  0e00              LSRS     r0,r0,#24
0003dc  f7ff fffe         BL       BPSI_DataSendReceive
;;;376    	BPSI_DataSendReceive( 0 );
0003e0  2000              MOVS     r0,#0
0003e2  f7ff fffe         BL       BPSI_DataSendReceive
;;;377    	AT45_Chip_Select_DISABLE;
0003e6  4808              LDR      r0,|L1.1032|
0003e8  8980              LDRH     r0,[r0,#0xc]
0003ea  2101              MOVS     r1,#1
0003ec  03c9              LSLS     r1,r1,#15
0003ee  4308              ORRS     r0,r0,r1
0003f0  4905              LDR      r1,|L1.1032|
0003f2  8188              STRH     r0,[r1,#0xc]
;;;378    	i = 255;
0003f4  26ff              MOVS     r6,#0xff
;;;379    	while ( IS_DATA_FLASH_BUSY() && ( --i ) );
0003f6  46c0              MOV      r8,r8
                  |L1.1016|
0003f8  f7ff fffe         BL       AT45_Read_REG
0003fc  2180              MOVS     r1,#0x80
0003fe  4208              TST      r0,r1
000400  d10d              BNE      |L1.1054|
000402  e007              B        |L1.1044|
                  |L1.1028|
000404  e0003000          DCD      0xe0003000
                  |L1.1032|
000408  e0004000          DCD      0xe0004000
                  |L1.1036|
00040c  c000b000          DCD      0xc000b000
                  |L1.1040|
000410  000f4240          DCD      0x000f4240
                  |L1.1044|
000414  1e70              SUBS     r0,r6,#1
000416  0600              LSLS     r0,r0,#24
000418  0e00              LSRS     r0,r0,#24
00041a  0006              MOVS     r6,r0
00041c  d1ec              BNE      |L1.1016|
;;;380    }
                  |L1.1054|
00041e  bc70              POP      {r4-r6}
000420  bc08              POP      {r3}
000422  4718              BX       r3
                          ENDP

                  ProgramBuffer1ToMainMemory PROC
;;;392    void ProgramBuffer1ToMainMemory( u16 PageNum )
;;;393    {
000424  b530              PUSH     {r4,r5,lr}
000426  0004              MOVS     r4,r0
;;;394    	PageNum <<= PAGE_RL;
000428  04a0              LSLS     r0,r4,#18
00042a  0c04              LSRS     r4,r0,#16
;;;395    	AT45_Chip_Select_ENABLE;
00042c  48f5              LDR      r0,|L1.2052|
00042e  8980              LDRH     r0,[r0,#0xc]
000430  2101              MOVS     r1,#1
000432  03c9              LSLS     r1,r1,#15
000434  4388              BICS     r0,r0,r1
000436  49f3              LDR      r1,|L1.2052|
000438  8188              STRH     r0,[r1,#0xc]
;;;396    	BPSI_DataSendReceive( BUFFER1_PROGRAM_WITH_ERASE );			// 命令
00043a  2083              MOVS     r0,#0x83
00043c  f7ff fffe         BL       BPSI_DataSendReceive
;;;397    	BPSI_DataSendReceive( PageNum / 256 );							// 高7位地址
000440  0025              MOVS     r5,r4
000442  17e1              ASRS     r1,r4,#31
000444  0e09              LSRS     r1,r1,#24
000446  1909              ADDS     r1,r1,r4
000448  0409              LSLS     r1,r1,#16
00044a  0e08              LSRS     r0,r1,#24
00044c  f7ff fffe         BL       BPSI_DataSendReceive
;;;398    	BPSI_DataSendReceive( PageNum % 256 );							// 低6位地址
000450  17e1              ASRS     r1,r4,#31
000452  0e09              LSRS     r1,r1,#24
000454  1909              ADDS     r1,r1,r4
000456  1209              ASRS     r1,r1,#8
000458  0209              LSLS     r1,r1,#8
00045a  1a61              SUBS     r1,r4,r1
00045c  0608              LSLS     r0,r1,#24
00045e  0e00              LSRS     r0,r0,#24
000460  f7ff fffe         BL       BPSI_DataSendReceive
;;;399    	BPSI_DataSendReceive( 0 );
000464  2000              MOVS     r0,#0
000466  f7ff fffe         BL       BPSI_DataSendReceive
;;;400    	AT45_Chip_Select_DISABLE;
00046a  48e6              LDR      r0,|L1.2052|
00046c  8980              LDRH     r0,[r0,#0xc]
00046e  2101              MOVS     r1,#1
000470  03c9              LSLS     r1,r1,#15
000472  4308              ORRS     r0,r0,r1
000474  49e3              LDR      r1,|L1.2052|
000476  8188              STRH     r0,[r1,#0xc]
;;;401    }
000478  bc30              POP      {r4,r5}
00047a  bc08              POP      {r3}
00047c  4718              BX       r3
                          ENDP

                  WriteMultiByteToMainMemory PROC
;;;413    u8 WriteMultiByteToMainMemory( u16 PageNum, u16 SubAddress, u8 *MultiByte, u8 len )
;;;414    {
00047e  b5ff              PUSH     {r0-r7,lr}
000480  0004              MOVS     r4,r0
000482  000d              MOVS     r5,r1
000484  001e              MOVS     r6,r3
;;;415    	u8 i;
;;;416    	
;;;417    	if ( !len )
000486  2e00              CMP      r6,#0
000488  d104              BNE      |L1.1172|
;;;418    	{
;;;419    		return FALSE;
00048a  2000              MOVS     r0,#0
;;;420    	}
;;;421    	//if (IS_DATA_FLASH_BUSY()) 		return FALSE;
;;;422    	i = 255;
;;;423    	while ( IS_DATA_FLASH_BUSY() && ( --i ) );				// 等待芯片空闲
;;;424    	if ( i == 0)
;;;425    	{
;;;426    		//phase.Dsp_Pages = 1;return FALSE;
;;;427    		return FALSE;
;;;428    	}  //test
;;;429    
;;;430    
;;;431    	MainMemoryPageToBuffer1( PageNum );				// 把指定页读取到buffer1
;;;432    	i = 255;
;;;433    	while ( IS_DATA_FLASH_BUSY() && ( --i ) );				// 等待芯片空闲
;;;434    	if ( !i )
;;;435    	{
;;;436    		//phase.Dsp_Pages = 1;return FALSE;
;;;437    		return FALSE;
;;;438    	}  //test
;;;439    	WriteMultiByteToBuffer1( SubAddress, MultiByte, len );	// 向buffer1写入数据
;;;440    	ProgramBuffer1ToMainMemory( PageNum );				// 将buffer1的内容写入flash
;;;441    //	phase.Dsp_Pages = 0;
;;;442    	return TRUE;
;;;443    }
                  |L1.1164|
00048c  b004              ADD      sp,sp,#0x10
00048e  bcf0              POP      {r4-r7}
000490  bc08              POP      {r3}
000492  4718              BX       r3
                  |L1.1172|
000494  27ff              MOVS     r7,#0xff              ;422
000496  46c0              MOV      r8,r8                 ;423
                  |L1.1176|

⌨️ 快捷键说明

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