OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4433|回复: 11

使用stm32f103的fsmc控制lcd

[复制链接]

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
发表于 2016-8-28 13:35:46 | 显示全部楼层 |阅读模式
2金钱
最近在做fsmc控制lcd,然后有一些疑惑,希望各位大神可以帮我答疑一下,这些问题我在网上浏览网页也没有明白。
1.这是原子哥的代码,我想知道这个地址是怎么来的?告诉我是什么手册,我自己去翻就好。
2.fsmc有4个bank,每个bank有四个区域,但是它的地址和lcd的地址是怎么对应的?它的地址以0x60000000开始,这个怎么对应lcd的地址呢?
3.我知道控制lcd有很多的命令,在lcd的数据手册上,但是我不知道这些命令怎么发过去,是设置每个数据传输引脚的高电平低电平吗???
刚接触lcd,然后固件库也没有可以控制lcd的库函数,然后我就懵逼。。请各位路过的大侠帮忙解决这些问题,谢谢。。。

最佳答案

查看完整内容[请看2#楼]

问题1、2,需要了解FSMC是怎么运行的。 学过51或其他芯片,应当知道三总线,即: 地址总线,A0、A1、A2这些管脚, 数据总线,D0、D1、D2等等, 控制总线,CE、WE、RE这些。 FSMC就是三总线系统,当然比51要复杂、灵活得多,但基本原理都一样。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11539
金钱
11539
注册时间
2014-4-1
在线时间
1314 小时
发表于 2016-8-28 13:35:47 | 显示全部楼层

问题1、2,需要了解FSMC是怎么运行的。

学过51或其他芯片,应当知道三总线,即:
地址总线,A0、A1、A2这些管脚,
数据总线,D0、D1、D2等等,
控制总线,CE、WE、RE这些。
FSMC就是三总线系统,当然比51要复杂、灵活得多,但基本原理都一样。



回复

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
 楼主| 发表于 2016-8-28 14:33:59 | 显示全部楼层
LCD_WR_REG(0xCF); 这个函数括号内的寄存器号是在哪儿找到的呢
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11539
金钱
11539
注册时间
2014-4-1
在线时间
1314 小时
发表于 2016-8-28 15:32:48 | 显示全部楼层

这会儿有事,晚点回复你。


回复

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
 楼主| 发表于 2016-8-28 16:24:19 | 显示全部楼层
xuande 发表于 2016-8-28 15:32
这会儿有事,晚点回复你。

好的好的
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11539
金钱
11539
注册时间
2014-4-1
在线时间
1314 小时
发表于 2016-8-28 20:47:37 | 显示全部楼层
本帖最后由 xuande 于 2016-8-28 21:17 编辑

写操作的时候使用这样的语句:    *add = data;
其中add和data都是已知的数据,必须先赋值。

那么在三总线上将发生这样的事情:
1、地址总线将出现add的值,即:A0=b0,A1=b1,等等。此处b0、b1是add的bit。
2、数据总线将出现data的值,即:D0=b0,D1=b1,等等。此处b0、b1是data的bit。
3、控制总线会有相应的变化,比如CE管脚变为低电平,WE信号也将在某个时间段出现低电平,而RE信号始终为高。
4、以上变化是有时间关系的,即时序。

-------以上是基础知识------------
现在看问题的第2点。
记住:不同bank有不同的地址,但A0=b0,A1=b1这点是始终成立的。
道理上,用哪个bank是你自己定的,要和硬件紧密关联了。
你想让哪一位出现高电平,把这串数字写出来,就是要赋给add的值了。
具体哪一位,要看硬件连接情况,也要了解显示屏的电平需求。




回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11539
金钱
11539
注册时间
2014-4-1
在线时间
1314 小时
发表于 2016-8-28 20:47:52 | 显示全部楼层
本帖最后由 xuande 于 2016-8-28 21:31 编辑


(先理解写操作吧,读操作以后再说。)




回复

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
 楼主| 发表于 2016-8-28 20:51:42 | 显示全部楼层
xuande 发表于 2016-8-28 20:47
问题1、2,需要了解FSMC是怎么运行的。

学过51或其他芯片,应当知道三总线,即:

总线这个我是明白的,但是FSMC运行我怎么弄啊,我看了FSMC的数据手册,好像没有看到相关的信息额!请指导。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-8-28 23:38:28 | 显示全部楼层
从零开始0 发表于 2016-8-28 20:51
总线这个我是明白的,但是FSMC运行我怎么弄啊,我看了FSMC的数据手册,好像没有看到相关的信息额!请指导 ...

硬件自动处理。
你只需要记住,FSMC会根据你的配置,自动控制Ax,Dx,NE,  CS WR,RD 等这些引脚。
至于是怎么控制的,你恐怕得去学习芯片设计 了。。。就好比因特尔的CPU是怎么处理数据的,这不是几句话能讲明白的,你得去学习芯片设计。。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
 楼主| 发表于 2016-8-30 21:28:55 | 显示全部楼层
xuande 发表于 2016-8-28 20:47
写操作的时候使用这样的语句:    *add = data;
其中add和data都是已知的数据,必须先赋值。

使用FSMC控制LCD的时候,不就是只需要控制RS那个引脚对应的地址线吗?为什么会有那么多的地址,两个地址应该就够用了啊???
回复

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
 楼主| 发表于 2016-8-30 21:50:41 | 显示全部楼层
xuande 发表于 2016-8-28 20:47
(先理解写操作吧,读操作以后再说。)

原子哥的代码里面的写和读的函数我都没看懂,我想用LCD的datasheet上面介绍的一些命令来进行写控制,但是我不知道这个怎么用,是不是我只需要将那些命令写到一定的地址,我就可以实现该指令的作用?我看那些指令里面的“位”对应到了数据引脚,也就是D,在哪里我可以找到哪个地址对应的内存是用来输出到数据引脚,哪个地址对应的内存存储输出到地址引脚?
回复

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
 楼主| 发表于 2016-8-30 21:54:45 | 显示全部楼层
正点原子 发表于 2016-8-28 23:38
硬件自动处理。
你只需要记住,FSMC会根据你的配置,自动控制Ax,Dx,NE,  CS WR,RD 等这些引脚。
至于 ...

我看代码里面有好多寄存器号,这是什么的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 06:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表