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);//恢复默认窗口大小
}

但是主界面还是不正常。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。