本帖最后由 RISCVnet 于 2022-4-20 16:50 编辑
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的显示效果
|