ATK 7寸屏 (V1版本)在战舰板上做综合实验遇到问题

2019-08-17 04:19发布

本帖最后由 EDA3rd 于 2017-6-29 02:12 编辑

ATK 7寸屏 (V1版本)在战舰板上做综合实验时,加载主界面异常:
QQ图片20170629015221.jpg QQ图片20170629015241.jpg QQ图片20170629015231.jpg

开机检测正常,且点击时能显示高亮图标(上面三排图标一个时刻只能点击显示其中一个,下面两排点一个亮一个,且能保留),说明LCD画点代码是没问题的,看来是spb代码问题,每次显示主界面都会调用 slcd_frame_show函数画进行dma刷新LCD界面,而dma的源就是sramlcdbuf,那么sramlcdbuf是如何布局的?x方向和y方向怎么定义?
为什么描点坐标是是x*spbdev.spbheigh + y 而不是y*spbdev.spbheigh + x?

u16 *sramlcdbuf;                                                        //SRAM LCD BUFFER,背景图片显存区

//在指定位置画点.
//x,y:坐标
//color:颜 {MOD}.
void slcd_draw_point(u16 x,u16 y,u16 color)
{         
        sramlcdbuf[y+x*spbdev.spbheight+spbdev.frame*spbdev.spbheight*spbdev.spbwidth]=color;
}

因为ATK-7寸屏的坐标始终是横屏的长边为x轴,短边为y轴,所以用dma方式填充lcd需要考虑起点和方向问题,另外为什么要在dma之前使用LCD_Scan_Dir修改扫描方式?所有LCD芯片都要这么做?


我修改了slcd_frame_show函数代码:
//显示一帧,即启动一次spi到lcd的显示.
//x:坐标偏移量
void slcd_frame_show(u32 x)
{  
        //LCD_Scan_Dir(U2D_L2R);                //设置扫描方向  
    //LCD_Set_Window(0,spbdev.stabarheight,spbdev.spbwidth,spbdev.spbheight);
    LCD_Set_Window(0,0,lcddev.width,lcddev.height);//恢复默认窗口大小
    LCD_SetCursor(0,spbdev.stabarheight);
        LCD_WriteRAM_Prepare();     //开始写入GRAM
        slcd_dma_enable(x);
    //LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认方向
        LCD_Set_Window(0,0,lcddev.width,lcddev.height);//恢复默认窗口大小
}

但是主界面还是不正常。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
正点原子
1楼-- · 2019-08-17 07:44
 精彩回答 2  元偷偷看……
huyounong
2楼-- · 2019-08-17 13:15
自己阅读一下7寸屏的驱动芯片说明书吧。
例程里面关于7寸屏的驱动程序不是十分合适,最好自己按照芯片说明书写一个专用的。

我自己用7寸屏时,就是这样做的
EDA3rd
3楼-- · 2019-08-17 18:54
本帖最后由 EDA3rd 于 2017-6-29 09:36 编辑
huyounong 发表于 2017-6-29 07:18
自己阅读一下7寸屏的驱动芯片说明书吧。
例程里面关于7寸屏的驱动程序不是十分合适,最好自己按照芯片说明 ...

已经写了,gt811的代码也改了,例程的原生代码根本不支持竖屏。关键还是spb填充的问题
huyounong
4楼-- · 2019-08-17 20:36
建议你仔细阅读一下 0x36 指令
EDA3rd
5楼-- · 2019-08-18 00:06
huyounong 发表于 2017-6-29 20:30
建议你仔细阅读一下 0x36 指令

注意这是v1版本的7寸屏,采用CPLD方案,不是1963芯片
EDA3rd
6楼-- · 2019-08-18 03:41
 精彩回答 2  元偷偷看……

一周热门 更多>