我想使用STM32F103VET6的FSMC连接PSRAM拓展RAM,问题硬件设计时遇到疑惑
已知STM32F103VET6只有100个pin在cubeMX中的配置sram时发现它的地址信号与数据信号脚是共用的和STM32F103ZET6分离的不同,
以下是VET6的配置图片:


以下是zet6的配置图片:


然而SRAM的数据总线是分开的:

那就坑了数据册上看SRAM的写是要地址和数据同时输出才行:

该怎么连接才行呀?
我想使用STM32F103VET6的FSMC连接PSRAM拓展RAM,问题硬件设计时遇到疑惑
已知STM32F103VET6只有100个pin在cubeMX中的配置sram时发现它的地址信号与数据信号脚是共用的和STM32F103ZET6分离的不同,
以下是VET6的配置图片:


以下是zet6的配置图片:


然而SRAM的数据总线是分开的:

那就坑了数据册上看SRAM的写是要地址和数据同时输出才行:

该怎么连接才行呀?
以下内容由CHATGPT及笑面虎共同生成、有用望采纳:
【您想要解决的问题】:您想要解决的问题是如何将PSRAM(一种SRAM)通过FSMC(Flexible Static Memory Controller)接口连接到STM32F103VET6微控制器,并确保数据和地址信号能够正确地传输,因为您发现STM32F103VET6的FSMC配置与STM32F103ZET6的配置不同,特别是在地址和数据信号共用的情况下。
【图片内容】:
【问题出现原因】:问题出现的原因是STM32F103VET6的FSMC接口在配置PSRAM时,地址和数据线是共用的,这与STM32F103ZET6的配置不同。在STM32F103VET6上,您需要确保在正确的时序下,地址和数据信号能够通过FSMC接口正确地传输。
【问题解决方案】:为了解决这个问题,您需要确保:
【提供代码】:由于STM32CubeMX工具会根据硬件配置生成初始化代码,您需要使用该工具来生成FSMC的初始化代码。以下是使用STM32CubeMX生成的代码的一个示例:
void FSMC_Init(void)
{
/* FSMC GPIO Configuration */
// ... (省略了GPIO初始化代码)
/* FSMC NOR/SRAM Bank1 initialization */
FSMC_NORSRAM_InitTypeDef FSMC_NORSRAMInitStructure = {0};
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
/* Enable FSMC Bank1_SRAM Bank */
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
}
【代码运行方式】:您需要在STM32的HAL库环境中运行此代码,通常是在Keil MDK、STM32CubeIDE或其他支持STM32的IDE中。
【代码预期运行结果】:代码成功运行后,FSMC接口将被正确配置,并且能够与PSRAM进行通信。
【推荐相关链接】: