OpenEdv-开源电子网

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

准备写一个FSMC驱动2.8寸的9325液晶(持续更新)

[复制链接]

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
发表于 2011-11-7 20:17:27 | 显示全部楼层 |阅读模式
     鉴于STM32手册上说FSMC有那么多的优点,速度也比较明显,所以想用FSMC来做一个液晶驱动程序,做过的童鞋不妨拍拍砖,指点指点,谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-11-7 20:40:39 | 显示全部楼层
1,先得有一个带fsmc的stm32(我们的mini板没有)
2,搜索本论坛,我有发过代码的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-11-8 00:40:42 | 显示全部楼层
搜到了,太感谢原子了,还想自己动手呢,没机会了,,呵呵。。。
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-11-9 00:30:20 | 显示全部楼层
原子,如果是STM32F103VET6,电路连接是CS->NCE2,RS->A16,16位数据模式 ,则应该修改哪些参数呢? 好像要修改的参数挺多的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-11-9 00:54:58 | 显示全部楼层
这个你看懂我的代码了就容易了.
不是想练手么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-11-9 20:57:47 | 显示全部楼层
太多了,有点提示就好了。。
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-11-10 00:55:44 | 显示全部楼层
已经移植好,改天整理了再传上来。。。
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-11-10 21:58:09 | 显示全部楼层
请教:使用BANK1-> SRAM1 A16控制RS。两种方法设置,如下:方法一:
 #define LCD_DATA ((u32)0x60020000) //disp Data ADDR
 #define LCD_CMD ((u32)0x60000000) //disp Reg ADDR
方法二:
//LCD地址结构体
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 BANK1 SRAM1,地址位HADDR[27,26]=00 A16作为数据命令区分线 ,
 //注意设置时STM32内部会右移一位对其! 111110=0X3E
 #define LCD_BASE         ((u32)(0x60000000|0x0001FFFE)) // A16
 #define LCD                 ((LCD_TypeDef *) LCD_BASE)
 然后相应的改读写函数,如下:
//方法一的写寄存器函数
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)

 *(volatile u16 *) (LCD_CMD) = LCD_Reg;//写入要写的寄存器序号 
 *(volatile u16 *) (LCD_DATA) = LCD_RegValue;//写入数据       
}

//方法二的写寄存器函数
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)

 LCD->LCD_REG = LCD_Reg;//写入要写的寄存器序号 
 LCD->LCD_RAM = LCD_RegValue;//写入数据       
}
也就是把*(volatile u16 *) (LCD_CMD) 替换为LCD->LCD_REG , *(volatile u16 *) (LCD_DATA) 替换为LCD->LCD_RAM ,其它 设置以及代码完全一样,但用方法一的LCD-9325可以正常显示,用方法二的不能正常显示,但读出的ID是正常的,既然方法二的读出ID是正常的,为什么显示不正常的呢?

PS:IC为STM32F103VET6       请教了,谢谢。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-11-10 22:06:26 | 显示全部楼层
回复【8楼】螃蟹爱虫:
---------------------------------
应该都可以才对.
看看是不是A0~A15影响了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-11-10 22:16:55 | 显示全部楼层
已OK,我反过来从方法一(能正常显示)的工程中替换成方法二就OK了,应该是某处错误了。此论坛虽开办不久,但在这里确实能学到好多东西,为回馈论坛,稍后我共享出原代码。
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-11-10 22:45:21 | 显示全部楼层
代码最主要就是参考了原子在论坛上发的利用FSMC控制LCD9320的代码,以及论坛上其它兄弟的资料。另外如果使用方法一来设置RS地址,只要按我上面说的去改动就可以了。代码在FSMC寄存器的设置上有些不同,感觉更加容易移植了,呵呵,只是个人感觉哈。
PS:STM32F103VET6,使用BANK1 SRAM1, RS->A16.  代码中在FSMC控制上赋有详细注释。

另外再强调一点, 如果设置传输16位数据,则地址会自动右移一位的。这个很容易理解,比如说如果地址是2位的,指向是8位数据的,那2条地址线可以指向4个字节的数据;如果指向改变为16位数据的,那只须1条地址线就可以指向4个字节的数据了,地址线由2条变为1条,也就相当于右移一位减半了。-------->这点相当的重要啊!!!!以下附件是原代码

螃蟹-7 TFTLCD显示实验(FSMC2).rar

948.74 KB, 下载次数: 1739

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-11-11 01:30:15 | 显示全部楼层
回复【11楼】螃蟹爱虫:
---------------------------------
受教了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2011-8-2
在线时间
0 小时
发表于 2011-11-14 22:29:45 | 显示全部楼层
回复【8楼】螃蟹爱虫:
---------------------------------
哦~~
回复 支持 反对

使用道具 举报

6

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2011-2-28
在线时间
8 小时
发表于 2011-11-16 11:46:56 | 显示全部楼层
受教了,原子的Z系列板子应该就是FSMC模式吧。
我会很乐意与你交流的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2011-11-16 12:24:21 | 显示全部楼层
是的
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2012-2-26
在线时间
0 小时
发表于 2012-3-27 11:49:01 | 显示全部楼层
回复【8楼】螃蟹爱虫:
---------------------------------
楼主,我有点不明白就是,方法1LCD_CMD的写寄存器的序号指向地址是0x60000000,方法2中结构体LCD_REG指向的地址应该是0x60020000,你可以解析一下这里吗?方法1应该是绝对地址吧?
他山之石,可以攻玉.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-27 14:55:28 | 显示全部楼层
方法1,和方法2都是一个地址来的.只是定义方法不一样.
1是通过结构体的地址自增实现的.
2是通过直接定位实现的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2012-2-26
在线时间
0 小时
发表于 2012-3-27 16:54:02 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
原子哥,那么用结构体的话:REG地址是0X6002000;RAM地址是0X60020001,直接给地址的话: REG地址0x60000000
 RAM地址是0x60020000?????望原子哥指点一下。。
他山之石,可以攻玉.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-27 17:23:17 | 显示全部楼层
你再仔细看看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2012-4-15
在线时间
4 小时
发表于 2012-5-1 09:44:27 | 显示全部楼层
回复【11楼】螃蟹爱虫:
---------------------------------
LZ你好,用你的代码,测试void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)函数时显示不对,我的只显示xsta坐标一整条的颜色,而不是(xend-xsta)*(yend-ysta)区域的颜色。这个函数你测试过吗?
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2012-4-15
在线时间
4 小时
发表于 2012-5-1 10:18:00 | 显示全部楼层
回复【20楼】liushuifong:
---------------------------------
已解决
回复 支持 反对

使用道具 举报

3

主题

123

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
364
金钱
364
注册时间
2012-4-30
在线时间
11 小时
发表于 2012-5-1 23:18:17 | 显示全部楼层
过阵子也搞搞这个,不然刷屏有点慢,
真的勇士,敢于直面惨淡的warning,敢于正视淋漓的error.
回复 支持 反对

使用道具 举报

16

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2012-3-20
在线时间
9 小时
发表于 2012-5-2 23:20:29 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

16

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2012-3-20
在线时间
9 小时
发表于 2012-5-4 21:03:02 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

6

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-9-17
在线时间
0 小时
发表于 2013-5-8 14:28:00 | 显示全部楼层
我测试了下,LCD一直白屏,ID为0xFFF,难道是硬件问题
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-6-22
在线时间
0 小时
发表于 2013-6-25 09:22:10 | 显示全部楼层
回复【8楼】螃蟹爱虫:
---------------------------------
((u32)(0x60000000|0x0001FFFE)) ,对于不同的IO口,偏移量是如何计算的啊?求教。
回复 支持 反对

使用道具 举报

50

主题

201

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
423
金钱
423
注册时间
2013-4-9
在线时间
1 小时
发表于 2013-6-28 16:12:09 | 显示全部楼层
回复【11楼】螃蟹爱虫:
---------------------------------
大哥  不知道你线怎么接的 - -能上个接线图吗
回复 支持 反对

使用道具 举报

50

主题

201

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
423
金钱
423
注册时间
2013-4-9
在线时间
1 小时
发表于 2013-7-9 12:07:42 | 显示全部楼层
回复【11楼】螃蟹爱虫:
---------------------------------
顶下
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2013-9-11
在线时间
40 小时
发表于 2013-10-17 16:46:03 | 显示全部楼层
顶下。
回复 支持 反对

使用道具 举报

27

主题

308

帖子

1

精华

高级会员

Rank: 4

积分
774
金钱
774
注册时间
2012-6-19
在线时间
19 小时
发表于 2014-2-21 12:57:01 | 显示全部楼层
楼主都好久没冒泡了啊
回复 支持 反对

使用道具 举报

8

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2013-3-6
在线时间
0 小时
发表于 2014-6-12 12:07:48 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

32

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2012-3-30
在线时间
321 小时
发表于 2018-3-3 20:48:43 | 显示全部楼层
mini板下载以后黑屏,没反应。
回复 支持 反对

使用道具 举报

51

主题

214

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2011-4-11
在线时间
43 小时
发表于 2019-10-15 07:46:47 | 显示全部楼层
螃蟹爱虫 发表于 2011-11-10 21:58
请教:使用BANK1-> SRAM1 A16控制RS。两种方法设置,如下:方法一:
 #define LCD_DATA ((u32)0x60 ...

8位数据是不是一样呀?
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2014-5-17
在线时间
12 小时
发表于 2019-10-18 21:13:14 | 显示全部楼层
这几天在研究液晶
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-5 12:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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