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

【经验分享】stm32-100脚FSMC

[复制链接]
STMCU小助手 发布时间:2022-2-3 18:00
非100脚的FSMC:
第一个角度理解STM32有FSMC(其实其他芯片基本都有类似的总线功能),FSMC的好处就是你一旦设置好之后,WR(写)、RD(读)、DB0-DB15这些控制线和数据线,
都是FSMC自动控制的。打个比方,当你在程序中写到:
*(volatile unsigned short int *)(0x60000000)=0x0055;
那么FSMC就会自动执行一个写的操作,其对应的主控芯片的WE、RD这些脚,就会呈现出写的时序出来(即WE=0,RD=1),数据0x0055的值也
会通过DB0-15自动呈现出来(即FSMC-D0:FSMC-D15=0x0055 )。地址0x60000000会被呈现在数据线上(即A0-A25=0,A0-A25正好对应0x60000000-0x64000000,对应64M,存储块1正好是4x64M即0x60000000-0x6fffffff)。
那么在硬件上面,我们需要做的,仅仅是MCU和LCD控制芯片的连接关系.
挂接多个存储器的时候,对相应地址写数据,NEX片选线会自动选择相应的芯片使能,NE1是第一个存储块,即NOR/SRAM存储块 ....

100脚的FSMC操作:
通常会利用100脚的FSMC操作LCD控制芯片,或者CPLD,这个时候由于地址线不齐全,而且不需要地址线,多余的地址线会用作相应的命令、数据寄存器选择线,这个时候还像非100脚的操作方法操作。
这里以SSD1963为例,通常接法如下图

201202201524123812.jpg

这里地址线A16连接的是SSD1963的命令、数据选择接口,当A16为0时写到该芯片的命令寄存器里,A16为1时写的是相应的数据,所以在stm32里面会定义0x60000000是命令寄存器的地址,0x60020000是数据寄存器的地址,因为当地址为0x60020000的时候A0-A25里面A16的值为1,所以就写进数据寄存器里。
看一看FSMC手册关于存储器字宽的描述,我们发现,当外部存储器是16位时,硬件管脚A0-A24表示的是地址线A1-A25的值,所以
我们要位移一下,Bit17的值,实际会被反应到A16这根IO来

收藏 评论0 发布时间:2022-2-3 18:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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