搜索
查看: 8382|回复: 5

[实战经验] 【实战经验】基于FMC8080接口8位LCD的STemWin的移植

[复制链接]
  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1182

    主题

    4967

    帖子

    1

    蝴蝶豆

    论坛元老

    最后登录
    2020-3-17
    发表于 2017-6-2 17:33:51 | 显示全部楼层 |阅读模式
    基于 FMC8080接口 8位 LCD的 STemWin的移植

    1前言
    有客户用我们的STM32F429VET6这颗芯片,用FMC接8080的8位的LCD,我们官方提供的例程或者网上的一些资料一般都是16位,客户在移植过程碰到一些问题,本篇主要介绍FMC接8080的8位的LCD的STemWin的移植过程。

    2 问题跟进与分析
    1)我们先看下8080屏的时序图如下:
    1.jpg
    2.jpg
    上图中分别是8080屏的读写时序图,所以关注的管脚其实就是读写信号,片选信号,以及数据信号,所以对应到MCU的连接如下图:
    3.jpg
    有上面的基础之后,我们来看下实际的原理图(下面节选一部分跟LCD接口相关的原理图)
    4.png
    2)打开CubeMx软件,根据图纸需要配置外部时钟和FMC如下图:
    5.jpg
    至此在CubeMx上配置8080屏的参数结束,我们可以先生成一个工程,然后将下面几个文件拷贝到工程里面
    6.png
    1、GUI_X.C -> “STemWinLibrary522\OS”
    2、 GUIConf.c和LCDConf.c->“STemWin\Src”
    3、 STemWin532_CM4_IAR.a -> “STemWin\Lib”
    然后将上述文件的路径加到工程中,以上几步完成之后接下来就开始进行部分的程序修改了。
          首先我们点开“GUIConf.C”,会在里面看到这样一个宏:
    ” #define GUI_NUMBYTES 0x200000”
    把“0x200000”改为“1024*50”即可(这个宏定义服务于在函数中向系统申请一个静态空间 aMemory ,接着调用 emWin的库函数GUI_ALLOC_AssignMemory 把该空间分配给 emWin。还有“1024*50”并不是定值,我们也可以改成“1024*40”或其它,视情况而定,但一般建议设置成小于“1024*50”)。然后在“GUIConf.C”中就没有需要修改的了。
    接着我们修改LCDConf.c中的驱动文件
    7.png
    8.jpg
    我们需要修改如下的宏,可以根据我们的电路图确定如下宏的定义,首先我们是8位,所以对应的寄存器数据应改成8位,由于LCD片选接的是单片机的NE1,所以其基地址是0x60000000,偏移地址由于是接的A18,所以对应的偏移地址0x0003ffff
    9.png

           我们需要修改的是GUIDRV_FLEXCOLOR_F66709这个参数。GUIDRV_FLEXCOLOR_F66709 这个参数的修改要根据你的TFT屏所使用的驱动芯片,如我的TFT使用的驱动芯片是“ILI9341”,那么就改成GUIDRV_FLEXCOLOR_F66709如果是其它型号的驱动芯片则需要查询emWin5.32的用户手册然后进行修改。emWin5.32用户手册。
    11.jpg
    上面的步骤完成之后我们再往下看会找到这样一个函数int LCD_X_DisplayDriver(unsigned LayerIndex,unsigned Cmd, void * pData)。在这里我们仅需在case LCD_X_INITCONTROLLER: 项中加入我们TFT液晶的初始化函数即可;
    12.jpg
    以上步骤完成之后,emWin在运行过程中有时会调用延时之类的函数,为了实现精确定时,这里我们选用SysTick。也即需要我们在mian()函数中加入 来初始化SysTick定时器,而在“stm32f4xx_it.c”文件中,我们需要进行这样的修改:
    13.jpg
    最后可以添加一个简单的hello world来测试如下:
    14.jpg


    3结论
    移植的过程看似比较简单,但是有些关键点也需要注意,首先看下A18(RS信号)写寄存器是0,写数据是1是否正确,也就是基地址是否配置正确,下一步是注意如何link到STemWin了,也就是添加TFT屏的驱动芯片的driver,最后检查下配置的LCD的色深的配置是565还是666等。



    基于FMC8080接口8位LCD的STemWin的移植.pdf (612.88 KB, 下载次数: 197)
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    971

    帖子

    176

    蝴蝶豆

    论坛元老

    最后登录
    2021-4-1
    发表于 2017-6-3 16:18:48 | 显示全部楼层
    谢谢楼主
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    2290

    帖子

    3

    蝴蝶豆

    论坛元老

    最后登录
    2021-5-1
    发表于 2017-6-15 23:08:23 | 显示全部楼层
    谢谢分享!!!
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    134

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2017-7-1
    发表于 2017-6-18 14:28:19 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    29

    主题

    243

    帖子

    3

    蝴蝶豆

    金牌会员

    最后登录
    2022-4-29
    发表于 2019-8-15 17:04:40 | 显示全部楼层
    代码分享下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2021-7-9
    发表于 2019-9-11 16:47:06 | 显示全部楼层
    我现在正在用gd32f450做ili9806接口,谢谢楼主的分享
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-25 08:56 , Processed in 0.193222 second(s), 42 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表