野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19764|回复: 2

关于F103操作ILI9341的问题

[复制链接]
发表于 2020-8-20 17:08:45 | 显示全部楼层 |阅读模式
本帖最后由 学习不能停 于 2020-8-20 17:10 编辑

项目一环是使用F103RET6操作LCD。此前该LCD由FPGA驱动。液晶内置ILI9341,开放的接口为RGB接口。

我目前按照FPGA的配置完成了行帧信号的配置和相关初始化,可以通过SPI指令,先指定想要刷新的像素区域,然后往目标像素填入色彩数据。

但是这个做法显然是不符合RGB方式的刷屏逻辑的。非常的慢不说,还不稳定。

我的问题在于:
1. FPGA是怎么完成整屏刷新的。同样在使用SPI完成初始化后。FPGA不再依赖SPI指令,只需要依次填入像素值就可以整屏刷新。而F103上我实现不了。这里面的区别在哪里?
(因为在我理解看来,9341已经是控制器了,同样是操作RGB接口,为什么会有这样的差别,有点想不明白)

2. 如果不是MCU外设的局限,有没有更好的办法?

3. 如果没有更好的办法,那目前我没有FSMC,也不能用DMA+SPI,怎么提高刷新速度和稳定性?

害,还是很愁的,希望有经验的朋友能提点一下,虽说换个8080屏就能解决问题,还是希望知其然知其所以然。
回复

使用道具 举报

 楼主| 发表于 2020-8-24 08:33:16 | 显示全部楼层
自问自答一下,了解下来是硬件的局限。F103没有RBG接口,同时IO模拟时序的速度又不快,所以实现不了RGB方式的刷新。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-28 11:19:05 | 显示全部楼层
OK。我来更新答案了。实现了屏幕的显示处理。但是单片机也基本干不了别的事情了。

1.用Timer 模拟DOTCLK,HSYCN,VSYNC和DEN信号。
2.将DEN信号和HSYNC信号放在同一个TIMER下面,方便控制DEN的使能区间,同时进行行判断
3.依次按优先级打开VSYNC,DEN和DOTCLK的更新中断。

4.显示逻辑:当帧信号VSYNC触发中断,传递帧起始标志给DEN信号。当DEN触发中断,即相当于一行EBG信息开始刷新,于是传递行起始标志给DOTCLK信号。当DOTCLK触发中断,即当前像素位置可以写入,则依次累计240个像素值,写完清空所有的标志位。

5.需要注意的地方在于,当像素时钟(DOTCLK)频率过高时,中断函数处理的速度会和实际的时钟信号产生倍差,可以更具示波器的数值做相应的处理,调整DOTCLK中断函数内的累计值,以此让RBG内容始终能落在DEN的信号区间内。

目前我测出来的极限帧率时11Hz。水平有限。不足之处希望指正。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 10:34 , Processed in 0.034502 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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