数码之家

 找回密码
 立即注册
搜索
查看: 3590|回复: 8

st7796s 像素读取和写入的不同

[复制链接]
发表于 2021-7-2 14:34:27 | 显示全部楼层 |阅读模式

问题描述: lcd 可以正常点亮,清屏,显示图片、读取ID,但是读取lcd像素时,读取值和写入值不同。

8位并口读写,数据格式RGB565。

分析:
1. 可以正常点亮并且显示图片,并且可以正常读取ID,说明读写时序没有问题。
2.写颜色值可以正确显示,说明数据格式没有问题。

写入红色0xF800  读取的值是 0xF8 0xF8
写入绿色0x7e0   读取的值是 0xE7 0xE7
哪位大神能给个方向。。。。。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| 发表于 2021-7-5 10:51:19 | 显示全部楼层
decai 发表于 2021-7-3 08:19
没有足够的信息,读正确不代表读像素时序指令就正确.
一般屏幕读的时候都有一个预读.就是开始读的第一个像素 ...

非常感谢你的指导,预读这个没问题,每次开始新的读取都会先读取一个无效字节,至于设置位置问题我再试试。。再次感谢你的指导
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-9 17:48:38 | 显示全部楼层
今天终于有空了,结贴结贴。问题解决了, 寄存器配置没有问题。 进行读取的时候先启动PAP寄存器读取,再设置RD 低电平 高电平就能正确读取了。可能原因: 先设置RD,后设置PAP寄存器读取的话,lcd发送过来的数据已过保持时间。

下面函数 屏蔽的三行代码就是读取像素异常的,红色代码是修正后的。 PAP->BUF 这个是芯片PAP读写的寄存器

u8 _READ_DB_LCD()
{
  ....
  gpio_write(GS_LCD_RS,1);
gpio_write(GS_LCD_CS,0);

//gpio_write(GS_LCD_RD,0);
//gpio_write(GS_LCD_RD,1);
//PAP->BUF = 0x00;
PAP->BUF = 0x00;
gpio_write(GS_LCD_RD,0);
gpio_write(GS_LCD_RD,1);


data = PAP->BUF;
  ....
}

最后最后,感谢各路英雄的帮助和指导。。

回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-6 21:37 , Processed in 0.265201 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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