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.

[参考译文] TMS320F28388D:μ SPI外扩SPI NOR 闪存

Guru**** 2394305 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/986948/tms320f28388d-spi-spi-nor-flash

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARE

通过28388D 的 *** 通道扩展 SPI NOR 闪存、当前正在修改 SPI_ex6_EEPROM.c

路径:C:\ti\c2000Ware_3_04_00_00\driverlib\f2838x\examples\C28x\SPI

NOR 闪存:MT25QL02GCBB8E12-0AAT

我修改了以下位置:

#define RDSR             0x05

#define READ             0x03

#define WRITE             0x02

#define WREN             0x06

#define WRDI             0x04

#define WRSR             0x01

硬件上的引脚连接也已修改。

通道变为  ***。

修改后、我将程序下载到28388D RAM、发现读取缓冲区值错误。

是否没有修改?

我在此寻求建议和解决方案。

谢谢!

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

    Vince、

    提供的 SPI EEPROM 示例代码配置为适用于 AT25128/256、而不适用于 MT25QL02GCBB8E12。

    您需要调整 MT25QL02GCBB8E12的代码。 您是否确定 SPI 读取命令已按照 MT25QL02GCBB8E12的预期正确传输?

    您是否与 MT25QL02GCBB8E12供应商核实了如何执行读取操作? 您是否使任何其他寄存器读取操作正常工作。

    此致、

    曼诺伊

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

    e2e.ti.com/.../MT25Q-_2800_128Mb_2C00_-256Mb_2C00_-512Mb_2C00_-1Gb_2C00_-2Gb_2900_-General-Low_2D00_Level-Driver_5F00_v1.8.rar

    MT25QL02GCBB8E12-0AAT 的供应商为微米。

    他们提供了一个通用低级驱动程序。

    目前、它很难基于例程 SPI_ex6_EEPROM.c、然后添加由 micron 提供的例程。

    我自己尝试过这种修改方法、尝试过很多次、但它不起作用。

    e2e.ti.com/.../MT25Q_5F00_QLKT_5F00_L_5F00_02G_5F00_CBB_5F00_0_2D00_1387306.pdf

    应修改例程 SPI_ex6_EEPROM.c 的哪些部分、以使修改后的例程在28388D 上工作、从而可以读取、写入和擦除 SPI 闪存。

    来询问

    谢谢!

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

    Vince、

    要从 EEPROM 的宏定义开始、需要更改。 这些专用于 EEPROM、而不是用于您正在使用的 SPI 闪存。

    第一步是检查您是否能够读取 SPIFlash 数据表中在 pg:31、40中定义的"readid"。 您是否能够成功读取"readid"?

    此致、

    曼诺伊

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

    在 SPI_ex6_EEPROM.c 例程中、似乎没有擦除器件、仅读取数据和写入数据。

    在 SPI_ex6_EEPROM.c 例程中、我修改了以下部分:

    请参阅数据表中的内容以修改:

    修改后运行结果:

    你说的,readid,我不知道它是什么意思。 我只找到:

    我还希望我能得到支持。

    如果我的想法不正确,请帮我修改一个版本,因为我在这里尝试了很多种版本,但它们没有效果。

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

    Vince、

    抱歉、我无法为市场上的每个 SPI 闪存提供自定义代码。 我们展示了如何为特定 EEPROM 配置 SPI。 此 SPI EEPROM 示例是端口到 SPI 闪存(MT25QL02GCBB8E12)的良好起点。 如果您有关于 C2000 SPI 的具体问题、我可以回答。 但是、我无法为您修改代码。 通常、SPI 闪存供应商提供示例、可用于了解 SPI 闪存的工作原理。 您是否与 Micron 一起了解了如何与他们的 SPI 闪存通信?

    在这里、伪代码可能需要尝试读取制造商 ID

    1) 1)将芯片选择引脚拉至低电平

    2)使用 SPI_writeDataBlockingNonFIFO (SPIA_BASE、0x9F)发送0x9F (或) 0x9E (仅8位);执行 readid 操作。

    3) 3)读取 manucder_ID = temp = SPI_readDataBlockingNonFIFO (SPIA_BASE);

    4) 4)如果 temp = 0x20、那么您已经按照 MT25QL02GCBB8E12中所述正确读取了制造商 ID  

    5) 5)将芯片选择引脚上拉至高电平

    此致、

    曼诺伊

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

    是的、当外部闪存被写入程序时、它需要在被写入前被擦除。 我会再试一次、我已经联系了 Micron。

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

    我像这样尝试过它、发现 temp=0x9FFFF

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

    Vince、

    使用 readid 命令(0x9F)读取1个字节的信息应该会为您提供0x20。 此信息在 SPI 闪存数据表中提供。

    我在上面的伪代码中犯了一个错误。 请尝试下面提到的方法。 我用红色突出显示了之前伪代码的变化。

    1) 1)将芯片选择引脚拉至低电平

    2)使用 SPI_writeDataBlockingNonFIFO (SPIA_BASE、0x9F)发送0x9F (或) 0x9E (仅8位);执行 readid 操作。

    2a)虚拟执行虚拟读取、temp = SPI_readDataBlockingNonFIFO (SPIA_BASE);

    2b)虚拟发送以接收制造商 ID 信息 SPI_writeDataBlockingNonFIFO (SPIA_BASE、0x0000);

    2C)清除 temp = 0变量

    3) 3)读取 manucder_ID = temp = SPI_readDataBlockingNonFIFO (SPIA_BASE);

    4) 4)如果 temp = 0x20、那么您已经按照 MT25QL02GCBB8E12中所述正确读取了制造商 ID  

    5) 5)将芯片选择引脚上拉至高电平

    此致、

    曼诺伊

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

    Vince、

    我希望您在运行代码时监控 SPI 引脚。 从 C2000 SPI 的角度来看、您仅传输0x9F、后跟0x0。 您应该会看到在 SPIMOSI 引脚上传输了0x9F 和0x0。

    此致、

    曼诺伊