OpenEdv-开源电子网

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

原子7寸LCD驱动bug,LCD_Init()函数有点不对劲啊,请原子斧正为切。。谢谢

[复制链接]

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-7-23
在线时间
1 小时
发表于 2013-7-31 15:53:19 | 显示全部楼层 |阅读模式
    while(i<0X1FFF)
    {
        if(LCD_RD_DATA()&0x0001)break;//等待控制器准备好
        i++;
      }
u16 LCD_RD_DATA(void)
{                                                  
    return LCD->LCD_RAM;         
}                      
LCD_RD_DATA读的是像素数据?控制器复位后像素数据是0x0000啊。

这里貌似是想读状态寄存器,那就应该是 if(LCD->LCD_REG&0x0001)break;
才对。
因为:
ATK-7’ TFTLCD 模块自带的 LCD 控制器可读的寄存器只有 2 个,当 RS 为 0 的时候,
表示读取的是状态寄存器(STATE),当 RS 为 1 的时候,表示读取的是像素数据(DATA),读
期间的地址寄存器(ADDR)将被忽略。

2.3.6 STATE/ DATA 寄存器
这两个寄存器相互配合,用于完成像素数据的读操作。STATE  寄存器的位定义如表
2.3.6.1 所示,读取该寄存器会自动启动像素点的读操作,当 MCU 查询到 STATE 的 DATA_OK
位(b0 位)为 1 后,表示像素数据有效,然后 MCU 读 DATA 寄存器即可获得对应点的像
素数据,与写像素数据的操作相同,读像素数据的像素点位置也是由当前的  CUR_X  和
CUR_Y 定义的。当 MCU 读取 DATA 寄存器后,DATA_OK 位会被自动清零。需要注意的
是,读 STATE 寄器时,b15~b1 位是随机值,因此在判断 DATA_OK 时,需要屏蔽掉这些位。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-31 21:09:40 | 显示全部楼层
回复【楼主位】justsun:
---------------------------------
这里,你改成LCD->LCD_REG试试,我记得当时这里调了一段时间的,按手册说的,不能成功,后面改成我的那个方式算是解决问题了.
实际你可以测试下的,测试下bmp屏幕截图,就知道了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 22:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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