OpenEdv-开源电子网

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

TFT的RS端地址偏移量请教

[复制链接]

34

主题

388

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4090
金钱
4090
注册时间
2012-10-21
在线时间
642 小时
发表于 2012-10-21 19:50:19 | 显示全部楼层 |阅读模式
战舰版里的TFT使用FSMC来显示数据,使用FSMC_A10控制RS端,
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A1作为数据命令区分线
//注意设置时STM32内部会右移一位对其! 111110=0X3E      
#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))
#define LCD             ((LCD_TypeDef *) LCD_BASE)
这个使用A10的地址偏移是0x000007FE,这个是怎么算的?
加入我使用A0呢,偏移又是多少
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-21 20:18:09 | 显示全部楼层
回复【楼主位】PCA:
---------------------------------
请看《STM32开发指南》
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

388

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4090
金钱
4090
注册时间
2012-10-21
在线时间
642 小时
 楼主| 发表于 2012-10-21 22:21:53 | 显示全部楼层
看了没看懂


,下面两行的FSMC是不是指FSMC_A[]?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-21 23:16:43 | 显示全部楼层
是 的
回复 支持 反对

使用道具 举报

34

主题

388

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4090
金钱
4090
注册时间
2012-10-21
在线时间
642 小时
 楼主| 发表于 2012-10-22 08:13:39 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
问题已解决,多谢
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-10-22 08:30:23 | 显示全部楼层
FSMC其实很简单,STM32的FSMC中的SRAM部分分了4个区,每个区64M的,区里面的地址就对应FSMC的A系列引脚,例如你如果要驱动TFT的话,那FSMC上的A0接在TFT的RS引脚上,由于TFT的协议和SRAM的相似,这里用FSMC的地址引脚驱动TFT,就相当于你把TFT当作是一个4个字节(两个u16,一个寄存器,一个数据,也就是4个字节)的SRAM,当你把FSMC设置为16位数据宽度的话,那么FSMC就按照16位数据模式传送,也就是每个地址放2个字节数据,也就是u16,例如SRAM有很多地址,当你在SRAM第0个地址上放数据,FSMC的A0就高电平,然后WR脉冲,当你往SRAM的第1个地址放数据,FSMC的A1就高电平,A0就低电平,利用这点,可以把TFT弄到FSMC上,RS刚好接FSMC的A0那里,这样就可以用FSMC控制TFT了,不知道我说的详细不?望楼主能看懂。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

34

主题

388

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4090
金钱
4090
注册时间
2012-10-21
在线时间
642 小时
 楼主| 发表于 2012-10-22 18:10:26 | 显示全部楼层
回复【6楼】Tardis:
---------------------------------
明白,多谢指点
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-7-30 23:43:56 | 显示全部楼层
回复【6楼】Tardis:
---------------------------------
能再解释下“当你把FSMC设置为16位数据宽度的话,那么FSMC就按照16位数据模式传送,也就是每个地址放2个字节数据,也就是u16”这句话吗?谢谢
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-7-31 15:24:37 | 显示全部楼层
回复【8楼】wghfbj:
---------------------------------
就是,你往物理地址1里面写数据,实际上是写了2字节的数据,如果你弄数组的话,那么相对于数组地址0,就是u16的0-7位,相对于数组地址1,就是u16的8-15位的数据,这个是相对的,如果你定义u32数据类型,往u16写,在程序上把u32用u16指针来弄的话,那么硬件上会自动发送两个时钟
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-7-31 17:12:29 | 显示全部楼层
回复【9楼】Tardis:
---------------------------------
如果像您那样说,一个u16数据占两字节,相当于只占用了一个地址啊。是吗?
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-8-1 08:26:28 | 显示全部楼层
回复【10楼】wghfbj:
---------------------------------
是一个物理地址,如果你FSMC设置为16位的话,那么FSMC_A0至FSMC_A24都为0的时候,可以发送两个字节的数据,FSMC_A0为1的时候,就是另外两个字节的数据了,所以可以把LCD的RS连接在FSMC_A0上,如果你选择bank1的话,可以通过往地址0x68000000上写一个16位数据作为LCD的指令,往地址0x68000001上写一个16位数据为LCD的后续指令。
FSMC驱动I80协议的并口是很好用的,就是速度稍慢。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

16

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-10-31
在线时间
26 小时
发表于 2013-11-6 11:24:57 | 显示全部楼层
回复【6楼】Tardis:

FSMC其实很简单,STM32的FSMC中的SRAM部分分了4个区,每个区64M的,区里面的地址就对应FSMC的A系列引脚,例如你如果要驱动TFT的话,那FSMC上的A0接在TFT的RS引脚上,由于TFT的协议和SRAM的相似,这里用FSMC的地址引脚驱动TFT,就相当于你把TFT当作是一个4个字节(两个u16,一个寄存器,一个数据,也就是4个字节)的SRAM,当你把FSMC设置为16位数据宽度的话,那么FSMC就按照16位数据模式传送,也就是每个地址放2个字节数据,也就是u16,例如SRAM有很多地址,当你在SRAM第0个地址上放数据,FSMC的A0就高电平,然后WR脉冲,当你往SRAM的第1个地址放数据,FSMC的A1就高电平,A0就低电平,利用这点,可以把TFT弄到FSMC上,RS刚好接FSMC的A0那里,这样就可以用FSMC控制TFT了,不知道我说的详细不?望楼
......
---------------------------------
那么请问能不能把RS接到普通的IO口上?只要控制IO口的0和1不就可以操作一个寄存器,一个数据了吗?
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-6 11:57:16 | 显示全部楼层
回复【12楼】chun307:
---------------------------------
是可以的,但你怎么和FSMC的时序同步?时序不同步就不行了,不过如果你只是写数据,不写指令的话,数据还是可以同步的。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

16

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-10-31
在线时间
26 小时
发表于 2013-11-6 15:11:02 | 显示全部楼层
回复【13楼】Tardis:

回复【12楼】chun307:
---------------------------------
是可以的,但你怎么和FSMC的时序同步?时序不同步就不行了,不过如果你只是写数据,不写指令的话,数据还是可以同步的。

---------------------------------
谢谢您的回答 不过我还有疑惑:
1,为什么写数据可以 写指令不行呢?不是RS可以为1或0吗?
2,另外,如果选择为bank1.sector4,基地址为:0x6c00 0000。那么LCD对应的地址就是这个(0x6c00 0000)了吗?
3,如果是FSMC操作RAM,RAM有地址线,并且RAM地址线和FSMC一一对应,那么操作RAM的基地址是不是就是这个sector的基地址(比如bank1.sector4的    0x6c00 0000)?
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-8 13:40:49 | 显示全部楼层
回复【14楼】chun307:
---------------------------------
1.写指令你知道什么时候FSMC发么?有时候FSMC静默的时候也会发无聊数据的,因为这个是硬件总线,你软件有时候控制不到,虽然你可以RS为1或者0,但你1或者0后你不知道FSMC什么时候会发,除非你1或者0后延时一段时间。
2.看你用那根地址线,如果是FSMC_A0的话,就是0x6c000000了,不是的话,就要算地址,STM32内部的FSMC地址是向右便宜一个位操作,你算的时候要反过来向左偏移一个位来算。
3.是的
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

16

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-10-31
在线时间
26 小时
发表于 2013-11-11 10:38:48 | 显示全部楼层
回复【15楼】Tardis:
---------------------------------
非常感谢!!!
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-11 10:52:44 | 显示全部楼层
回复【16楼】chun307:
---------------------------------
你头像中的女人很带感
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

16

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-10-31
在线时间
26 小时
发表于 2013-11-11 17:40:23 | 显示全部楼层
回复【17楼】Tardis:
---------------------------------
怪不得这么客气。。。
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-11 17:42:03 | 显示全部楼层
回复【18楼】chun307:
---------------------------------
求介绍
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-11 17:42:31 | 显示全部楼层
回复【18楼】chun307:
---------------------------------
话说,回复你的留意,感觉是在回复你头像中女人的留意,话说,你是女人吗?
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

16

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-10-31
在线时间
26 小时
发表于 2013-11-12 09:11:50 | 显示全部楼层
男淫,让您失望了
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-26
在线时间
0 小时
发表于 2013-11-16 22:19:15 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
开发指南上没得哦, 没解释0X000007FE,则是 A10 的偏移量 这个是怎么来的哦。。。  知其然,不知其所以然, 怎么修改成自己想要的程序呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-16 23:21:06 | 显示全部楼层
回复【22楼】pulk:
---------------------------------
还没解释啊???
右移一位对其,就是了
核心思想,就是让地址线控制RS,不论你怎么玩,无非就是第一个地址的时候,RS=0,第二个地址的时候,RS=1,以此来区分数据还是命令。
那么剩下的问题,就是如何让地址加1,是的你接RS的脚能输出电平产生变化。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-26
在线时间
0 小时
发表于 2013-11-17 09:28:16 | 显示全部楼层
回复【23楼】正点原子:
---------------------------------
谢谢你的解答
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-26
在线时间
0 小时
发表于 2013-11-17 10:10:45 | 显示全部楼层
这个实验选择的是 Bank1的第四区,,你说的  “ 核心思想,就是让地址线控制RS,不论你怎么玩,无非就是第一个地址的时候,RS=0,第二个地址的时候,RS=1,以此来区分数据还是命令。”  这个第一个地址, 第二个地址  是0X6C00 0000~6FFF FFFF 在这些地址之间变吗?(因为要+2的偏移)

如果是这样的话, 那么0X6C00 0000~6FFF FFFF  这些地址范围怎么才能与FSMC_A10对应呢?  这个是固定的哦
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-26
在线时间
0 小时
发表于 2013-11-17 10:15:31 | 显示全部楼层
回复【23楼】正点原子:
---------------------------------
使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A10作为数据命令区分线 
这里怎么理解地址位HADDR[27,26]=11    FSMC_A10作为数据命令区分线
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-17 11:15:51 | 显示全部楼层
回复【26楼】pulk:
---------------------------------
HADDR,不解释,自己看书。貌似你都不看《STM32参考手册》的。里面讲的很清楚了。
至于A10,你看原理图没有?
我们的RS就接在A10上面,所以A10就用于控制命令数据区分。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-26
在线时间
0 小时
发表于 2013-11-17 15:15:40 | 显示全部楼层
回复【27楼】正点原子:
我自己看吧,,, 
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-11-15
在线时间
0 小时
发表于 2013-11-26 09:50:26 | 显示全部楼层
回复【5楼】PCA:
---------------------------------
你好,我想知道你A0的地址是如何设置的?
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-11-15
在线时间
0 小时
发表于 2013-11-26 11:06:05 | 显示全部楼层
回复【6楼】Tardis:
---------------------------------
对不起,我还是没看懂?我现在想用A16,偏移地址该如何设置?
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-11-15
在线时间
0 小时
发表于 2013-11-26 11:08:59 | 显示全部楼层
回复【27楼】正点原子:
---------------------------------
你好,我现在想用A16,偏移地址该如何设置?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-26 12:15:27 | 显示全部楼层
你理解A10了么?
A16和A10就是一个模子...
无非就是多了几个1罢了.
A10是7FE,掰手指都应该知道A16是多少了吧?
A16比A10多几个1?是不是6个?6个1是多少?
1FFFE咯.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-26 17:43:17 | 显示全部楼层
回复【30楼】北溟鱼:
---------------------------------
很简单,就是A0就是0,你得把0这个数左移一位当作FSMC地址,所以也就0了,A1是1,左移一位就是2,减去1作为地址,二进制是1,也就是0x00000001. 
A10二进制是10000000000,也就是0x400,减去1,也就是01111111111,也就是0x3FF,然后STM32是右移一位操作的,所以写程序的时候,你得把地址预先左移一位,0x3FF左移以为也就是二进制011111111110,也就是0x7FE,同理A16就是1FFFE了
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-11-15
在线时间
0 小时
发表于 2013-11-26 21:20:49 | 显示全部楼层
回复【33楼】Tardis:
谢谢,我也是这么想的。还有个问题想问你。例程中LCD屏的的CS接FSMC_NE4,RS接FSMC_A10,对应开发板上也就是PG12,和PG0。现在我想把程序改为CS接FSMC_NE1,RS接FSMC_A16,对应开发板上PD7,和PD11。程序部分我把
lcd.h中的#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))改为:
             #define LCD_BASE        ((u32)(0x60000000 | 0x0001FFFE))
把lcd.c中的FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;//  这里我们使用NE4 ,也就对应BTCR[6],[7]
改为:FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
   把 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);  // 使能BANK1 
改为 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);  // 使能BANK1 

我想问一下,这样改有错吗?但为啥屏幕只是白屏,什么都不显示,还是还有其他地方需要改动?
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-11-15
在线时间
0 小时
发表于 2013-11-26 21:22:06 | 显示全部楼层
回复【32楼】正点原子:
---------------------------------

谢谢原子,还有个问题想问你。例程中LCD屏的的CS接FSMC_NE4,RS接FSMC_A10,对应开发板上也就是PG12,和PG0。现在我想把程序改为CS接FSMC_NE1,RS接FSMC_A16,对应开发板上PD7,和PD11。程序部分我把
lcd.h中的#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))改为:
             #define LCD_BASE        ((u32)(0x60000000 | 0x0001FFFE))
把lcd.c中的FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;//  这里我们使用NE4 ,也就对应BTCR[6],[7]
改为:FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
   把 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);  // 使能BANK1 
改为 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);  // 使能BANK1 

我想问一下,这样改有错吗?但为啥屏幕只是白屏,什么都不显示,还是还有其他地方需要改动?很着急
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-26 23:26:57 | 显示全部楼层
回复【35楼】北溟鱼:
---------------------------------
地址没错,后续的库函数就不知道了,我用寄存器的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-11-15
在线时间
0 小时
发表于 2013-11-27 08:52:37 | 显示全部楼层
回复【36楼】正点原子:
---------------------------------
你寄存器是怎么改的?需要改哪些寄存器?我现在也怀疑是lcd.c文件中某些的寄存器需要改。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-27 10:35:44 | 显示全部楼层
//寄存器清零
//bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。
//这里我们使用NE1 ,也就对应BTCR[0],[1]。     
FSMC_Bank1->BTCR[0]=0X00000000;
FSMC_Bank1->BTCR[1]=0X00000000;
FSMC_Bank1E->BWTR[0]=0X00000000;
//操作BCR寄存器 使用异步模式
FSMC_Bank1->BTCR[0]|=1<<12; //存储器写使能
FSMC_Bank1->BTCR[0]|=1<<14; //读写使用不同的时序
FSMC_Bank1->BTCR[0]|=1<<4;  //存储器数据宽度为16bit      
//操作BTR寄存器
//读时序控制寄存器      
FSMC_Bank1->BTCR[1]|=0<<28; //模式A        
FSMC_Bank1->BTCR[1]|=1<<0;  //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns    
//因为液晶驱动IC的读数据的时候,速度不能太快,尤其对1289这个IC。
FSMC_Bank1->BTCR[1]|=0XF<<8;   //数据保存时间为16个HCLK    
//写时序控制寄存器  
FSMC_Bank1E->BWTR[0]|=0<<28;  //模式A        
FSMC_Bank1E->BWTR[0]|=0<<0; //地址建立时间(ADDSET)为1个HCLK 
  //4个HCLK(HCLK=72M)因为液晶驱动IC的写信号脉宽,最少也得50ns。72M/4=24M=55ns    
FSMC_Bank1E->BWTR[0]|=3<<8;  //数据保存时间为4个HCLK
//使能BANK1,区域4
FSMC_Bank1->BTCR[0]|=1<<0; //使能BANK1,区域1
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-11-29 14:50:44 | 显示全部楼层
回复【34楼】北溟鱼:
---------------------------------
兄弟,你的代码没错,请检查你的GPIO初始化序列是否正确,另外,你的FSMC_NORSRAMInit()这函数有调用不?没调用的话,你只是给结构体赋值是没用的。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-11-15
在线时间
0 小时
发表于 2013-12-3 09:14:42 | 显示全部楼层
回复【39楼】Tardis:
---------------------------------
谢谢,已经做出来了哈~~~
回复 支持 反对

使用道具 举报

37

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2012-9-27
在线时间
19 小时
发表于 2013-12-16 15:07:50 | 显示全部楼层
回复【33楼】Tardis:
---------------------------------
ox400减1   这句没理解,为什么减1啊
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-12-18 11:15:13 | 显示全部楼层
回复【41楼】charly:
---------------------------------
减一的目的就是,你在减一的这个地址操作,A0会低电平,如果直接0x400,A0就是高电平了。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

37

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2012-9-27
在线时间
19 小时
发表于 2013-12-18 15:07:35 | 显示全部楼层
回复【42楼】Tardis:
---------------------------------
我按实验做的用BANK1区域4做的,我如果想让A10输出高,不一定非要往0x6c000800写数据吧    我向0x6c001800写数据也行吧  只是A11也会变成输出高电平,是吗
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-12-20 15:34:49 | 显示全部楼层
回复【43楼】charly:
---------------------------------
是的
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-12-20 15:35:24 | 显示全部楼层
回复【43楼】charly:
---------------------------------
你不把A11对应的管脚配置为复用FSMC功能的话,A11就没有任何变化了
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

4

主题

10

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-1-3
在线时间
0 小时
发表于 2014-1-3 16:43:58 | 显示全部楼层
回复【35楼】北溟鱼:
---------------------------------
这位大哥,我和你的板子是一样的,我已将lcd.h中的#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))改为: 
             #define LCD_BASE        ((u32)(0x60000000 | 0x0001FFFE)) 
把lcd.c中的FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;//  这里我们使用NE4 ,也就对应BTCR[6],[7] 
改为:FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; 
   把 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);  // 使能BANK1  
改为 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);  // 使能BANK1
还是白屏,请问还要改哪些东西,已经被这玩意折磨两天了。
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2014-2-5 00:54:27 | 显示全部楼层
这帖子巨火啊,让我学到不少东西呢~~
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
发表于 2014-2-14 15:15:53 | 显示全部楼层
回复【33楼】Tardis:
---------------------------------
左移一位,减去1,右移一位,分别都是干什么的,挺乱的
回复 支持 反对

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
发表于 2014-2-14 15:19:25 | 显示全部楼层
回复【32楼】正点原子:
---------------------------------
很乱。能不能再讲一次,每一次移位,每一次加1,每一次减1,都给讲一下根据行不?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-2-14 15:21:56 | 显示全部楼层
回复【49楼】雪雪:
---------------------------------
电话我吧.
15902020353
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 18:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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