OpenEdv-开源电子网

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

9.19 FSMC驱动TFTLCD

[复制链接]

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
发表于 2017-9-19 14:57:02 | 显示全部楼层 |阅读模式
5金钱
    TFTLCD点亮实验中,我想知道那个例子程序里面的逻辑究竟是什么写的!!!
     我一直想自己写一个完整的代码实现一遍,但是无从下手!!!
     就是我想知道第一步应该干什么,为什么要这么做我不是非常清楚!!

    例子里面的读LCD的ID是怎么读的,这个我有点不是非常清楚。我觉得读ID的时候,你都没有将ID保存进去,怎么读的进来
    就算是厂家写进去了,但是为什么写一个结构体一读就能读出来呢?
     以下这个结构体,整个例程中我都没有找到将数据写进去只有读出来,

   //LCD重要参数集
typedef struct  
{                                                                                    
        u16 width;                        //LCD 宽度
        u16 height;                        //LCD 高度
        u16 id;                                //LCD ID
        u8  dir;                        //横屏还是竖屏控制:0,竖屏;1,横屏。       
        u16        wramcmd;                //开始写gram指令
        u16  setxcmd;                //设置x坐标指令
        u16  setycmd;                //设置y坐标指令
}_lcd_dev;


v.png

最佳答案

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

下面红色的代码不都是读ID的指令嘛 if(lcddev.id
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
611
金钱
611
注册时间
2017-2-4
在线时间
97 小时
发表于 2017-9-19 14:57:03 | 显示全部楼层
下面红色的代码不都是读ID的指令嘛
if(lcddev.id<0XFF||lcddev.id==0XFFFF||lcddev.id==0X9300)
        {               
                LCD_WR_REG(0XD3);                                  
                lcddev.id=LCD_RD_DATA();       
                lcddev.id=LCD_RD_DATA();
                  lcddev.id=LCD_RD_DATA();                                                             
                lcddev.id<<=8;
                lcddev.id|=LCD_RD_DATA();                                    
                if(lcddev.id!=0X9341)               
                {       
                        LCD_WR_REG(0XBF);                                  
                        lcddev.id=LCD_RD_DATA();
                         lcddev.id=LCD_RD_DATA();                    
                         lcddev.id=LCD_RD_DATA();                          
                          lcddev.id=LCD_RD_DATA();       
                        lcddev.id<<=8;
                          lcddev.id|=LCD_RD_DATA();       
                        if(lcddev.id!=0X6804)               
                        {
                                LCD_WR_REG(0XD4);                                  
                                lcddev.id=LCD_RD_DATA();
                                lcddev.id=LCD_RD_DATA();
                                lcddev.id=LCD_RD_DATA();
                                lcddev.id<<=8;         
                                lcddev.id|=LCD_RD_DATA();       
                                if(lcddev.id!=0X5310)       
                                {
                                        LCD_WR_REG(0XDA00);       
                                        lcddev.id=LCD_RD_DATA();                 
                                        LCD_WR_REG(0XDB00);
                                        lcddev.id=LCD_RD_DATA();       
                                        lcddev.id<<=8;       
                                        LCD_WR_REG(0XDC00);       
                                        lcddev.id|=LCD_RD_DATA();               
                                        if(lcddev.id==0x8000)lcddev.id=0x5510;
                                        if(lcddev.id!=0X5510)
                                        {
                                                LCD_WR_REG(0XA1);
                                                lcddev.id=LCD_RD_DATA();
                                                lcddev.id=LCD_RD_DATA();       
                                                lcddev.id<<=8;         
                                                lcddev.id|=LCD_RD_DATA();       
                                                if(lcddev.id==0X5761)lcddev.id=0X1963;
                                        }
                                }
                        }
                }         
        }
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2017-9-19 15:04:52 | 显示全部楼层
有没有人帮帮忙说一个大概!!!多谢各位大哥!
回复

使用道具 举报

4

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
611
金钱
611
注册时间
2017-2-4
在线时间
97 小时
发表于 2017-9-19 15:06:52 | 显示全部楼层
我的是407的板,结构体里面的数值全在这个函数void LCD_Display_Dir(u8 dir)里面的赋值。
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2017-9-19 15:30:06 | 显示全部楼层
本帖最后由 bbq 于 2017-9-19 15:31 编辑
MrXie 发表于 2017-9-19 15:06
我的是407的板,结构体里面的数值全在这个函数void LCD_Display_Dir(u8 dir)里面的赋值。

好的 我去查看!我已经看了,我也是407的,但是ID是没有赋值的!
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2017-3-28
在线时间
19 小时
发表于 2017-9-19 15:58:39 | 显示全部楼层
delay_ms(50);                                         // delay 50 ms
          lcddev.id=LCD_ReadReg(0x0000);        //读ID(9320/9325/9328/4531/4535等IC)   
          if(lcddev.id<0XFF||lcddev.id==0XFFFF||lcddev.id==0X9300)//读到ID不正确,新增lcddev.id==0X9300判断,因为9341在未被复位的情况下会被读成9300
        {       
                //尝试9341 ID的读取               
                LCD_WR_REG(0XD3);                                  
                lcddev.id=LCD_RD_DATA();        //dummy read        
                lcddev.id=LCD_RD_DATA();        //读到0X00
                  lcddev.id=LCD_RD_DATA();           //读取93                                                                  
                lcddev.id<<=8;
                lcddev.id|=LCD_RD_DATA();          //读取41                                      
                if(lcddev.id!=0X9341)                //非9341,尝试是不是6804


所以,你需要做的就是找到代码中的0XD3指令。
回复

使用道具 举报

4

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
611
金钱
611
注册时间
2017-2-4
在线时间
97 小时
发表于 2017-9-19 16:54:20 | 显示全部楼层
ID是写指令读出来的,在LCD初始化函数那里,也就是楼上贴出来的那些条件语句代码那里
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2017-9-19 19:43:37 | 显示全部楼层
MrXie 发表于 2017-9-19 16:54
ID是写指令读出来的,在LCD初始化函数那里,也就是楼上贴出来的那些条件语句代码那里

恩恩,不过我比较想知道例子程序里面都没有将数据写进去,你就能将数据读取出来?
还有一点的就是这个只是利用了结构体去读了对吧,但是它凭什么可以这样读!!ID都没有地址什么的,连指令都没有它就直接读了?
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2017-9-19 20:55:03 | 显示全部楼层
MrXie 发表于 2017-9-19 14:57
下面红色的代码不都是读ID的指令嘛
if(lcddev.id

谢谢!!
回复

使用道具 举报

4

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
611
金钱
611
注册时间
2017-2-4
在线时间
97 小时
发表于 2017-9-19 23:55:58 | 显示全部楼层

客气,我也是刚好在学LCD,多多交流。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-18 11:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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