基于RISC-V MCU CH32V307单片机的触摸与显示方案
CH32V307系列MCU内置全速USB、Ethernet和多达8个UART/USART串口等外设模块,在工业控制及民用消费领域有非常大的应用前景。CH32V307内置FSMC功能,使用FSMC可快速操作基于8080协议端口的TFT-LCD显示屏。基于显示屏的可视化产品丰富了人机交互的方式,可以方便地了解设备的运行状况、舒适安全地操纵设备。
LVGL图形库是一种显示库,其官网提供了详细的介绍以及丰富的移植例程。在网络上有许多基于ARM内核单片机产品的LVGL移植教程,读者可参照相关教程深入学习。CH32V307单片机是基于RISC-V架构青稞V4F微处理器的单片机,与基于Cortex内核的单片机有差异,本文以CH32V307显示评估板为例,给出在移植LVGL过程中与ARM内核单片机的不同之处。
移植过程:
1.准备一个能驱动TFT-LCD显示,且支持触摸的工程;
2.LVGL下载移植文件;
3.修改LVGL文件,并按照需要,将LVGL载入到TFT-LCD工程;
4.运行。
这里有5点需要注意:1.引脚对应;2.Delay函数;3.FSMC配置;4.堆栈配置;5.中断声明。
1.CH32V307引脚属性请参照数据手册,在程序中对应引脚。
2.Delay函数在使用Mountain River(MTR)创建工程时,在Debug目录下已经定义了Delay_Us()、Delay_Ms(),在ARM单片机例程中习惯使用delay_us()、delay_ms()小写函数名,为此我们需要在debug.h程序末尾添加宏定义,隔离了Stm32例程源码与MTR工程的函数定义问题。
3.CH32v307与ARM单片机内置的FSMC –>NOR/PSRAM地址范围有差异。例如Stm32使用Block1 ->Sector4 的NE4为使能,A10地址引脚为指令/数据选择引脚,则地址如下程序设置。
CH32v307使用Block1-> Sector1 的NE1为使能,A17地址引脚为指令/数据选择引脚,则地址如下程序设置。
4.堆栈配置,在工程文件ld/link.ld中配置。
5.中断声明,CH32v307单片机在使用中断时,需要声明中断函数:
Void X_IRQHandler(void) __attribute__((interrupt(“WCH-Interrupt-fast”)));
一个仪表盘Demo的显示效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!