STM32_FSMC_TFT控制原理(2012/01/03)

硬件连接

        使用STM32FSMC可以轻松地访问片外存储器。通过FSMC可以很轻易地驱动ILI9320LCD控制器。ILI9320STM32硬件连接如下:

  /*********************************
  **    硬件连接说明              **
  **   STM32              ili9320  **
  **   FSMC_D0~D15 <----> DB0~15  **
  **   FSMC_NOE   <---->   nRD   **
  **   FSMC_A0     <---->   RS    **
  **   FSMC_NWE   <---->  nWR   **
  **   FSMC_NE4    <---->  nCS    **
  **   NRST   	  <---->  nReset   **
  **   PA1          <---->  BK_LED **
  **********************************/

 

        100脚封装的STM32没有GPIOFGPIOG端口,所以FSMC_A0~A15是与所以FSMC_B0~B15复用,需要外加锁存器才可以外接存储器,电路可参加51单片机的外接存储器电路。如果是用于与ILI9320连接的话,可以将RS接到FSMC的其它地址脚,只需要在软件上做手脚就可以了,详细后面会说到。

 

ILI9320引脚说明

 

DB0~15 --- 双向数据总线

RD --- 读使能信号,低电平有效

WR --- 写使能信号,低电平有效

CS --- 片选信号,低电平有效

WR --- 写使能信号,低电平有效

RS --- 寄存器选择信号,低电平为index如何翻译?)或状态寄存器,高电平为控制 寄存器

 

FSMC初始化(具体看程序代码)

1、开启AFIOGPIOx不开启GPIO时钟也可以的?)和FSMC的时钟

2、将相应的GPIO端口配置成复用功能推挽输出,输出速度为50MHZ

3、设置FSMC寄存器:置位FSMC_BCR4的第4位和第12位,其它为0,                置位FSMC_BTR4的第9位,其它为0。(具体意思看手册)

4、设置FSMC_BCR4的第0位,使能存储块

 

控制原理

        实际上是把ILI9320当作一块SRAM来控制,不过这个SRAM只有两个地址,由RS引脚决定。所以只要把FSMC的任一条地址线与RS相连即可,不同的地址线,软件编写也有所不同。红牛开发板用的是FSMC_A0RS相连,刚开始我觉得奇怪,既然是以16位的宽度访问,地址的0位应该始终为0才对,后来查看数据手册才知道对于16位宽度的外部存储器,FSMC将在内部使用HADDR[25:1]产生外部存储器的地址FSMC_A[24:0],论外部存储器的宽度是多少(16位或8)FSMC_A[0]始终应该连到外部存储器的地址线A[0]。 看来是我之前理解错了以半字对齐访问的存储器的硬件结构。

        弄清楚了上面这些之后,如果我们要访问ILI9320index或状态寄存器时,只需要住内存6C00 0000处内存读写即可(BANK1的基址为6000 0000,因为选用FSMC_NE4,所以外设基址为C00 0000),这时FSMC_A0输出的是0。当要访问控制寄存器时,只需要住内存6C00 0002处内存读写即可,这时FSMC_A0输出的是1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值