工具与软件:
您好——我正在使用 NVS 驱动程序来连接256 Mbit 外部闪存芯片。 默认发送一个三字节地址、但由于闪存芯片的大小、我需要启用"4字节模式"以便发送4字节地址来访问芯片的上半部分。 我是否需要在代码中的某个位置指定此内容、以便 NVS 驱动程序知道发送4个字节的地址而不是3个字节? 我已经从另一个 MCU 向闪存芯片发送了"enter 4Byte mode 命令"、因此闪存芯片已经需要4字节地址。 谢谢!
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.
工具与软件:
您好——我正在使用 NVS 驱动程序来连接256 Mbit 外部闪存芯片。 默认发送一个三字节地址、但由于闪存芯片的大小、我需要启用"4字节模式"以便发送4字节地址来访问芯片的上半部分。 我是否需要在代码中的某个位置指定此内容、以便 NVS 驱动程序知道发送4个字节的地址而不是3个字节? 我已经从另一个 MCU 向闪存芯片发送了"enter 4Byte mode 命令"、因此闪存芯片已经需要4字节地址。 谢谢!
您好、Hannah、
我不认为 SPI 闪存地址目标大小应设计为 在 NVSSPI25X TI 驱动程序中进行配置。 这意味着、对于写入/读取命令、假设外部闪存地址为三字节值。 因此您将需要进行修改 \source\ti\drivers\NVS\NVSSPI25X.c NVSSPI25X_write 和 doRead 函数、以便 wbuf 考虑来自[f]offset 的四个字节。 下面是一个未经测试的伪代码示例:
wbuf[0] = SPIFLASH_WRITE; wbuf[1] = (foffset >> 24) & 0xff; wbuf[2] = (foffset >> 16) & 0xff; wbuf[3] = (foffset >> 8) & 0xff; wbuf[4] = foffset & 0xff;
如果使用 OAD 项目、则同样的操作也适用于 BIM 项目 \source\ti\common\flash\no_rtos\extFlash\ext_flash.c extFlashWrite 和 extFlashRead 函数。 您将需要进一步调试这些更改、并考虑使用示波器或逻辑分析仪来监控 SPI CLK/PICO/POCI 引脚、并确认应用的更改是否按预期运行。
此致、
Ryan
谢谢! 不幸的是、进行这些更改并没有帮助。 我通过 NVSSPI25X.c 和 NVSSPI25X.h 进行了梳理,看看我可能还需要做些什么,我能找到的是在 NVSSPI25X_WRITE (), doErase (), doRead (),所有这些都只是把 wbuf 的大小从4更改为5并发送4个地址字节(即你上面的代码)。 经过更改、SPI 总线仍然只在时钟沿输出3个地址字节。 SDK 代码中是否还有其他地方需要我查看是否需要进行调整?
这是出乎意料的。 所以您确保也增加了 wbuf 声明吗?
uint8_t wbuf[5];
在清理和重新编译工程之前、请确保修改了正确的源文件。 您是否能够使用示波器或逻辑分析仪监控 SPI 线路? 此外、还应考虑 在调试会话中单步执行 NVSSPI25X_WRITE 代码、确保应用更改并且 extFlashSpiWrite 的参数具有正确的内容。 执行简单的测试、例如硬编写 wbuf 内容、以确保您的更改生效。
此致、
Ryan