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条回答
EDA3rd
1楼-- · 2019-08-18 08:31
本帖最后由 EDA3rd 于 2017-7-1 23:26 编辑
EDA3rd 发表于 2017-7-1 13:54
感觉还是可以做的,只是sram_buf的填充方式需要修改,使它符合7寸屏V1的从上到下,从右到左的扫描方式, ...

其实spb填充方式刚好是从上到下,再从左到右,问题其实出在LCD_Fill和LCD_Color_Fill函数,修改后可以看到spb界面了,但是背景有条纹,难道图片解码有问题吗?用图片显示实验来测试一下,果然,海水都变成浆糊了,难道是LCD硬件本身问题?奇怪的是spb下方的三个主图标背景不是图标吧,怎么也有条纹?
QQ图片20170701231513.jpg

图片显示实验:
QQ图片20170701231508.jpg



正点原子
2楼-- · 2019-08-18 10:01
EDA3rd 发表于 2017-7-1 13:54
感觉还是可以做的,只是sram_buf的填充方式需要修改,使它符合7寸屏V1的从上到下,从右到左的扫描方式, ...

你这样反着填充,也是可以。
你降低一下LCD的驱动速度,再试试看。
EDA3rd
3楼-- · 2019-08-18 14:21
本帖最后由 EDA3rd 于 2017-7-2 11:50 编辑
正点原子 发表于 2017-7-1 23:50
你这样反着填充,也是可以。
你降低一下LCD的驱动速度,再试试看。

LCD驱动速度是指fsmc的速度吗?
我着用bmp_encode保存截图,在电脑上看是正常的,说明数据传输没问题,fsmc还需要调吗?、显示绿 {MOD}背景图片就没问题,真无语,难道lcd的晶体管坏了?透不了蓝光?
摄像头模块.jpg
EDA3rd
4楼-- · 2019-08-18 19:54
本帖最后由 EDA3rd 于 2017-7-2 15:40 编辑
正点原子 发表于 2017-7-1 23:50
你这样反着填充,也是可以。
你降低一下LCD的驱动速度,再试试看。

原子哥,我上传了图片显示的测试代码,方便的话用你们的7寸V1屏测试一下,看看效果是不是和我的一样,可能我这块屏硬件坏了,如果是代码问题还有机会解决,硬件坏了就没辙了,OBJ文件夹里含有hex文件,直接烧录即可测试。

实验41 图片显示实验-7寸屏V1.rar (1.68 MB, 下载次数: 99) 2017-7-2 15:34 上传 点击文件名下载附件

EDA3rd
5楼-- · 2019-08-18 21:02
 精彩回答 2  元偷偷看……

一周热门 更多>