STM32
直播中

李艺银

7年用户 1052经验值
私信 关注
[问答]

求助,关于STM32F746G-EVAL开发板上NorFlash的问题求解

STM32F746G-EVAL开发板上外接PC28F128M29EWLA的NorFlash芯片,根据官方的原理图F7管脚(/BYTE)接上拉电阻,BYTE#根据手册定义Byte/word organization select: Switches between x8 and x16 bus modes. When BYTE# isLOW, the device is in x8 mode; when HIGH, the device is in x16 mode.因此根据手册定义,去读NorFlash的ID,采用官方的函数库stm32f7xx_hal_nor.c文件中的HAL_NOR_Read_ID函数,NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, NOR_MEMORY_16B, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST)中的参数修改成NOR_MEMORY_16B,此时读取ID数据是错的,若将参数改为NOR_MEMORY_8B,读出的数据内容是正确的,不清楚其中的原因,请有经验的人解释一下,为什么程序操作和手册说明不一致,谢谢。

回帖(1)

郑成枝

2024-5-13 18:14:51
在STM32F746G-EVAL开发板上外接PC28F128M29EWLA的NorFlash芯片时,需要根据官方的原理图和手册进行相应的配置。根据您提供的信息,我将为您提供一个详细的解决方案。

1. 首先,确保您的开发板上已经正确连接了PC28F128M29EWLA NorFlash芯片。根据原理图,将F7管脚(/BYTE)接上拉电阻。

2. 根据手册定义,BYTE#引脚用于选择NorFlash的工作模式。当BYTE#为低电平时,设备处于x8模式;当BYTE#为高电平时,设备处于x16模式。根据您的需求,将BYTE#引脚连接到相应的电平。

3. 使用官方的函数库stm32f7xx_hal_nor.c文件中的HAL_NOR_Read_ID函数来读取NorFlash的ID。在调用此函数之前,需要对NOR_ADDR_SHIFT宏和NOR_CMD_DATA_FIRST参数进行修改,以适应您的NorFlash芯片。

4. 修改NOR_ADDR_SHIFT宏,以适应您的NorFlash芯片的地址对齐方式。例如,如果NorFlash芯片的地址对齐方式为16位,您可以将宏修改为:

```c
#define NOR_ADDR_SHIFT(deviceaddress, datawidth, address) ((uint32_t)(deviceaddress) + (uint32_t)(address << 1))
```

5. 修改NOR_CMD_DATA_FIRST参数,以适应您的NorFlash芯片的命令和数据格式。根据您的描述,您需要将参数修改为NOR_MEM。在stm32f7xx_hal_nor.c文件中找到HAL_NOR_Read_ID函数,并修改相应的代码:

```c
NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, NOR_MEMORY_16B, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
```

将上述代码中的NOR_MEMORY_16B和NOR_CMD_DATA_FIRST替换为NOR_MEM。

6. 完成上述修改后,重新编译并烧录程序到STM32F746G-EVAL开发板。然后运行程序,使用HAL_NOR_Read_ID函数读取NorFlash的ID。

7. 如果您在读取NorFlash ID时遇到问题,请检查您的硬件连接、引脚配置以及代码修改是否正确。此外,您还可以参考STM32F7系列的官方示例代码,以获得更多关于如何正确使用NorFlash芯片的信息。

希望这些步骤能帮助您解决STM32F746G-EVAL开发板上NorFlash的问题。如果您在实现过程中遇到任何问题,请随时提问。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分