您尚未登录。

楼主 #1 2020-12-05 20:15:43

f_Endman
会员
注册时间: 2020-04-16
已发帖子: 21
积分: 121

F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

事情还要从我上淘宝捡便宜买了一块ST7789主控的LCD开始说起(不是广告),然后折腾半天才发现这玩意需要用SPI进行初始化QAQ。。(以下省略N字)

在翻F1C100s手册的时候偶然间看到TCON的数据源中写到了“DMA565”,然后再一次在偶然间翻DMA的手册时发现F1C100有个叫DDMA的东西可以用DRQ的形式向TCON发送数据,来实现类似于Framebuffer的功能,于是我开始尝试调试这个玩意。这个DMA方式的Framebuffer是我自己几乎从零开始慢慢摸索,断断续续整了几个月弄出来的(其实绝大部分时间都花在了TCON的调试上)。

DMA方式的特点在于代码小,避开了图像引擎那资料极少、难以理解、操作还极其繁琐的初始化过程,这样一来增强了可移植性,而且顺便避开了图像引擎工作带来的工作耗电量。而且我还发现使用图像引擎方式屏幕上的像素点会有一定抖动,但DMA方式则完全不会抖动。要说缺点的话,其一是只能使用RGB565,其二是不能使用图像引擎的硬件混色和图层叠加啥的,其三是会一定程度上占用AHB总线。但这些在大部分情况下影响都不大,毕竟代码量只有5KB这个大优势是一直都在的。

裸机BootLoader使用了我前段时间在论坛里开源过的BootLoader,并修复了一些小Bug(代码大小的判断出错)。目前试了三种交叉编译链都能正常编译运行。

软件部分秉承我的一贯风格,使用了我自己写的外设寄存器结构体(这段时间摸索出来了一种极其方便的利用Excel处理手册的方法)。程序里存进去了一张数组形式的图片用于测试。开发环境用的是VSCode,但其它环境应该也没问题。
硬件部分是荔枝派NANO+官方4.3寸屏或者通过转接板连接我上面蓝字那款ST7789的屏(这坑人玩意还涨价了)。其中转接板我用了一种极其鬼畜的方式复用了LCD的引脚来进行软件模拟SPI通讯,居然成功了,AD工程附在文件里。

正所谓前人种树后人乘凉,希望我开源这个东西可以帮到以后入坑的同好。这个DMA-TCON方式实在是有太多坑了,我在程序里基本都详细地一一注释了,有些手册写的不清楚的地方我也根据自己的推断写了注释。

相关文件:DMA-TCON-Framebuffer.zip

图

离线

#2 2020-12-06 10:11:06

tianjjff
会员
注册时间: 2018-12-24
已发帖子: 111
积分: 69

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

感谢楼主分享

离线

#3 2020-12-09 17:53:42

TivonLiu
会员
注册时间: 2019-12-27
已发帖子: 41
积分: 41

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

感谢分享,留个记录,方便回看

离线

#4 2020-12-21 16:46:44

Bosspoi
会员
注册时间: 2020-11-29
已发帖子: 32
积分: 26.5

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

感谢分享,留个爪印,过几天研究下

离线

#5 2020-12-21 19:08:55

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,037
积分: 1004.5

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

这种方式双buffer切换好实现吗?

离线

#6 2020-12-21 19:29:10

guzhengstar
会员
注册时间: 2020-01-12
已发帖子: 23
积分: 22.5

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

优秀 楼主有心了备注

离线

楼主 #7 2020-12-21 22:30:26

f_Endman
会员
注册时间: 2020-04-16
已发帖子: 21
积分: 121

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

达克罗德 说:

这种方式双buffer切换好实现吗?

理论上来讲,只要更改DDMA的源地址寄存器就行了

离线

#8 2021-05-12 17:44:56

MyWaKeng
会员
注册时间: 2020-07-14
已发帖子: 21
积分: 4.5

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

哥们,通过参考你的裸机驱动,我把我的屏也显示了,就是,不能控制显示方向,我需要横屏显示,通过改36寄存器。发现无效,无论改成任何值,都是竖屏。
你的屏能用F1C100S 显示成横屏吗?

离线

#9 2021-05-13 13:15:11

MyWaKeng
会员
注册时间: 2020-07-14
已发帖子: 21
积分: 4.5

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

最后,参考linux驱动,搞定了。

离线

#10 2021-10-07 19:03:24

stephone
会员
注册时间: 2019-10-09
已发帖子: 39
积分: 1

Re: F1C100s裸奔DMA-TCON方式的Framebuffer,代码不到5KB!(附ST7789的RGB接口裸机驱动)

优秀,看来要恶补一下

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn