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.

[参考译文] AM2432:如何读取闪存状态寄存器

Guru**** 2460850 points
Other Parts Discussed in Thread: AM2432, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1474496/am2432-how-to-read-flash-status-register

器件型号:AM2432
主题中讨论的其他器件: SysConfig

工具与软件:

嗨、团队:

我正在使用 AM2432和定制 NOR 闪存开发 MCU PLUS SDK。

您能告诉我如何从闪存状态寄存器中读取数据吗?

此致、

小山

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

    您好!

    NOR 闪存具有1-2个状态寄存器、您可以继续读取这些寄存器。

    我正在写一本详细指南、供您了解如何从任何 NOR 闪存部件读取状态寄存器。

    不确定您正在使用哪个 NOR 闪存器件、但我将给出 TI EVM 上存在的 NOR 闪存器件(如 S28HS512T)的示例。

    闪存的数据表指出它有两个状态寄存器。

    现在、我们需要了解状态寄存器的事务是如何发生的。 我们查找事务表、该表如下所示。

    现在、让我们详细了解事务表值的含义。

    若要读取状态寄存器1、需要发出命令0x05、即两次、即0x05、0x05。 这在 MCU + SDK 驱动程序软件实现中进行处理。

    但是、0x05 0x05仅是在1s-1s - 1s 模式下运行时发出的命令。

    如果以8d-8d-8d 等模式运行、则需要使用 READ 任一寄存器命令、其中我们需要发出0x65 0x65来读取任何易失性或非易失性寄存器。

    从编码角度来看、如果假设在8d-8d-8d 模式下运行、并且您想要读取状态寄存器2、则可以写入以下代码段:

      uint8_t regData = 0x00;

      /*读取状态寄存器2 */
      状态= Flash_norOspiRegRead (CONFIG、0x65、0x800001、&regData);

    注意:

    状态寄存器1寻址为  0x800000

    状态寄存器2寻址为  0x800001

    希望这有助于回答您的问题。

    此致、

    Vaibhav

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

    你好、 Vaibhav、ć

    我尝试使用  flash_norOspiRegRead ()、

    但该函数最初 声明为静态函数、  

    并且参数"config"可从获得   自动生成文件中的 flash_open()、

    因此它很难使用  main()中的 flash_norOspiRegRead ()。

    那么,你知道 haw 在 main ()中使用 Flash_norOspiRegRead ()吗?

    或者使用 OSPI_Handle 等另一种读取闪存寄存器的方法?   

    此致、

    小山

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

    尊敬的 Tomoya:

    感谢您的耐心。

    请允许我稍后再查看此问题并与您联系。

    [报价 userid="633815" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1474496/am2432-how-to-read-flash-status-register/5662769 #5662769"]

    我尝试使用  flash_norOspiRegRead ()、

    但该函数最初 声明为静态函数、  

    并且参数"config"可从获得   自动生成文件中的 flash_open()、

    因此它很难使用  main()中的 flash_norOspiRegRead ()。

    那么,你知道 haw 在 main ()中使用 Flash_norOspiRegRead ()吗?

    [报价]

    我将自行运行它、并为此找到解决方法。

    此致、

    Vaibhav

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

    您好!

    感谢您的耐心。

    使用 Flash_norOspiRegRead 的一个小权变措施就是直接指向名为 flash_nor_ospi.c 的文件

    在该窗口中、您会看到 API 定义为静态变量。

    因此、在位于文件顶部(flash_nor_ospi.c)的位置、请继续写入:


    int32_t Flash_norOspiRegRead (Flash_Config *配置uint8_t cmduint32_t addr、uint8_t *数据);
    然后、在 flash_nor_ospi.c 文件中的 API 调用中删除静态关键字
    完成后、您已经重新构建库、因此请前往:
    MCU_PLUS_SDK_INSTALL_PATH > source > board 并打开命令提示符。
    请运行以下命令:
     
    gmake -s -f makefile.am243x.r5f.ti-arm-clang 曲线=释放
    gmake -s -f makefile.am243x.r5f.ti-arm-clang 曲线=调试
    您应该能够直接在应用中使用此 API 并成功构建它。
    类似以下内容应该符合您的要求:
    uint8_t regData = 0x00;
    Flash_Config *配置=(Flash_Config FlashHandle[CONFIG_FLASH0]);
    状态|= Flash_norOspiRegRead (config、0x65、0x00800M2、&regData);
    DebugP_LOG ("配置寄存器1的值:%u \r\n"、regData);
    此致、
    Vaibhav
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Vaibhav:

     

    我通过 AM243x-LP 和 CCS 检查了此更改。

    我  通过 SysConfig 添加了 CONFIG_FLASH0、并在 drivers_open ()之后添加了该脚本。

    但是、这不起作用、我认为是因为 gFlashHandle[CONFIG_FLASH0]中没有正确的数据。

    如何获得 gFlashHandle[CONFIG_FLASH0]的正确值

     

    此致、

    小山

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

    驱动程序打开后它将不工作,你需要调用这个后 Board_driversOpen ()