金牌会员
 
- 积分
- 2248
- 金钱
- 2248
- 注册时间
- 2019-8-7
- 在线时间
- 364 小时
|
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));
}
|
|