This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F28377D:USB 写入不起作用

Guru**** 1956050 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/593813/ccs-tms320f28377d-usb-write-not-working

器件型号:TMS320F28377D

工具/软件:Code Composer Studio

您好,

我正在尝试写入 USB 文件。 它似乎卡在 USBHCPipeRad()中。

在 f_write 中,它在 ff.c 的第1000行调用 create_chain,并在第290行单步调用 get_cluster()。 文件系统是 FAT32、因此它跳转到第162行并调用 move_window。 在 move_window 中、它转到第88行并调用 disk_read (包含在 fat_usbmsc.c 中)。 计数==1。  程序卡在 USBHMSCBlockRead 中。 我认为在 USBHCPDPipeRad()函数内。 我无法调试此文件,因为它不能正确执行。  

是否有任何代码版本可以正常工作? 这是否与以下方面有关:

https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/482787/1741556 

此致

Anish

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Anish、

    您是否能够在海量存储类中向文件写入任何内容? 您是否正在尝试写入闪存驱动器?

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Sal、  

    是的、我可以写入闪存驱动器中的文件。 它的格式也是 Fat。  

    但是、它不能可靠地写入文件。  需要3-5次尝试将一些数据写入其中。  

    您还能告诉我它是否一次写入高达4GB? 或者,我是否需要写入固定的字节长度并对 大文件重复该过程?

    我已附上以下代码:  

    #define USB_buffer_size 50
    char USB_buffer[USB_buffer_size]={0};
    
    
    uint16_t
    Write_USB_master (void)
    {
    static uint16_t USB_local_FLAG = FLG_BUSY;
    static uint16_t USB_status = USB_W_open;
    static uint16_t flg;
    static uint16_t_file_t
    
    file= t_write_t file0_t、t_file='t file0';static uint16_t_name_file_t_write_t_t file0';t_name_file_t = uint16_t_filter_t_t_name&t = uint16_t_write_t_t file= uint16_t&t
    
    
    
    
    
    
    
    USB_buffer[1]='2';
    USB_buffer[2]='3';
    USB_buffer[3]='4';
    USB_buffer[4]='5';
    USB_buffer[5]='6';
    USB_buffer[6]='7';
    USB_buffer[7]='8';
    USB_buffer[8]='9';
    USB_buffer[9]='0';
    
    USB_buffer[10]='1';
    USB_buffer[11]='2';
    USB_buffer[12]='3';
    USB_buffer[13]='4';
    USB_buffer[14]='5';
    USB_buffer[15]='6';
    USB_buffer[16]='7';
    USB_buffer[17]='8';
    USB_buffer[18]='9';
    
    Write_USB_file (USB_buffer、USB_buffer_size、 &num_Byte_written);
    }
    

    uint16_t
    Write_USB_file (char USB_data[]、
    uint16_t USB_BS、
    uint16_t * usBytesWritten)
    {
    FRESULT fresult; 
    静态 uint16_t JRUF_CMPT = FLG_BUSY; fresult = f_write (&g_sFileObject、USB_data、(word)(USB_BS)、(word_)(usBytesWritten)); /*如果读取错误,则打印换行符并将错误返回给用户*/ if (fresult != FR_OK) { FRUF_CMPT = FLG_ERROR; } 否则 { FRUF_CMPT = FLG_CMPT; f_close (&g_sFileObject); } 返回 FRUG_CMPT; }

    Anish

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Anish:

    目前我不能深入探讨这一点。 遗憾的是、我是 USB 的所有者、不是很熟悉此示例和用例、因为没有很多客户以这种方式使用 USB。

    我可能有一些时间在一周左右的时间内查看它。 如果仍有问题、请重新 ping 通。

    在此之前、如果您对 USB 协议或 USBlib 有更具体的问题、我可能会为您提供帮助。

    由此给您带来的不便、我们深表歉意。
    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Sal,
    是否有任何示例项目可用于写入大容量存储设备中的文件,我可以参考这些示例项目?

    此致
    Anish
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有一个 USB_host_msc 示例。

    您是否已使用此功能? 如果没有、将会有所帮助。 我们希望在将来添加对该示例的支持。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sal、

    是的,我使用此示例进行读取和写入。 我可以阅读。 我不知道只是写它。
    请随时查看您的时间、并告诉我问题可能是什么。

    Anish
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sal,您好,我仍然不确定如何可靠地向 USB 写入数据。 您是否能够查看它。

    此致
    Anish
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不幸的是,我们还没有时间研究这一点。 我已经为我们提交了一个错误来解决这一问题。

    SAL
x 出现错误。请重试或与管理员联系。