OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3935|回复: 6

FMC驱动NORFLASH读取ID显示全是0值,读取ID失败

[复制链接]

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2020-12-19 09:27:45 | 显示全部楼层 |阅读模式
5金钱
型号:SST39VF3201B
问题:读取ID失败
/*********************地址******************************/
#define   Bank1_NOR1_ADDR//偏移
#define ADDR_SHIFT(A)                                                (Bank1_NOR1_ADDR + (2        *        (A)))
#define NOR_WRITE(Address,Data)        (*(vu16 *)(Address) = (Data))
#define NOR_READ(ReadAddr)                        (*(vu16 *)((Bank1_NOR1_ADDR + ReadAddr)))
        /*--------------FMC 总线 存储器参数配置------------------------------*/
  p.FMC_AddressSetupTime = 7;   //地址建立时间   
  p.FMC_AddressHoldTime = 0x00;    //地址保持时间  
  p.FMC_DataSetupTime = 5;      //数据建立时间
  p.FMC_BusTurnAroundDuration = 1; //总线恢复时间x01
  p.FMC_CLKDivision = 0x00;        // 时钟分频因子
  p.FMC_DataLatency = 0x00;        //数据产生时间
  p.FMC_AccessMode = FMC_AccessMode_B; //FMC NOR控制器时序
  FMC_NORSRAMInitStructure.FMC_Bank = FMC_Bank1_NORSRAM1;//使用了FMC的BANK1的子板块1
  FMC_NORSRAMInitStructure.FMC_DataAddressMux = FMC_DataAddressMux_Disable;//禁止地址数据线复用
  FMC_NORSRAMInitStructure.FMC_MemoryType = FMC_MemoryType_NOR;//存储器类型为Nor
  FMC_NORSRAMInitStructure.FMC_MemoryDataWidth = FMC_NORSRAM_MemoryDataWidth_16b;//存储器数据宽度为16位
  FMC_NORSRAMInitStructure.FMC_BurstAccessMode = FMC_BurstAccessMode_Disable;//关闭突发模式访问
  //等待信号优先级,只有在使能突发访问模式才有效
  FMC_NORSRAMInitStructure.FMC_WaitSignalPolarity = FMC_WaitSignalPolarity_Low;
  //关闭Wrapped burst access mode,只有在使能突发访问模式才有效
  FMC_NORSRAMInitStructure.FMC_WrapMode = FMC_WrapMode_Disable;
  //等待信号设置,只有在使能突发访问模式才有效
  FMC_NORSRAMInitStructure.FMC_WaitSignalActive = FMC_WaitSignalActive_BeforeWaitState;
  //使能这个BANK的写操作
  FMC_NORSRAMInitStructure.FMC_WriteOperation = FMC_WriteOperation_Enable;
  //使能/关闭等待信息设置,只在使能突发访问模式才有效
  FMC_NORSRAMInitStructure.FMC_WaitSignal = FMC_WaitSignal_Disable;
  FMC_NORSRAMInitStructure.FMC_ExtendedMode = FMC_ExtendedMode_Disable;//关闭Extend Mode
  //FMC_NORSRAMInitStructure.FMC_AsyncWait = FMC_AsyncWait_Disable;
  FMC_NORSRAMInitStructure.FMC_WriteBurst = FMC_WriteBurst_Disable;//关闭Write Burst Mode
  FMC_NORSRAMInitStructure.FMC_ReadWriteTimingStruct = &p;//读操作时序参数
  FMC_NORSRAMInitStructure.FMC_WriteTimingStruct = &p;//写操作时序参数
  FMC_NORSRAMInit(&FMC_NORSRAMInitStructure);
  /*--------------使能BANK1的子板块1------------------------------*/
  FMC_NORSRAMCmd(FMC_Bank1_NORSRAM1, ENABLE);       

//读取ID
void FMC_NOR_ReadID(void)
{
        NOR_WRITE(ADDR_SHIFT(0x05555),0x00AA);
        NOR_WRITE(ADDR_SHIFT(0x02AAA),0x0055);
        NOR_WRITE(ADDR_SHIFT(0x05555),0x0090);
        printf("%d %d %d %d\r\n",*(vu16 *)ADDR_SHIFT(0x0000),\
                                                                                                *(vu16 *)ADDR_SHIFT(0x0001),\
                                                                                                *(vu16 *)ADDR_SHIFT(0x000E),\
                                                                                                *(vu16 *)ADDR_SHIFT(0x000F));
}



最佳答案

查看完整内容[请看2#楼]

具体原因 没想通 反正手动复位一下就能写进去了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
 楼主| 发表于 2020-12-19 09:27:46 | 显示全部楼层
具体原因 没想通 反正手动复位一下就能写进去了
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
 楼主| 发表于 2020-12-19 11:10:13 | 显示全部楼层
我把LCD驱动关掉后就能正常读取了一个是块1一个是块2 ,莫非在读取的时候得关掉LCD屏的片选端嘛,可能是复用了数据线的原因
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
 楼主| 发表于 2020-12-19 14:06:31 | 显示全部楼层
应该是FMC时序设定问题
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
 楼主| 发表于 2020-12-19 15:14:34 | 显示全部楼层
现在擦除 读数据没问题 就是写不进去
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
 楼主| 发表于 2020-12-23 09:42:35 | 显示全部楼层
我LCD也是用FMC配置的 我想配置了LCD再配置FLASH导致出现了问题,我把两个配置顺序对调后,问题就解决了,读写都不需要复位了,应该是LCD的某个FMC配置的默认值影响到了FLASH驱动
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
 楼主| 发表于 2020-12-23 10:02:29 | 显示全部楼层
远命 发表于 2020-12-23 09:42
我LCD也是用FMC配置的 我想配置了LCD再配置FLASH导致出现了问题,我把两个配置顺序对调后,问题就解决了, ...

果然 我在配置前先初始化了一下就没有影响了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 08:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表