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

[复制链接]
10473|18
 楼主| genglilai 发表于 2015-12-30 22:16 | 显示全部楼层 |阅读模式
本帖最后由 genglilai 于 2015-12-31 23:25 编辑

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


/*----------------------------------------------------分割线----------------------------------------------------*/
LZ板子LCD的接口原理图
QQ截图20151231225604.png
STM3210E-EVAL的LCD接口原理图
QQ截图20151231225528.png

LCD.rar (43.12 KB, 下载次数: 311)

移植好的驱动在此,首先声明,要使用官方Cube提供的HAL库
LCD使用的是FSMC接口,在CubeMX中配置如下
QQ截图20151231221453.png
如若手里板子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部分
包含文件部分
在此文件中,找到如下部分
QQ截图20151231221104.png
修改为
QQ截图20151231221307.png

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

2.stm3212e_eval_lcd.c部分
找到如下代码
QQ截图20151231221956.png
修改为
QQ截图20151231231300.png

如果你的LCD芯片驱动是hx8347d,找到如下部分,并把注释去掉
QQ截图20151231222311.png

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

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, 等等).非常丰富
240011814 发表于 2015-12-31 10:49 | 显示全部楼层
楼主怎样移植的?stm32cube里f103系列不能直接生产lcd。
309030106 发表于 2015-12-31 16:50 | 显示全部楼层
楼主还是分享一下过程吧,学习一下
 楼主| genglilai 发表于 2015-12-31 18:08 来自手机 | 显示全部楼层
等我整理一下,发上来
 楼主| genglilai 发表于 2015-12-31 23:25 | 显示全部楼层
自己顶一个,睡觉去了
Tick_Tock 发表于 2016-1-3 14:34 | 显示全部楼层
顶一下,
Uomar 发表于 2017-1-14 20:24 | 显示全部楼层
我的没成功
Uomar 发表于 2017-1-14 20:25 | 显示全部楼层
能否帮帮忙
waitopen 发表于 2017-3-1 15:07 | 显示全部楼层
帖子不错,有含量,移植方法说得也比较详细。
3846466 发表于 2017-6-10 18:31 | 显示全部楼层
正在折腾如楼主做的事情,请教ili9325的RS接线连接的到底是mcu的那个地址口,fsmc_a0,还是fsmc_a10,还是其他???
谢谢!!!
gejigeji521 发表于 2017-6-10 20:19 | 显示全部楼层
好资料,这个做法很好用。
捉虫天师 发表于 2017-6-11 18:23 | 显示全部楼层
以后不会cubeMX,简直没法搞了。
zhongs98 发表于 2017-6-16 22:49 | 显示全部楼层
wsyy1998 发表于 2017-6-17 19:26 | 显示全部楼层
好动动,正好需要!楼主用的是什么屏?有没有连接?谢谢
3846466 发表于 2017-6-29 16:58 | 显示全部楼层
想问一下你的fsmc的频率是多少???
72MHz 还是36MHz????

hxl520521 发表于 2018-4-4 07:46 来自手机 | 显示全部楼层
字库有重复定义,楼主加我,有事请教303308144
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部