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

stm32f405 FSMC问题求助

[复制链接]
pmc4300 提问时间:2016-8-16 14:39 /
各位大侠,最近想把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;
收藏 评论6 发布时间:2016-8-16 14:39

举报

6个回答
pmc4300 回答时间:2016-8-17 09:05:12
无人作答。。。
回答时间:2016-8-17 09:41:38
— 当选择 SRAM/CRAM 存储器类型时,模式 1 为默认模式(FSMC_BCRx 寄存器中
MTYP = 0x0 或 0x01)。
— 当选择 NOR 存储器类型时,模式 2 为默认模式(FSMC_BCRx 寄存器中 MTYP =
0x10)

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

pmc4300 回答时间:2016-8-17 10:01:34
安 发表于 2016-8-17 09:41
— 当选择 SRAM/CRAM 存储器类型时,模式 1 为默认模式(FSMC_BCRx 寄存器中
MTYP = 0x0 或 0x01)。
— 当 ...

使用模式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)
回答时间:2016-8-17 10:33:10
既然没有描述,就取默认值,选择A。测试是否能通信上。
pmc4300 回答时间:2016-8-17 17:23:06
安 发表于 2016-8-17 10:33
既然没有描述,就取默认值,选择A。测试是否能通信上。

选A可以通信上,我只是想搞清楚为什么驱动程序和数据手册描述有不同,看有没有高手能指点一二。
谢谢版主回复
回答时间:2016-8-18 09:25:21
不客气,有问题大家一起探讨,因为ST的产品太多,我也是尽力而为。

所属标签

相似问题

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