自己写的程序,希望对大家有帮助,其实这片flash十分的悲剧,只有4个block,1MB的空间,长期放可执行代码用的,短期放数据,十分的不合适...
void DelayTime( void )
{
u8 i ;
for( i = 0 ; i < 10 ; i++ ) ;
}
void atWriteCmd( u8 cmd )
{
SSPSend( &cmd , 1) ;
}
void atWriteData(u8 * buf , u32 nBytes )
{
if( nBytes == 0 )
return ;
SSPSend( buf , nBytes );
}
void atReadData( u8 *buf , u32 nBytes )
{
if( nBytes == 0 )
return ;
SSPReceive( buf , nBytes ) ;
}
void atSendWREN()
{
atEnable();
atWriteCmd( CMDWREN ) ;
atDisable();
DelayTime();
}
u8 atReadRDSR( )
{
u8 stu ;
atEnable();
atWriteCmd(CMDRDSR);
atReadData( &stu , 1);
atDisable();
return stu ;
}
void atFlashInit( void )
{
LPC_IOCON->PIO1_10 &= ~0x07; /* SSP SSEL is a GPIO pin */
GPIOSetDir( PORT1, 10, 1 );
GPIOSetValue( PORT1, 10, 1 );
LPC_IOCON->PIO1_11 &= ~0x07; /* SSP SSEL is a GPIO pin */
GPIOSetDir( PORT1, 11, 1 );
GPIOSetValue( PORT1, 11, 1 );
SSPInit();
}
void atReadID( u8 * buf)
{
atEnable();
atWriteCmd(CMDRDID);
atReadData( buf , 2 ) ; // 0x1f
atDisable();
}
void atReadFlash(u32 addr , u8 * buf , u32 nBytes )
{
u8 cmd[4] ;
if( nBytes == 0 )
return ;
cmd[0] = CMDREAD ;
cmd[1] = addr>>16 ;
cmd[2] = addr>>8 ;
cmd[3] = addr ;
while( (atReadRDSR()&0x01 ) != 0x00 );
atEnable();
atWriteCmd( cmd[0] );
atWriteCmd( cmd[1] );
atWriteCmd( cmd[2] );
atWriteCmd( cmd[3] );
atReadData( buf , nBytes );
atDisable();
}
void atWriteFlash( u32 addr, u8 * buf , u32 nBytes )
{
u8 cmd[4];
if( nBytes == 0 )
return ;
if( nBytes < 256 )
{// if big than 256 , error Occur
atSendWREN();
while( (atReadRDSR()&0x02 ) != 0x02 ); // write enable
cmd[0] = CMDPROGRAM ;
cmd[1] = addr>>16 ;
cmd[2] = addr>>8 ;
cmd[3] = addr ;
atEnable();
atWriteCmd( cmd[0] );
atWriteCmd( cmd[1] );
atWriteCmd( cmd[2]
处境堪忧的Adobe Flash将面临另一次打击,在线文档最终也开始表明立场。目前网上大部分文档(PDF、Word文档、幻灯片)只能在Flash播放器内部播放,无法显 示为完整的网页。明天在线文档分享网站Scribd上的数百万份文档不再使 用Flash播放,而是将转化为本地HTML5网页。这些文档不仅可以在iPad上完美显示 ......