STM32F103RC芯片,SPI口读写SD卡,用的是正点原子的程序,操作过程中能正常读文件,写文件时报错FR_DISK_ERR,单步调试会有硬件错误,程序会挂掉。
不明就里的解决办法:增加了一段延时
文件diskio.c中,
#if _USE_WRITE
DRESULT disk_write (
BYTE pdrv, /* Physical drive nmuber (0..) */
const BYTE *buff, /* Data to be written */
DWORD sector, /* Sector address (LBA) */
UINT count /* Number of sectors to write (1..128) */
)
{
u8 res=0;
if (!count)return RES_PARERR;//count²»ÄܵÈÓÚ0£¬·ñÔò·µ»Ø²ÎÊý´íÎó
switch(pdrv)
{
case SD_CARD:{//SD¿¨
res=SD_WriteDisk((u8*)buff,sector,count);
DelayMs(3);//增加了这条延时,测试延时1ms写不成功,延时1.8ms写成功
break;
}
case EX_FLASH://Íⲿflash
// for(;count>0;count--)
// {
// SPI_Flash_Write((u8*)buff,sector*FLASH_SECTOR_SIZE,FLASH_SECTOR_SIZE);
// sector++;
// buff+=FLASH_SECTOR_SIZE;
// }
// res=0;
break;
default:
res=1;
}
//´¦Àí·µ»ØÖµ£¬½«SPI_SD_driver.cµÄ·µ»Øֵת³Éff.cµÄ·µ»ØÖµ
if(res == 0x00)return RES_OK;
else return RES_ERROR;
}
#endif