FSMC接网络控制芯片和LCD

首先明确一个问题 FSMC 有两种控制器
一、NOR memory control
二、NAND/PC CARD memory control

首先 按管脚数分 100和 144的

100pin的
STM32中100脚的型号的FSMC能否同时使用Bank1和Bank2?
数据手册中有下面一段注释:
For the LQFP100 and BGA100 packages, only FSMC Bank1 and Bank2 are available. Bank1 can only support a multiplexed NOR Flash memory using the NE1 Chip Select. Bank2 can only support a 16- or 8-
bit NAND Flash memory using the NCE2 Chip Select.
因为只有一个片选脚 PD7  (NE1 和NCE2同一个)  所以BANK1 和bank2只能使用一个

可能会有用IO模拟片选的,我觉得对于慢速设备可以这么做,但是对于快速设备这么做就没意义了,失去了FSMC的速度。还有个解决办法就是加译码器 将地址分小 可以达到FSMC挂接多设备的目的。

同时注意到 100的片子想访问SRAM的话 地址线和数据线分开的原因,需要使用NOR地址数据线复用模式。对于144的就不存在这个问题了线够多,我感觉用不上复用模式了。

144pin的:
bank1 有4个片选 NEx(x=1.2.3.4)
BANK2/3 分别使用      NCEx(x=2,3)做片选, 与 NEx(1,2)复用//
BANK4  为PC card  使用NCE4_1/NCE4_2 做片选。其中NCE4_1,与NE3 复用

所以这么看来独立的片选线为5条。

问题总结:


1、DM9000A的接口 (当SRAM用)
  首先DM9000的控制实质就是读数据、写数据  只不过是有个CMD 来控制数据是地址还是命令: IOR和IOW是DM9000的读写选择引脚,低电平有效,即低电平时进行读(IOR)写(IOW)操作;AEN是芯片选通引脚,低电平有效,该引脚为低时才能进行读写操作;CMD的命令/数据切换引脚,低电平时读写命令操作,高电平时读写数据操作。
  在一款开发板子上看到将dm9000接到BANK1上这是没问题的,只要将一根数据线连CMD 就可以对其操作,但是不建议使用IO来模拟控制CMD ,原因是DM9000快速设备

至于DM9000能不能挂在NAND 控制器,我觉得是不可以的。这点我也不确定

2、LCD 接口
LCD 目前我见到的大多是接到SRAM/NOR控制其上的 非地址锁存的那种。所以不能接到NAND 直接用。

STM32的FSMC 连接外设 比如液晶,要把液晶分为两部分来对待,一部分是液晶寄存器,一部分是液晶显示的数据,可以当做显存吧。
因此用一个地址线 Ax 来区分当前连接的是寄存器还是显存,假使RS引脚为高时代表寄存器被选通,,
那么地址线上该位Ax就可以决定选通什么,
不过地址线是指导了,可是还有地址。
假设A0连接的是RS,那么选通液晶寄存器的尾地址是什么?
当传输是16位时,是0x???? 0002,不是0x???? 0001
看下面的图片说明(来自官方手册)

16位数据在内部使用【25:1】访问,8位数据地址时按照内部访问地址与外部实际连接地址一致
也就是实际地址数左移一位后的地址,或许也可以看做外部连接地址X2,
搞明白这点其他都好理解
举例:
9G的液晶移植例子中选用A16连接LCD的RS引脚
那么实际上连接的外部引脚地址是0x6001 0001,但是在通过内部CPU选择该地址时要用 0x6002 0001
对于RS的连接地址,CPU从内部访问它用的地址比外部实际地址左移了一位,这是在16位的访问模式下。

 

你可能感兴趣的:(网络)