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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版