OpenEdv-开源电子网

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

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

[复制链接]

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
发表于 2017-6-29 02:08:00 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 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:颜色.
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);//恢复默认窗口大小
}

但是主界面还是不正常。

最佳答案

查看完整内容[请看2#楼]

7寸屏V1不支持。扫描方式是死的。默认的扫描方式是竖屏从左到右,从上到下。 7寸屏V1的只固定竖屏从上到下,从右到左。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-29 02:08:01 | 显示全部楼层
7寸屏V1不支持。扫描方式是死的。默认的扫描方式是竖屏从左到右,从上到下。
7寸屏V1的只固定竖屏从上到下,从右到左。


我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1951
金钱
1951
注册时间
2015-7-5
在线时间
493 小时
发表于 2017-6-29 07:18:57 | 显示全部楼层
自己阅读一下7寸屏的驱动芯片说明书吧。
例程里面关于7寸屏的驱动程序不是十分合适,最好自己按照芯片说明书写一个专用的。

我自己用7寸屏时,就是这样做的
回复

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
 楼主| 发表于 2017-6-29 09:22:57 | 显示全部楼层
本帖最后由 EDA3rd 于 2017-6-29 09:36 编辑
huyounong 发表于 2017-6-29 07:18
自己阅读一下7寸屏的驱动芯片说明书吧。
例程里面关于7寸屏的驱动程序不是十分合适,最好自己按照芯片说明 ...

已经写了,gt811的代码也改了,例程的原生代码根本不支持竖屏。关键还是spb填充的问题
回复

使用道具 举报

16

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1951
金钱
1951
注册时间
2015-7-5
在线时间
493 小时
发表于 2017-6-29 20:30:09 | 显示全部楼层
建议你仔细阅读一下 0x36 指令
回复

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
 楼主| 发表于 2017-6-30 00:48:11 来自手机 | 显示全部楼层
huyounong 发表于 2017-6-29 20:30
建议你仔细阅读一下 0x36 指令

注意这是v1版本的7寸屏,采用CPLD方案,不是1963芯片
回复

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
 楼主| 发表于 2017-7-1 13:54:09 | 显示全部楼层
正点原子 发表于 2017-6-29 02:08
7寸屏V1不支持。扫描方式是死的。默认的扫描方式是竖屏从左到右,从上到下。
7寸屏V1的只固定竖屏从上到下 ...

感觉还是可以做的,只是sram_buf的填充方式需要修改,使它符合7寸屏V1的从上到下,从右到左的扫描方式,这样才能继续使用dma填充。
回复

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
 楼主| 发表于 2017-7-1 23:24:12 | 显示全部楼层
本帖最后由 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



回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-7-1 23:50:31 | 显示全部楼层
EDA3rd 发表于 2017-7-1 13:54
感觉还是可以做的,只是sram_buf的填充方式需要修改,使它符合7寸屏V1的从上到下,从右到左的扫描方式, ...

你这样反着填充,也是可以。
你降低一下LCD的驱动速度,再试试看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
 楼主| 发表于 2017-7-2 11:21:58 | 显示全部楼层
本帖最后由 EDA3rd 于 2017-7-2 11:50 编辑
正点原子 发表于 2017-7-1 23:50
你这样反着填充,也是可以。
你降低一下LCD的驱动速度,再试试看。

LCD驱动速度是指fsmc的速度吗?
我着用bmp_encode保存截图,在电脑上看是正常的,说明数据传输没问题,fsmc还需要调吗?、显示绿色背景图片就没问题,真无语,难道lcd的晶体管坏了?透不了蓝光?
摄像头模块.jpg
回复

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
 楼主| 发表于 2017-7-2 15:37:33 | 显示全部楼层
本帖最后由 EDA3rd 于 2017-7-2 15:40 编辑
正点原子 发表于 2017-7-1 23:50
你这样反着填充,也是可以。
你降低一下LCD的驱动速度,再试试看。

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

实验41 图片显示实验-7寸屏V1.rar (1.68 MB, 下载次数: 105)
回复

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
 楼主| 发表于 2017-7-2 16:19:29 | 显示全部楼层
本帖最后由 EDA3rd 于 2017-7-2 16:22 编辑

运行nes游戏时,画面一直循环向上移动,是帧速太低了吗? nes游戏视频.rar (3.13 MB, 下载次数: 89)
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-17 10:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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