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.

[参考译文] TM4C1231H6PM:读取和写入 SPI 闪存

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1064632/tm4c1231h6pm-reading-and-writing-spi-flash

器件型号:TM4C1231H6PM
主题中讨论的其他器件:TM4C123

TM4C 团队、

客户正在尝试访问 SPI 闪存并在完成擦除时遇到问题。  SPI 闪存为 26F032B。

他们尝试在模式0下运行、但无法读取或写入。

他们尝试了模式3、并且能够成功读取。 但它们无法完成扇区或芯片擦除。

我们是否有用于读取和写入此类 SPI 闪存的示例软件?

对于擦除函数可能出现的问题、您有什么建议吗?

谢谢、
Darren

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

    您好 Darren、

    TivaWare 提供用于连接 SPI 闪存的实用程序。 有关 详细信息、请转至 C:\ti\TivaWare_C_Series-2.2.0.295\docs\SW-TM4C-UTILS-UG-2.2.0.295.pdf 中的第19节。 第19.3节中有一个小示例。  

     26F032B 要求您满足如下所示的扇区或块擦除时序要求。 在整个事务过程中、CE#必须为低电平。 TM4C123不能在字节之间保持 CS#为低电平。 因此、我假设客户使用 GPIO 来控制 CE#。 如果没有、我怀疑这是擦除不起作用的原因。 让客户根据所需的时间捕获逻辑分析仪中的信号是调试问题的最佳方法。 同时检查闪存是否以任何方式受到写保护。  

     请注意、由于假期、响应将延迟。 谢谢。  

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

    查尔斯

    我在系统上确实有一个逻辑分析仪、缺失的是 CE#在不同的事务之间恢复为高电平。

    例如、在执行块擦除之前、我发送写入使能命令、然后在执行此操作后立即发送块。  当我执行类似这样的命令时、在所有事务期间、CE#为低电平。  由于读取和写入等命令是非阻塞式命令、因此使用 GPIO 时、知道何时将 CE#再次设置为高电平将是不可能的。

    我尝试在命令之间使用短延迟、这有助于将 CE#设置为高电平、但这仍然是读取和写入的问题。

    你有什么建议吗?

    Paul

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

    尊敬的 Paul:

     很抱歉、我目前不在办公室、将于2022年4月1日返回回答问题。  

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

    由于读取和写入等命令是非阻塞式命令、因此使用 GPIO 时、知道何时将 CE#再次设置为高电平将是不可能的。

    我想您正在寻找函数 SSIBusy():

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1025830/tm4c1294-configuring-an-spi-fss-chip-select-using-a-gpio-pin/3793722

    BUSY=0表示(Tx) FIFO 已清空。 如果 FIFO 包含 SPI 事务的最后一个片段、则可以取消 CE#的置位。

    [编辑:我忘记包含我回答的问题。 正如 Charles 在上面建议的那样、使用 GPIO 比尝试获取 FSS 来执行所需的操作更可取。]