
各位大侠,最近想把stm32f405的FSMC比较彻底的研究一下,遇到问题,当外接SRAM,配置FSMC时遇到如下问题: 在官方驱动程序中有个结构体FSMC_NORSRAMTimingInitTypeDef,其中一个成员是uint32_t FSMC_AccessMode,按照驱动程序的说明可以设置其值为下面4个值之一: #define FSMC_AccessMode_A ((uint32_t)0x00000000) #define FSMC_AccessMode_B ((uint32_t)0x10000000) #define FSMC_AccessMode_C ((uint32_t)0x20000000) #define FSMC_AccessMode_D ((uint32_t)0x30000000) 意思是4种时序可以选择一种; 而在数据手册RM0090 Reference manual的章节36.5.4 NOR Flash/PSRAM controller asynchronous transactions中,有如下说明: If the extended mode is enabled (EXTMOD bit is set in the FSMC_BCRx register), up to four extended modes (A, B, C and D) are available. It is possible to mix A, B, C and D modes for read and write operations. For example, read operation can be performed in mode A and write in mode B. • If the extended mode is disabled (EXTMOD bit is reset in the FSMC_BCRx register), the FSMC can operate in Mode1 or Mode2 as follows: – Mode 1 is the default mode when SRAM/PSRAM memory type is selected (MTYP = 0x0 or 0x01 in the FSMC_BCRx register) 意思是使用扩展方式时,可以使用ABCD共4中方式访问SRAM,不使用扩展方式时只能使用模式1或模式2; 我的问题是: ①不使用扩展方式时,使用模式1访问SRAM的情况,怎么配置FSMC_NORSRAMTimingInitTypeDef 的成员uint32_t FSMC_AccessMode?驱动程序给出的选项只有ABCD共4种访问方式,没有关于模式1的配置; ②使用扩展方式时,假如读SRAM使用方式A,写SRAM使用方式B,该如何配置?是否按以下方式?FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct.FSMC_AccessMode = FSMC_AccessMode_B; |
MTYP = 0x0 或 0x01)。
— 当选择 NOR 存储器类型时,模式 2 为默认模式(FSMC_BCRx 寄存器中 MTYP =
0x10)
评分
查看全部评分
使用模式1时,uint32_t FSMC_AccessMode这个变量怎么赋值?看驱动程序,它的取值只能是下面中的一个:
#define FSMC_AccessMode_A ((uint32_t)0x00000000)
#define FSMC_AccessMode_B ((uint32_t)0x10000000)
#define FSMC_AccessMode_C ((uint32_t)0x20000000)
#define FSMC_AccessMode_D ((uint32_t)0x30000000)
选A可以通信上,我只是想搞清楚为什么驱动程序和数据手册描述有不同,看有没有高手能指点一二。
谢谢版主回复