LPC 1788 USB HOST 模式如何对FAT32 U盘进行读写

2019-03-25 20:04发布

求助,

目前采取了两种方法,

一种是用NXP的USBHOSTLite例程,问题是只支持fat16格式,无法识别fat32格式的U盘。

另一种采用网上提供的USB host的Fatfs移植,主程序如下。问题是f_open返回的是FR_NO_FILESYSTEM,而debug发现在调用check_fs函数中,执行判断时,条件“LD_WORD(&fs->win[BS_55AA]) != 0xAA55”成立,导致程序认为U盘不是fat格式。
Debug显示,fs->win[BS_55AA]是0,而其实在主程序的上一步“ f_mount(0,&fs);”执行后,debug显示fs的各项就全是0,所以是不是在f_mount这里就出错了?正确情况下,f_mount之后,fs应该是什么样?


初次接触LPC1788 和 fatfs,还请各位大侠多多赐教!

int main()
{

  uint32_t  numBlks, blkSize;
  uint8_t  inquiryResult[INQUIRY_LENGTH];
    USB_INT32S  rc;
    int32_t  fdw;
    int32_t  fdr;       
    uint32_t  bytes_written;
    uint32_t  bytes_read;       
    SystemInit();
    //disk_initialize(0);
    Host_Init ();
    rc = Host_EnumDev();       /* Enumerate the device connected  */       
    rc = MS_Init( &blkSize, &numBlks, inquiryResult );
    f_mount(0,&fs);       
    res = f_open( &fsrc , "0:/Demo.TXT" , FA_CREATE_NEW | FA_WRITE);       
    res = f_close(&fsrc);       
    while(1);

}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。