打印
[RISC-V MCU 应用开发]

【RISC-V MCU CH32V103测评】+FC手柄+显示器+玩俄罗斯方块+已开源

[复制链接]
23083|116
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 chongdongchen 于 2020-12-10 10:32 编辑

之前用CH32V103在VGA显示器显示了彩带的滚动效果(https://bbs.21ic.com/icview-3048928-1-1.html)。
网友建议进一步升级,弄个游戏玩玩。
玩个彩带确实不够尽兴,所以打算实现这个目标,希望时间还来得及。目标:用800*600@60Hz的VGA时序驱动显示器,可以打印字符串、玩俄罗斯方块,并配上FC手柄。
目前已经实现了静态点阵图片的显示:


-------源码打包----------一起学习一起玩-----------------------
游客,如果您要查看本帖隐藏内容请回复

硬件连接:
开发板        ->        VGA(DB15)
GND        ->        PIN5、PIN6、PIN7、PIN8、PIN10
PA8        ->        PIN13(串联270欧电阻)
PA3        ->        PIN14(串联270欧电阻)
PA7        ->        PIN2  (串联270欧电阻)

开发板        ->        FC手柄(DB9)
GND        ->        GND(PIN8)
3.3V        ->        POWER(PIN6)
PB3        ->        CLOCK(PIN4)
PB5        ->        LATCH(PIN3)
PB7        ->        DATA(PIN2)


使用特权

评论回复

相关帖子

沙发
chongdongchen|  楼主 | 2020-11-30 08:39 | 只看该作者
来个小更新:

使用特权

评论回复
板凳
jinglixixi| | 2020-11-30 09:29 | 只看该作者
介绍的再详细些(包括硬件及软件),这样大家就能参与进来,花样儿就会更多,兴许会鼓捣出一个新产品!

使用特权

评论回复
地板
chongdongchen|  楼主 | 2020-11-30 10:14 | 只看该作者
感谢LS建议:
大致说明一下驱动原理,想到一点说一点,欢迎大家探讨。首先也是最重要的是:如何产生正确的时序去驱动VGA接口的显示器:
这就要先了解行数据时序和帧数据时序:


行同步和帧同步,可以用TIM的PWM和中断实现,这个不是很难,之前的帖子已经上传了源码,驱动规格是1440*900@60Hz。
现在由于要实现显示字符串,所以必须要要深入一点,先看常见的刷新率:

可以看到数据频率是非常的高。
我选择的是800*600@60Hz,也需要40MHz,这对于我们这款单片机来说是非常高的,如果用翻转IO的方法肯定是不行的。
所以我现在就用到了SPI外设,配合DMA,这样就能实现了。
到这里为止,理论上已经没问题了,但其实单片机的RAM还不够,只有20K,800*600/8 = 60000。
所以只能降低分辨率了:400*300(400*300/8=15000),这是逻辑上的分辨率,送到显示器的还是800*600。
附上资料( VGA驱动与实现.pdf):
VGA驱动与实现.pdf (865.34 KB)

使用特权

评论回复
5
chongdongchen|  楼主 | 2020-12-10 10:05 | 只看该作者
来了来了:

小视频不会弄,打包:
f7ebcba4a91e12aba8ecdc329c2db732.rar (2.8 MB)
还有瑕疵难搞定:
1、不能实现DMA硬件定时触发,目前是在中断中软触发实现,影响点阵数据时序。
2、DMA和CPU不能同时操作RAM,导致点阵数据受干扰,图像质量变差。

好在可以玩游戏,工作之余放松一下,哈哈。

使用特权

评论回复
6
WCHTech2| | 2020-12-10 11:46 | 只看该作者

帮你把视频转成gif上传啦

使用特权

评论回复
7
vsfopen| | 2020-12-10 14:01 | 只看该作者
单色的吗?好像有一些毛刺?
以前用定时器+DMA实现过一个VGA,然后发现处理的的触发频率受限

使用特权

评论回复
8
chongdongchen|  楼主 | 2020-12-10 15:40 | 只看该作者
vsfopen 发表于 2020-12-10 14:01
单色的吗?好像有一些毛刺?
以前用定时器+DMA实现过一个VGA,然后发现处理的的触发频率受限 ...

是的,单色有毛刺。在5楼有分析。
我现在是用TIM+DMA+SPI实现的。

使用特权

评论回复
9
zhengfish| | 2020-12-10 16:02 | 只看该作者
学习学习

使用特权

评论回复
10
天意无罪| | 2020-12-11 09:13 | 只看该作者
不错,可以把颜色切换功能加上去,有空了来玩玩,先点个赞。

使用特权

评论回复
11
zhdm| | 2020-12-11 10:26 | 只看该作者
谢谢·分享!

使用特权

评论回复
12
vsfopen| | 2020-12-11 11:43 | 只看该作者
chongdongchen 发表于 2020-12-10 15:40
是的,单色有毛刺。在5楼有分析。
我现在是用TIM+DMA+SPI实现的。

单色的话,一般都是定时器触发SPI DMA。
我之前玩的时候,用定时器触发GPIO DMA做彩色的,不过触发频率要求就高很多了。
https://bbs.21ic.com/icview-2940376-1-1.html

结果,MCU的DMA触发频率达不到要求,分辨率很低。

使用特权

评论回复
13
muxb| | 2020-12-11 15:10 | 只看该作者
不错不错,学习。。。。

使用特权

评论回复
14
chongdongchen|  楼主 | 2020-12-12 08:31 | 只看该作者
天意无罪 发表于 2020-12-11 09:13
不错,可以把颜色切换功能加上去,有空了来玩玩,先点个赞。

颜色能做到整屏或者整行切换,有空了你可以试试。

使用特权

评论回复
15
chongdongchen|  楼主 | 2020-12-12 08:40 | 只看该作者
vsfopen 发表于 2020-12-11 11:43
单色的话,一般都是定时器触发SPI DMA。
我之前玩的时候,用定时器触发GPIO DMA做彩色的,不过触发频率要 ...

你的是牺牲了分辨率,但是得到了彩色。我和你刚好相反。
不过我现在这个单片机的DMA有点受限,实现不了定时器触发,因为配置DMA的时候,DMA必须处于关闭状态,而一旦再次使能DMA,它就开始传输了。

使用特权

评论回复
16
252tp| | 2020-12-12 12:30 | 只看该作者
来灌下水、

使用特权

评论回复
17
xdqfc| | 2020-12-13 11:05 | 只看该作者
这才是真正的玩出了水平,玩出了高度,坚决点赞!!!

使用特权

评论回复
18
nvjwiciw659| | 2020-12-13 17:41 | 只看该作者
老哥牛的,没想到VGA能这样玩

使用特权

评论回复
19
lisingch| | 2021-2-25 23:00 | 只看该作者
这个技术含量高

使用特权

评论回复
20
wsnsyy| | 2021-2-26 10:57 | 只看该作者
这玩的很高级

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

1229

帖子

10

粉丝