您尚未登录。

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

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

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
已发帖子: 129
积分: 22

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

感谢楼主分享

离线

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

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

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

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

离线

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

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

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

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

离线

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

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

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

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

离线

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

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

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

优秀 楼主有心了备注

离线

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

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

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

达克罗德 说:

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

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

离线

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

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

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

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

离线

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

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

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

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

离线

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

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

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

优秀,看来要恶补一下

离线

#11 2021-12-14 15:54:41

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 122
积分: 35

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

试试看,不知道速速度能增加多少

离线

#12 2021-12-29 09:15:41

middle007
会员
注册时间: 2021-05-06
已发帖子: 18
积分: 3

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

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:其他

#13 2022-01-04 13:48:51

笔走天下
会员
注册时间: 2021-08-13
已发帖子: 126
积分: 0.5

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

这裸机是keil工程的吗,优秀,我看看怎么实现的

离线

#14 2022-04-11 10:03:01

Vonger
会员
注册时间: 2021-09-13
已发帖子: 6
积分: 1

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

DMA是个好办法!

离线

#15 2022-06-02 01:07:29

rongwinzip
会员
注册时间: 2020-03-14
已发帖子: 49
积分: 2.5

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

这么厉害,这么小代码就驱动起来了啊

离线

#16 2022-06-02 17:36:26

Iven
会员
注册时间: 2018-04-10
已发帖子: 61
积分: 1

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

可玩性很高嘛

离线

#18 2022-06-16 17:08:00

lanlanzhilian
会员
注册时间: 2021-12-21
已发帖子: 130
积分: 60

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

通吃各种小屏了

离线

#19 2022-06-20 14:05:45

Ican
会员
注册时间: 2022-06-11
已发帖子: 30
积分: 0

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

有没有dma官方的例程可以参考?

离线

#22 2022-06-28 08:32:21

Ican
会员
注册时间: 2022-06-11
已发帖子: 30
积分: 0

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

你好,18位的lcd接口是怎么初始化的?

离线

#24 2022-08-26 16:16:30

dingxmhan
会员
注册时间: 2020-06-11
已发帖子: 17
积分: 7

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

膜拜楼主,感觉这个是解决屏幕撕裂的好方法

离线

#27 2022-11-22 22:28:21

Simn
会员
注册时间: 2021-12-16
已发帖子: 33
积分: 3

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

我想知道FPS增加了什么

离线

#30 2023-04-03 09:13:03

rayandy
会员
注册时间: 2020-04-11
已发帖子: 17
积分: 2

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

F1C1002 TCON0 用DMA还是比较简洁,可以直接跳过DE。

离线

#31 2023-04-03 09:14:26

rayandy
会员
注册时间: 2020-04-11
已发帖子: 17
积分: 2

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

但是F1C100S资料并没有说明LCDC DMA的地址是哪里。

离线

#32 2023-04-03 09:26:03

rayandy
会员
注册时间: 2020-04-11
已发帖子: 17
积分: 2

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

lcd.jpg

离线

#33 2023-04-03 09:26:52

rayandy
会员
注册时间: 2020-04-11
已发帖子: 17
积分: 2

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

按照上面这张图,LCDC DMA的地址应该是FIFO1。

离线

楼主 #34 2023-04-03 19:38:18

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

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

rayandy 说:

按照上面这张图,LCDC DMA的地址应该是FIFO1。

时间有点久了,我记得f1c的tcon的dma是比较特殊的dma,内部应该有硬件连接,没有目标地址,直接设置目标类型就行。具体你还是看代码吧。
那个fifo1是tcon的硬件实现,程序好像不用管

离线

#35 2023-04-17 08:45:17

sh200436
会员
注册时间: 2023-02-23
已发帖子: 33
积分: 8

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

准备把F1C100S当单片机那样使用,纯裸机运行,不知道楼主这个是否可以,我先下载下来研究研究。谢谢楼主

离线

#36 2023-04-18 13:27:01

sh200436
会员
注册时间: 2023-02-23
已发帖子: 33
积分: 8

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

rayandy 说:

按照上面这张图,LCDC DMA的地址应该是FIFO1。

DAM-F1C100S.png


--DMA地址在此处,可以定义为LCD显存的起始地址

离线

#37 2023-04-18 13:32:41

sh200436
会员
注册时间: 2023-02-23
已发帖子: 33
积分: 8

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

@f_Endman
请问楼主,这个工程文件,在vscode环境下如何编译?我在window系统下安装了vscode,但不知道如何编译。。。
我是初学者,对编译环境很陌生,不知道从何下手
我也安装了keil MDK软件,不知道如何移植到keil下,群里有没有移植成功的朋友?

离线

#39 2023-04-29 19:31:32

sh200436
会员
注册时间: 2023-02-23
已发帖子: 33
积分: 8

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

原来是在linux环境下编译的,转移到linux下就可以成功编译了。
编译前需要把原来生成的bin和elf文件删除、Tool文件夹下生成的AddCheckSum文件也删除。然后再在主目录下执行make。

离线

#40 2023-04-30 19:31:04

vigour1000
会员
注册时间: 2018-11-19
已发帖子: 101
积分: 2

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

使用图像引擎方式有参考代码吗

离线

#42 2023-06-09 15:01:59

蹲坑逗蛆
会员
注册时间: 2023-02-10
已发帖子: 3
积分: 48

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

是不是写linux驱动也是一样的,申请出framebuff结构体,在proble函数中初始化这个tcon,然后填数据就好了?

离线

#44 2023-09-10 12:10:24

vigour1000
会员
注册时间: 2018-11-19
已发帖子: 101
积分: 2

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

de方式 LCD要用中断吗

离线

#45 2023-09-14 12:34:14

834492956
会员
注册时间: 2020-01-10
已发帖子: 11
积分: 1

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

想知道FPS增加了什么

离线

#46 2023-09-18 07:46:42

1847123212
会员
注册时间: 2019-11-21
已发帖子: 69
积分: 45

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

666这样就和单片机一样炒作了,比跑linux方便,启动速度还快

离线

#47 2023-10-05 17:40:15

lzw
会员
注册时间: 2022-07-31
已发帖子: 20
积分: -7

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

IM012不是设置好那种模式,为什么还要用SPI配置

离线

#48 2023-10-05 17:43:49

ubuntu
会员
注册时间: 2020-03-30
已发帖子: 272
积分: 250

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

lzw 说:

IM012不是设置好那种模式,为什么还要用SPI配置

RGB模式需要SPI初始化,因为分辨率和gamma等通过spi配置

离线

#50 2023-10-13 14:12:51

wenjiu1111
会员
注册时间: 2023-08-31
已发帖子: 3
积分: 3

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

大佬,出现撕裂效果应该怎么整?

离线

#52 2023-11-23 17:39:28

resetlove
会员
注册时间: 2019-10-19
已发帖子: 6
积分: 1

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

这裸机是keil工程的吗

离线

#53 2023-12-05 06:45:28

yofa2008
会员
注册时间: 2022-02-03
已发帖子: 5
积分: 0

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

f1cxxx虽然有性价比,但资料真的是不给啊

离线

#56 2023-12-17 22:21:16

songjiaming
会员
注册时间: 2023-12-16
已发帖子: 15
积分: 5

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

这种dma的方式可以用在lvgl的disp_flush中使用吗

离线

#57 2023-12-23 10:50:00

middle007
会员
注册时间: 2021-05-06
已发帖子: 18
积分: 3

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

f1cxxx资料真的是不给,任何配置都需要猜测.

离线

#60 2024-01-17 09:45:13

stlinux
会员
注册时间: 2022-12-01
已发帖子: 5
积分: 0

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

MyWaKeng 说:

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

请问,最后是通过软件方式实现的横竖屏显示吗?

离线

#62 2024-04-04 11:18:12

gaoda
会员
注册时间: 2023-05-04
已发帖子: 41
积分: 9

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

要是在裸机运行lvgl上,能否再开DMA?

离线

#63 2024-04-10 21:59:45

mrkelly
会员
注册时间: 2023-03-28
已发帖子: 2
积分: 3

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

MyWaKeng 说:

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

大佬,怎么搞定的,我现在也碰到这个竖屏转横屏的问题了

离线

#64 2024-04-19 00:42:53

loveme758
会员
注册时间: 2021-01-25
已发帖子: 17
积分: 0.5

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

请问TCON中的TCON_INT_REG0中断怎么跟TCON_INTERRUPT建立连接关系的?

离线

#65 2024-05-26 17:24:01

feitian227
会员
注册时间: 2022-04-19
已发帖子: 15
积分: 0

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

挖个坟,现在正在找spi初始化RGB屏幕的方法。

离线

#67 2024-07-23 21:25:54

lmnb
会员
注册时间: 2024-01-28
已发帖子: 40
积分: 67
个人网站

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

所以这个最终还是用RGB接口来传输数据的吗,还以为是那种1.3寸的spi屏也可以像framebuff了呢,大佬这种能实现吗还是说像stm32那样直接用spi+dma?

离线

页脚

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

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