还是SPI FLASH 读写程序 加LCD显示 LCD终于不白屏了
先将数组里的值写入FLASH 并显示在LCD上
后读出FLASH 若和写入的相等
则将读出FLASH的数组里的值显示在LCD上
只是最后一个数据老显示不正确 写入显示最后一个有时正确,有时错误
而读出显示最后一个总是088
如最后一个是199,写入显示199 读出后显示088
将其换成39,则写入显示399 读出后显示088 都错
我也不能仿真,找不出问题出在什么地方,请知道的朋友多多指教
uint8_t Tx_Buffer[]={12,13,14,15,16,185,186,187,188,199};
uint8_t Rx_Buffer[BufferSize];
uint8_t n;
__IO uint32_t DeviceID = 0;
__IO uint32_t FlashID = 0;
__IO TestStatus TransferStatus1 = FAILED;
// 函数原型声明
void Delay(__IO uint32_t nCount);
TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength);
int main(void)
{
/* 配置串口1为:115200 8-N-1 */
LCD_Init();
USART1_Config();
SPI_FLASH_Init();
printf("\r\n 这是一个2M串行flash(W25Q16)实验 \r\n");
// 2M串行flash W25Q16初始化 */
LCD_Clear(0, 0, 240, 320, BACKGROUND);
LCD_DispStr(10, 10, (uint8_t *)"This is a flash test program", RED);
/* Get SPI Flash Device ID */
DeviceID = SPI_FLASH_ReadDeviceID();
Delay( 200 );
/* Get SPI Flash ID */
FlashID = SPI_FLASH_ReadID();
printf("\r\n FlashID is 0x%X, Manufacturer Device ID is 0x%X\r\n", FlashID, DeviceID);
/* Check the SPI Flash ID */
if (FlashID == sFLASH_ID) /* #define sFLASH_ID 0xEF3015 */
{
printf("\r\n 检测到华邦串行flash W25Q16 !\r\n");
/* Erase SPI FLASH Sector to write on */
SPI_FLASH_SectorErase(FLASH_SectorToErase);
for( n=0; n<10; n++ )
{
LCD_DispStr(10, 40, (uint8_t *)&quot;WRITE &quot;, RED);
LCD_DisNum(100, 60, n, WHITE);//显示序号
LCD_DisNum(100, 80, Tx_Buffer[n], RED);//显示写入FLASH的 数值10个
Lcd_Delay(0x6FFF00);
}
/* 将发送缓冲区的数据写到flash中 */
SPI_FLASH_BufferWrite(Tx_Buffer, FLASH_WriteAddress, BufferSize);
//printf(&quot;\r\n 写入的数据为:%s \r\t&quot;, Tx_Buffer);
/* 将刚刚写入的数据读出来放到接收缓冲区中 */
SPI_FLASH_BufferRead(Rx_Buffer, FLASH_ReadAddress, BufferSize);
//printf(&quot;\r\n 读出的数据为:%s \r\n&quot;, Tx_Buffer);
/* 检查写入的数据与读出的数据是否相等 */
TransferStatus1 = Buffercmp(Tx_Buffer, Rx_Buffer, BufferSize);
if( PASSED == TransferStatus1 )
{
printf(&quot;\r\n 2M串行flash(W25Q16)测试成功!\n\r&quot;);
for( n=0; n<10; n++ )
{
LCD_DisNum(100, 100, Rx_Buffer[n], RED);//显示读出的 数值10个
Lcd_Delay(0xAFFF00);
}
}
else
{
printf(&quot;\r\n 2M串行flash(W25Q16)测试失败!\n\r&quot;);
}
}// if (FlashID == sFLASH_ID)
else
{
printf(&quot;\r\n 获取不到 W25Q16 ID!\n\r&quot;);
}
SPI_Flash_PowerDown();
while(1);
}
[/td][/tr][/table] |