你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请求解答STM32F746G-EVAL开发板上NorFlash的问题?

[复制链接]
fhliujie 提问时间:2015-10-27 16:59 /
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,读出的数据内容是正确的,不清楚其中的原因,请有经验的人解释一下,为什么程序操作和手册说明不一致,谢谢。
收藏 评论3 发布时间:2015-10-27 16:59

举报

3个回答
你好我好大家好! 回答时间:2015-10-27 18:58:57
fhliujie 回答时间:2015-10-28 08:15:51
怎么没有人回答我的提问,自己顶一下。
fhliujie 回答时间:2015-10-28 10:39:21
自己继续顶一下吧!欢迎讨论
根据m29ew_32mb_12mb.pfd的29页的介绍
-------------------------------------------------------            
                | x8 | AAA |    | 555 |    | AAA |    |
       (90h) |----------| AA |--| 55   |-----| 90 |
                |x16 | 555 |    | 2AA |    | 555 |    |
-------------------------------------------------------
以及硬件原理图PC28F128M29EWLA的BYTE#管脚接高电平可知送到
Flash的地址线系列应该为555、2AA、555,
根据RM0090 September2011  Doc ID 018909 Rev 1 Page1228页的描述:
In case of a 16-bit external memory width, the FSMC will internally use HADDR[25:1] to generate the
address for external memory FSMC_A[24:0].
Whatever the external memory width (16-bit or 8-bit), FSMC_A[0] should be connected to external memory
address A[0].
而在F7的文档中,没有搜索到相关描述。
#define NOR_CMD_ADDRESS_FIRST                 (uint16_t)0x0555
#define NOR_CMD_ADDRESS_SECOND                (uint16_t)0x02AA
#define NOR_CMD_ADDRESS_THIRD                 (uint16_t)0x0555
从上面表上的对应关系上看符合x16模式。而在实际的函数调用中
NOR_ADDR_SHIFT(deviceaddress, NOR_MEMORY_8B, NOR_CMD_ADDRESS_FIRST)传送的参数是NOR_MEMORY_8B
他的目的是将地址乘以2.使地址输出为序列为AAA、554、AAA.
在此时FLASH接收的地址线接收数据为:555、2AA、555,因为此时在16位模式A0为地址线的最低位。对地址数据向右移动一位。
ST提供的msp stm32f7xx_hal_nor.h 中专门提供了NOR memory data width
#define NOR_MEMORY_8B ((uint8_t)0x0)
#define NOR_MEMORY_16B ((uint8_t)0x1)
参数,我认为是一个误导,不应该提供这个参数,
这样大家也不会导致迷惑。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版