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

📄 at45.lst

📁 F020集成以太网接口核心模块DataFlash例程源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 416   1              DF_CHIP_NOSELECT;
 417   1      
 418   1              return 1;
 419   1      }
 420          //--------------------------------------------------------
 421          //功能:直接将Flash Buffer2中的数据写入到pageAddr页,不擦除
 422          //参数:pageAddr,WORD:要写入的页面地址
 423          //返回值:1,成功;0,失败
 424          //--------------------------------------------------------
 425          BYTE FlashBuffer2ProgNoErase(WORD pageAddr)
 426          {
 427   1      
C51 COMPILER V8.02   AT45                                                                  08/18/2007 20:06:55 PAGE 8   

 428   1              if(pageAddr>=FLASH_PAGE[g_cFlashType]) return 0;  // 页面地址无效
 429   1      
 430   1              while((GetFlashStatus()&0x80)==0);  // 检查器件是否准备就绪
 431   1      
 432   1              DF_CHIP_SELECT;
 433   1              SendSPIByte(B2_TO_PAGE_WITHOUT_ERASE);
 434   1              SendSPIByte((BYTE)(pageAddr >> (8-PAGE_SHIFT[g_cFlashType])));
 435   1              SendSPIByte((BYTE)(pageAddr << PAGE_SHIFT[g_cFlashType]));
 436   1              SendSPIByte(0x00);
 437   1              DF_CHIP_NOSELECT;
 438   1      
 439   1              return 1;
 440   1      }
 441          //擦除+缓存写主存
 442          //--------------------------------------------------------
 443          //功能:首先擦除指定的扇区,并将Flash的Buffer1中的数据写入到扇区中
 444          //参数:pageAddr,BYTE:要写入的扇区
 445          //返回值:1,成功;0,失败
 446          //--------------------------------------------------------
 447          BYTE FlashBuffer1ProgAutoErase(WORD pageAddr)
 448          {
 449   1      
 450   1              if(pageAddr>=FLASH_PAGE[g_cFlashType]) return 0;  // 页面地址无效
 451   1      
 452   1              while((GetFlashStatus()&0x80)==0);  // 检查器件是否准备就绪
 453   1      
 454   1              DF_CHIP_SELECT;
 455   1              SendSPIByte(B1_TO_PAGE_WITH_ERASE);
 456   1              SendSPIByte((BYTE)(pageAddr >> (8-PAGE_SHIFT[g_cFlashType])));
 457   1              SendSPIByte((BYTE)(pageAddr << PAGE_SHIFT[g_cFlashType]));
 458   1              SendSPIByte(0x00);
 459   1              DF_CHIP_NOSELECT;
 460   1      
 461   1              return 1;
 462   1      }
 463          
 464          //擦除+缓存写主存
 465          //--------------------------------------------------------
 466          //功能:首先擦除指定的扇区,并将Flash的Buffer2中的数据写入到扇区中
 467          //参数:pageAddr,BYTE:要写入的扇区
 468          //返回值:1,成功;0,失败
 469          //--------------------------------------------------------
 470          BYTE FlashBuffer2ProgAutoErase(WORD pageAddr)
 471          {
 472   1              if(pageAddr>=FLASH_PAGE[g_cFlashType]) return 0;  // 页面地址无效
 473   1      
 474   1              while((GetFlashStatus()&0x80)==0);                // 检查器件是否准备就绪
 475   1      
 476   1              DF_CHIP_SELECT;
 477   1              SendSPIByte(B2_TO_PAGE_WITH_ERASE);
 478   1              SendSPIByte((BYTE)(pageAddr >> (8-PAGE_SHIFT[g_cFlashType])));
 479   1              SendSPIByte((BYTE)(pageAddr << PAGE_SHIFT[g_cFlashType]));
 480   1              SendSPIByte(0x00);
 481   1              DF_CHIP_NOSELECT;
 482   1      
 483   1              return 1;
 484   1      }
 485          
 486          
 487          //--------------------------------------------------------------------------------
 488          //功能:将缓冲区pBuffer中的长度为len的数据通过Flash的Buffer1写入到pageAddr页面中,页面自动擦除
 489          //参数:start_addr,WORD:缓冲区内起始位置
C51 COMPILER V8.02   AT45                                                                  08/18/2007 20:06:55 PAGE 9   

 490          //      len,        WORD: 数据长度
 491          //      pBuffer,    BYTE*:数据缓冲区
 492          //      pageAddr,   WORD: 页面
 493          //返回值:1,成功;0:失败
 494          //--------------------------------------------------------------------------------
 495          BYTE FlashProgViaBuffer1(WORD start_addr, WORD len,BYTE *pBuffer,WORD pageAddr)
 496          {
 497   1              WORD  i;
 498   1              
 499   1              if(start_addr+len>FLASH_PAGE_BYTE[g_cFlashType])
 500   1              {// 地址长度错误
 501   2                      return 0;
 502   2              }
 503   1      
 504   1              if(pageAddr>=FLASH_PAGE[g_cFlashType]) return 0;  // 页面地址无效
 505   1      
 506   1              while((GetFlashStatus()&0x80)==0);  // 检查器件是否准备就绪
 507   1      
 508   1              DF_CHIP_SELECT;         
 509   1              
 510   1                                      
 511   1              SendSPIByte(PAGE_PROG_THROUGH_B1);
 512   1              SendSPIByte((BYTE)(pageAddr >> (8-PAGE_SHIFT[g_cFlashType])));
 513   1              SendSPIByte((BYTE)((pageAddr << PAGE_SHIFT[g_cFlashType]) + (start_addr>>8)));
 514   1              SendSPIByte((BYTE)start_addr);
 515   1              for (i=0;i<len;i++) SendSPIByte(*pBuffer++);
 516   1      
 517   1      
 518   1              DF_CHIP_NOSELECT;
 519   1      
 520   1              return 1;
 521   1      }
 522          
 523          //--------------------------------------------------------
 524          //功能:将缓冲区pBuffer中的长度为len的数据通过Flash的Buffer2写入到pageAddr页面中,页面自动擦除
 525          //参数:start_addr,WORD:缓冲区内起始位置
 526          //      len,        WORD: 数据长度
 527          //      pBuffer,    BYTE*:数据缓冲区
 528          //      pageAddr,   WORD: 页面
 529          //返回值:1,成功;0:失败
 530          //--------------------------------------------------------
 531          BYTE FlashProgViaBuffer2(WORD start_addr, WORD len,BYTE *pBuffer,WORD pageAddr)
 532          {
 533   1              WORD  i;
 534   1              
 535   1              if(start_addr+len>FLASH_PAGE_BYTE[g_cFlashType])
 536   1              {// 地址长度错误
 537   2                      return 0;
 538   2              }
 539   1      
 540   1              if(pageAddr>=FLASH_PAGE[g_cFlashType]) return 0;  // 页面地址无效
 541   1      
 542   1              while((GetFlashStatus()&0x80)==0);                // 检查器件是否准备就绪
 543   1      
 544   1              DF_CHIP_SELECT;                                 
 545   1              SendSPIByte(PAGE_PROG_THROUGH_B2);
 546   1              SendSPIByte((BYTE)(pageAddr >> (8-PAGE_SHIFT[g_cFlashType])));
 547   1              SendSPIByte((BYTE)((pageAddr << PAGE_SHIFT[g_cFlashType]) + (start_addr>>8)));
 548   1              SendSPIByte((BYTE)start_addr);
 549   1              for (i=0;i<len;i++)     SendSPIByte(*pBuffer++);
 550   1              DF_CHIP_NOSELECT;
 551   1      
C51 COMPILER V8.02   AT45                                                                  08/18/2007 20:06:55 PAGE 10  

 552   1              return 1;
 553   1      }
 554          
 555          
 556          ///////////////////////////////////////////////////////////////////////
 557          // 页面自动重写入函数
 558          //--------------------------------------------------------
 559          //功能:首先擦除pageAddr页面并将缓冲区pBuffer中的长度为len的数据通过Flash的Buffer1写入到pageAddr页面中
 560          //参数:pageAddr,   WORD: 页面
 561          //返回值:1,成功;0:失败
 562          //--------------------------------------------------------
 563          BYTE FlashAutoReWriteViaBuffer1(WORD pageAddr)
 564          {
 565   1              WORD  i;
 566   1      
 567   1              if(pageAddr>=FLASH_PAGE[g_cFlashType]) return 0;  // 页面地址无效
 568   1      
 569   1              while((GetFlashStatus()&0x80)==0);                 // 检查器件是否准备就绪
 570   1      
 571   1              DF_CHIP_SELECT;                                 
 572   1              SendSPIByte(AUTO_PAGE_REWRITE_THROUGH_B1);
 573   1              SendSPIByte((BYTE)(pageAddr >> (8-PAGE_SHIFT[g_cFlashType])));
 574   1              SendSPIByte((BYTE)(pageAddr << PAGE_SHIFT[g_cFlashType]));
 575   1              SendSPIByte(0);
 576   1      
 577   1              DF_CHIP_NOSELECT;
 578   1      
 579   1              return 1;
 580   1      }
*** WARNING C280 IN LINE 565 OF AT45.C: 'i': unreferenced local variable
 581          
 582          
 583          //--------------------------------------------------------
 584          //功能:Page中的内容通过buffer2自动进行重新写入
 585          //参数:pageAddr,   WORD: 页面
 586          //返回值:1,成功;0:失败
 587          //--------------------------------------------------------
 588          BYTE FlashAutoReWriteViaBuffer2(WORD pageAddr)
 589          {
 590   1              WORD  i;
 591   1      
 592   1              if(pageAddr>=FLASH_PAGE[g_cFlashType]) return 0;  // 页面地址无效
 593   1      
 594   1              while((GetFlashStatus()&0x80)==0);                // 检查器件是否准备就绪
 595   1      
 596   1              DF_CHIP_SELECT;                 
 597   1                                  
 598   1              SendSPIByte(AUTO_PAGE_REWRITE_THROUGH_B2);
 599   1              SendSPIByte((BYTE)(pageAddr >> (8-PAGE_SHIFT[g_cFlashType])));
 600   1              SendSPIByte((BYTE)(pageAddr << PAGE_SHIFT[g_cFlashType]));
 601   1              SendSPIByte(0);
 602   1      
 603   1      
 604   1              DF_CHIP_NOSELECT;
 605   1      
 606   1              return 1;
 607   1      
 608   1      }
*** WARNING C280 IN LINE 590 OF AT45.C: 'i': unreferenced local variable


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.02   AT45                                                                  08/18/2007 20:06:55 PAGE 11  

   CODE SIZE        =   2618    ----
   CONSTANT SIZE    =    116    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      51
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  2 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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