打印
[STM32F1]

[教程更新]移植了CubeMX官方的LCD驱动,用起来就是爽啊~

[复制链接]
9064|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
genglilai|  楼主 | 2015-12-30 22:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 genglilai 于 2015-12-31 23:25 编辑

使用了STM32CubeMX就不用说了,开发坏境是EWARM 6.40.5,片子STM32F103ZET6
BSP驱动提供的一大堆绘图函数,比某宝JS良心多了~!简直HIGH到飞起~



/*----------------------------------------------------分割线----------------------------------------------------*/
LZ板子LCD的接口原理图

STM3210E-EVAL的LCD接口原理图


LCD.rar (43.12 KB)

移植好的驱动在此,首先声明,要使用官方Cube提供的HAL库
LCD使用的是FSMC接口,在CubeMX中配置如下

如若手里板子LCD非FSMC接口,就跳过吧。。。FSMC不是16bit也跳过吧(有手动能力的除外)
若片选RS(NE4)LCD寄存器选择(A0)不同,请自行修改(也有一部分代码,下面说)

不过为了代码的优化,现只支持ili9325和ili9328,所以驱动是ili9325和ili9328而且片选和寄存器选择口与我相同
下面的可以不看了,直接用吧。如果不是,别着急,下面听如何修改
解压后,可以看到如下文件目录:
\LCD
|   stm3210e_eval_lcd.c
|   stm3210e_eval_lcd.h
|   
+---Components
|   +---Common
|   |       lcd.h
|   |      
|   +---hx8347d
|   |       hx8347d.c
|   |       hx8347d.h
|   |       Release_Notes.html
|   |      
|   +---ili9320
|   |       ili9320.c
|   |       ili9320.h
|   |       Release_Notes.html
|   |      
|   +---ili9325
|   |       ili9325.c
|   |       ili9325.h
|   |       Release_Notes.html
|   |      
|   +---spfd5408
|   |       Release_Notes.html
|   |       spfd5408.c
|   |       spfd5408.h
|   |      
|   \---st7735
|           Release_Notes.html
|           st7735.c
|           st7735.h
|           
\---Fonts
        font12.c
        font16.c
        font16_s.c
        font20.c
        font20_s.c
        font24.c
        font8.c
        fonts - 副本.h
        fonts.h
        Release_Notes.html


一、文件移植
首先把此LCD文件夹拷贝到你自己工程的目录下,并且把LCD目录路径添加到自己工程的环境下
在main.c中添加 #include "stm3210e_eval_lcd.h"
stm3210e_eval_lcd.cComponent中用各个c文件添加到工程中

二、对部分代码进行修改
1.stm3212e_eval_lcd.h部分
包含文件部分
在此文件中,找到如下部分

修改为


字体大小更改,Font20_s可以改为其他(参照Fonts目录)
Font*_s是LZ自己提取的宋体ASCII码字库90多个字符
#define LCD_DEFAULT_FONT         Font20_s

2.stm3212e_eval_lcd.c部分
找到如下代码

修改为


如果你的LCD芯片驱动是hx8347d,找到如下部分,并把注释去掉


接口部分
无非就是有关FSMC接口的初始化和配置的问题
接口部分找到下图部分,并自行修改(NE1~4对应端口PD7,PG9,PG10,PG12)


FSMC初始化部分找到static void FSMC_BANK1NORSRAM4_Init(void)函数
片选如果与NE4不同,请改BANK4不同的值(NE1~4对应 BANK1~4)
  hsram.Init.NSBank             = FSMC_NORSRAM_BANK4;

以上基本差不多是整个移植的过程,使用时先初始化一下 BSP_LCD_Init();
具体的绘图函数请参照stm3210e_eval_lcd.c

大家动手试试吧,出现问题发到帖子上一起讨论




沙发
zhangbolily| | 2015-12-30 22:37 | 只看该作者
嗯嗯,那么楼主的LCD用的是什么接口通信呢?我下一次可以做一个这个的开发分享

使用特权

评论回复
板凳
gejigeji521| | 2015-12-30 23:29 | 只看该作者
现在的BSP包做的比以前的标准库的好用多了,功能也比较全面了。

使用特权

评论回复
地板
wahahaheihei| | 2015-12-30 23:33 | 只看该作者
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。(如,STM32CubeF4 是针对STM32F4系列).平台包括了STM32Cube 硬件抽象层和一套的中间件组件(RTOS, USB, FS, TCP/IP,  Graphics, 等等).非常丰富

使用特权

评论回复
5
240011814| | 2015-12-31 10:49 | 只看该作者
楼主怎样移植的?stm32cube里f103系列不能直接生产lcd。

使用特权

评论回复
6
309030106| | 2015-12-31 16:50 | 只看该作者
楼主还是分享一下过程吧,学习一下

使用特权

评论回复
7
genglilai|  楼主 | 2015-12-31 18:08 | 只看该作者
等我整理一下,发上来

使用特权

评论回复
8
genglilai|  楼主 | 2015-12-31 23:25 | 只看该作者
自己顶一个,睡觉去了

使用特权

评论回复
9
Tick_Tock| | 2016-1-3 14:34 | 只看该作者
顶一下,

使用特权

评论回复
10
Uomar| | 2017-1-14 20:24 | 只看该作者
我的没成功

使用特权

评论回复
11
Uomar| | 2017-1-14 20:25 | 只看该作者
能否帮帮忙

使用特权

评论回复
12
waitopen| | 2017-3-1 15:07 | 只看该作者
帖子不错,有含量,移植方法说得也比较详细。

使用特权

评论回复
13
3846466| | 2017-6-10 18:31 | 只看该作者
正在折腾如楼主做的事情,请教ili9325的RS接线连接的到底是mcu的那个地址口,fsmc_a0,还是fsmc_a10,还是其他???
谢谢!!!

使用特权

评论回复
14
gejigeji521| | 2017-6-10 20:19 | 只看该作者
好资料,这个做法很好用。

使用特权

评论回复
15
捉虫天师| | 2017-6-11 18:23 | 只看该作者
以后不会cubeMX,简直没法搞了。

使用特权

评论回复
16
zhongs98| | 2017-6-16 22:49 | 只看该作者

使用特权

评论回复
17
wsyy1998| | 2017-6-17 19:26 | 只看该作者
好动动,正好需要!楼主用的是什么屏?有没有连接?谢谢

使用特权

评论回复
18
3846466| | 2017-6-29 16:58 | 只看该作者
想问一下你的fsmc的频率是多少???
72MHz 还是36MHz????

使用特权

评论回复
19
hxl520521| | 2018-4-4 07:46 | 只看该作者
字库有重复定义,楼主加我,有事请教303308144

使用特权

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

本版积分规则

4

主题

8

帖子

2

粉丝