不到 1 元,64K Flash + 8K RAM:CH32V006 直驱彩色 TFT LCD,100 FPS 无压力

上上周发了篇文章介绍了一下用 CH32V003 做过的项目(那些年用 7 毛钱单片机 CH32V003 做过的 DIY 项目),总的感觉用起来还是很舒服的,不过最近也了解到沁恒推出了差不多加量不加价的 CH32V006,资源不止翻倍, 价格在某宝上也只要 8 毛钱一颗

稍微研究了下,发现 CH32V006F8P6 和我在用的 TSSOP20 封装的 CH32V003F4P6,可以算是能 Pin2Pin 替换,这连开发板都可以直接用之前自己画的 V003 的开发板 PCB 😃。

0.96 寸 TFT LCD 驱动实测

之前用 CH32V003 的时候,即使它有 SPI 总线,但是 16KB Flash 实在有些捉襟见肘,即使驱动像 0.96 寸 TFT LCD 这样的小尺寸屏幕,分辨率为 160x80,色深为 16 位,一张全屏背景图就要消耗 160 * 80 * 2 = 25,600 bytes,已经超过了 Flash 的容量大小。但是换成 CH32V006 就不一样了,得益于 62KB 的 Flash,一张全彩全屏背景图也轻松拿下。

另外在编写显示驱动时,也可以拥有更大的缓存区,之前分享 CH32V003 字符显示驱动时也提到,一个 128x64 像素的单色缓存区也要占用 1KB 内存,直接占了 V003 一半的内存,这时 CH32V006 的 8KB 内存就显得充裕很多,即使使用 2KB 来作为显示缓存区也够用。

 

CH32V006 介绍

官网链接:

https://www.wch.cn/products/CH32V006.html

CH32V006是"扒角"系列工业级通用MCU,在“吾毛”CH32V003基础上容量加倍,最高65KB Flash,支持48MHz系统主频,具有2~5V宽工作电压、单线调试、低功耗等特点。

在官方查看 CH32V006 的架构图时才发现它还支持 Touchkey,这感觉可以用它做点有意思的东西了,例如之前搞的 PCB 键盘,是不是也可以用这个搞个按键数量少的版本?

ch32v006-tft-lcd-1

相比 CH32V003,V006 最大的优势就是 Flash 和 SRAM 翻倍了不止,可供代码使用的 Code Flash 有 62KB,SRAM 有 8KB,差不多都相当于 V003 的 4 倍了。

ch32v006-tft-lcd-2

型号列表中仍然有我比较喜欢用的 TSSOP20 封装,好焊接~

ST7735 TFT LCD 字符显示驱动

ST7735 的驱动比较简单,照着 Adafruit_ST7735 的代码转换一下就可以,我也在 GitHub 上找到一个开源的 CH32V003-ST7735 驱动,稍微改了下适配 CH32V006。

为了在显示字符时,仍然保持背景,在显示每个字符时,先将对应区域的背景图数据从背景图片数据中复制过来,再根据字体数据的点阵填充缓存区,然后使用 SPI 传输到 SS7735 控制器。

ch32v006-tft-lcd-3

优化传输,SPI + DMA 配置

Image Converter 工具地址: https://lvgl.io/tools/imageconverter

图片的字节数组数据,是直接用了 LVGL 的 Image Conveter 工具生成的,但是有个问题,它预期是在通过 SPI 传输时,是按 16 位 2 个字节的方式进行传输的,因此在配置 DMA 通道时,需要将 DMA 单次传输数据大小改为 HalfWord 也就是 16 位,要不然显示的图片会是很奇怪的颜色。

ch32v006-tft-lcd-4

刷新率计算

ch32v006-tft-lcd-5

前面视频中演示刷新三行字,背景保持不变,加上字符串格式化、字模图片处理时间,刷新率可以到 100 FPS。

小字体为 8x16,大字体为 16x32,每帧 SPI 传输数据量大概是:

8 * 16 * 2 * 13 + 16 * 32 * 2 * 4 = 7,424 bytes

SPI 总线速度为 24Mbps,那么实际传输时间差不多是 7424 * 8 / 24000000 * 1000 = 2.475 ms,看样子还是有不少时间在数据准备工作上。

不过在这个速率下,屏幕刷新时间基本上就不是瓶颈了,如果简化字符串格式化相关代码,可能还可以更快。

小结

相对 V003,CH32V006 以差不多的价格,可以提供四倍资源,这在开发应用上就更游刃有余了,不再只能配合 0.96 OLED 这种单色屏幕,可以尝试大屏、彩屏了,可以让界面更加丰富。

另外 TSSOP20 封装 可以 Pin 2 Pin 替换 CH32V003,这对于升级原有项目也相当方便了,感觉后续搞 DIY 项目都可以换 CH32V006 了 😃。

参考资料

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>