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.

[参考译文] 使用 SPI 闪存作为存储介质的 USB MSC 设备

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/697912/usb-msc-device-using-spi-flash-as-storage-media

主题中讨论的其他器件:MSP430USBDEVPACKMSP-EXP430F5529

在 MSP430 USB MSP430USBDEVPACK 软件"生态系统"中、是否有任何支持 SPI 或闪存作为存储介质来实现 USB MSC 器件类设计的代码示例?

我已经看到几种使用 SD/MMC 类型介质的实现方式、但不适用于"原始"SPI 或闪存芯片。 这是否存在于 MSP430USBDEVPACK 或其他 TI USB 支持软件中?

供参考:我无法从选择列表中找到支持 USB 的 MSP430器件型号、但 MSP4306638等就是一个示例。

Robert G

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    每个 SPI NOR 闪存都具有唯一的命令集。 您可能找不到任何通用示例。
    "原始"是指没有文件系统吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mike:

    是的,特定的 SPI 闪存芯片将具有特定的命令(尽管大多数日子都共享一个通用集)。

    是的、"原始"是指没有典型 SD 卡等嵌入式"智能"类型的闪存芯片。 因此、写入和读取此类芯片的所有要求都必须在驱动程序中将其用作 USB 器件类 MSC/MSD 的一部分。 FS、FAT 等都必须包含在 MSP430x 上运行的代码中。

    此外、它不仅是所需的"原始"SPI 闪存命令集、而且还具有将其用作集中文件系统的海量存储器件上下文中的所有复杂功能。

    Microchip 已在其 PIC32 Harmony USB 示例列表中尝试执行此操作、但到目前为止、SPI 闪存 MSD"驱动程序"不起作用、我正在寻找替代方案。

    我没有编写类似内容的技能、因此我希望 TI 框架内可能有一个 MSP430 USB 软件示例项目。

    Robert

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

    TI SD 示例使用"FATfs"开放库、该库可处理 FAT 文件系统的所有复杂性。 要修改它,只需修改 disk_read()和 disk_write()函数即可访问 SPI 而不是 SD。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mike、

    感谢您提供信息。 我认为这正是我遇到的问题所在。 使用 SD 卡、您只需要一个存储器/介质的读/写接口、因为 SD 卡具有一个小型 MCU 来处理扇区边界问题以及写入和擦除周期的时序、 NAND 闪存的一些其他事项不属于本次讨论的一部分。
    但关键是 SD 卡内部 MCU 封装了所有低级驱动程序详细信息,因此只需简单的 write()和 read()接口即可。
    这意味着、如果 TI 资源中的某个位置没有提供用于某些特定闪存 IC 的示例驱动程序、则我必须在 SPI 闪存所需驱动程序中填写这些详细信息、如果有示例驱动程序、这将非常有用。
    我可以并且已经为"rain" SPI 闪存芯片设计了多次 simple read()、write()、eraseseter()、StatusCheck()类型的驱动程序,因此该部件不是问题。 它的逻辑涉及如何处理扇区边界复杂性、因为 NOR 闪存要求在写入新数据之前完全擦除扇区。 这意味着、为了在写入新文件等时维护文件数据、必须跟踪碎片文件等问题的某个位置
    现在,如果 FATFS 处理所有这些问题,则确定闪存的实际读/写物理地址并将其传递给 disk_write()和 disk_read()调用,这将是一个显而易见的问题,但我怀疑这些调用提供的是什么。
    请提供建议。

    谢谢
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您正在使它比它更复杂。 在这里,你不需要用你的想法来折弯任何勺子:)
    也就是说、FATF 有一些低级函数、您需要创建这些函数(不需要花哨)。 所有其他"逻辑"东西由库的其余部分处理。
    我建议您喝一杯咖啡、阅读 FATF 和 MSP5529示例、并将功能追溯到低级别的功能。 这将是一项很好的练习、会为您消除大量未知因素。 它将有一条小的学习曲线、但没有太多东西。 祝你好运。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、Neo、我会用您的言语来形容它...

    话虽如此、您是否会推荐评估硬件套件具有足够的 USB 硬件板载和 SPI 接口访问、我可以使用它来实施器件 MSC 测试?

    此外、当您说"阅读 FATF 和 MSP5529示例"时、您是指 FATF 示例代码还是 FATF 文档?

    非常感谢、

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    MSP-EXP430F5529拥有您所需的一切。 其示例代码具有 SD 卡的 USB 闪存实现。 用户指南位于 :www.ti.com/.../slau330b.pdf

    因此、读取 MSP-EXP430F5529的示例代码和来自(elm-chan.org/.../00index_e.html)的 FATF 文档、您应该能够使用 SPI NOR。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Mike。

    我将查看所有信息。 它确实具有指向 SPI 模式 SD 介质的可靠路径。 根据您所说的内容、它应该是实现 SPI 闪存集成目标的有用桥梁。

    此致

    Robert