示例的版本信息如下:
* Autosar版本:4.7.0
* Autosar 修订版:ASR_REL_4_7_REV_0000
* Autosar Conf.Variant:
* 软件版本:3.0.0
*构建版本:S32K3_RTD_3_0_0_D2303_ASR_REL_4_7_REV_0000_20230331
我使用的串行Flash是W25Q16。我已将数据表作为附件附加。
我在下面的 ConfigTools 表中配置了 Mem LUT Operand:
写入使能为 06h,读取状态寄存器-1 为 05h
但是当我运行示例时,在 main.c 中运行 Qspi_Ip_EraseBlock()
它运行到 Qspi_Ip_WriteEnable(),
/*发送WREN命令*/之后,当/*检查WEL位*/时,WEL预期为1,但读到的却是0,因此程序运行到Mem_ExFls_ExampleAssert()。
是否存在任何错误的配置或者我是否错过了一些重要的配置?期待您的回复。谢谢!
我漏掉了读取状态寄存器-1序列中的READ指令。问题已经解决了。
Hi,
我并没有在源代码中将该引脚驱动为逻辑 0。
我已经通过示波器测量了这个引脚,它在整个过程中保持逻辑 1。
我也尝试过不连接这个引脚,但仍然遇到同样的问题。
此外,我还尝试了另一个命令“读取 JEDEC ID”。以下是 Flash 用户手册中的序列:
发送读取命令后,我可以测量通过DO有数据输出。
但运行以下 API 后,ReadData 中的所有数据都保持为 0:
qspiStatus = Qspi_Ip_RunReadCommand(instance, 21, 0U, ReadData, NULL_PTR, 3U);//读取JEDEC ID
21 是 ReadDeviceId 的 LUT 索引:
/* 21: 读取设备ID */
(Qspi_Ip_InstrOpType)((Qspi_Ip_InstrOpType)QSPI_IP_LUT_INSTR_CMD | (Qspi_Ip_InstrOpType)QSPI_IP_LUT_PADS_1 | (Qspi_Ip_InstrOpType)159U),
(Qspi_Ip_InstrOpType)(QSPI_IP_LUT_INSTR_STOP)
看起来 Flash 可以响应命令,但 S32K344 无法正确读取。
我不确定问题出在哪里。
如果是的话,您是否将该引脚驱动为逻辑 0?
Hi,
感谢你的回复!
Flash的/WP(IO2)引脚目前连接到S32K344的PTD12。
您的 /WP 引脚连接是什么?