基于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的显示效果

 

搜索

复制

相关