在flash中写数据时,考虑到跨页问题,分数次写人数据到FLASH中,而缓冲区不可太大,取512字节长度,正好一页,我刚试过了,好象不行!!程序如下:<br />buffer:数据源地址指针<br />flashaddr:数据目标相对地址,位于第16扇区,范围0~8K-1<br />length:待写入字节长度<br />UINT8 WriteToMemory(UINT8 *buffer, UINT16 flashaddr, UINT16 length)<br />{<br /> UINT16 writesize; <br /> BlankCheck( Sector_16, Sector_16 ); // 查空<br /> if( paramout[0] == SECTOR_NOT_BLANK) // 非空擦除<br /> {<br /> SelSector( Sector_16,Sector_16 );<br /> EraseSector( Sector_16,Sector_16 ); // 擦除第16个扇区<br /> }<br /> <br /> while( (flashaddr+length)>(flashaddr|0x1ff) ) //跨页<br /> { <br /> writesize = 512-flashaddr&0x1ff;<br /> <br /> WriteToPage(buffer, flashaddr, writesize); //写一页<br /> <br /> flashaddr += writesize;<br /> buffer +=writesize;<br /> length -=writesize;<br /> } <br /> WriteToPage(buffer, flashaddr, length);<br /> return paramout[0];<br />} |
|