STM32F429 LCD程序移植
STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音。有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动芯片做寄存器配置等等,一系列繁琐的操作。但是,如果MCU自带LCD驱动器,情况就不一样了,特别是加载了STemwin之后,不同厂家屏幕,只要其分辨率一样,则可以直接替换,最多是触摸屏的芯片不一样,做些触摸驱动。如果分辨率不同,则只需要更改分辨率就可以了,其硬件接口是一样的。
本文是从野火的5寸800*480分辨率屏幕程序移植到原子哥的apollo的7寸1024*600分辨率上,用429驱动这么高分辨率是件比较容易兴奋的事情,由于底层驱动方式不同,直接影响刷屏速度,野火的底层驱动写得还算是比较完善,就是在STemwin上没直接使用开放触摸屏接口。
首先,查看下野火的开发板上触摸屏引脚和APOLLO板区别,经过研究发现,其管脚基本通用,部分管脚重定义到别的引脚,软件上只需要做简单的条件编译即可,如下:

另外值得注意的事,通过比较LCD的管脚定义,很明显,APOLLO硬件上只保留了RGB565引脚,所以野火程序驱动上得从RGB888改为RGB565,其主要代码集中在文件GUIDRV_wf.c中,直接替换。

其次,看下两块板子之间SDRAM引脚区别,做过触摸屏显示的童鞋肯定知道,屏幕显示的缓存,是靠外部的SDRAM,如果SDRAM驱动不好,则触摸屏肯定没法使用。比较之后,因为都是SDRAM 不管是ISSI的还是Winbond的,其接口定义都是一模一样。唯一一点区别,之前用的野火的程序使用的是4M大小,而驱动1024*600分辨率,这个大小不够,得升级到8M,更改下代码,同时更改下管脚映射(跟LCD管脚方法一样,不赘述)。

行地址宽度改为9,列地址宽度改为13。
野火的SDRAM配置在bank2上,其起始地址为:0xD0000000,而APOLLO起始地址为:0xC0000000,程序上做出相应的更改;

另外,因为增大了SDRAM,在GUIConf.c文件中也做相应的堆栈更改

通过以上两个措施,屏幕基本可以显示,其效果如下,只显示一半。

网上该情况的资料比较少,也很难发现原因,原因可能有几个方面:SDRAM只用了现存的一半,导致另一半没刷出来;屏幕驱动有问题;
1) 通过对SDRAM全部8M数据,读取写入测试,无问题,说明不是SDRAM导致该问题发生;
2)屏幕显示方式不对,RGB565没有设置好,经过仔细盘查,RGB设置无问题;
3)屏幕的时序方式可能需要更改,将野火的时序方式换成APOLLO,申请的效果出现了,可以整面刷屏了。


自此,可以说移植成功了。
STM32F429 LCD程序移植的更多相关文章
- 嵌入式linux应用程序移植方法总结
嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...
- linux第三方程序移植
摘要:在linux开发过程中经常需要用到第三方的程序,有时需要用到它们的库,有时需要它们生成的可执行文件,如何正确地编译这些第三方的程序,以方便地使用和开发自己需要的程序,将是本文要论述的内容. 1. ...
- 【转】将 Linux 应用程序移植到 64 位系统上
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...
- AM335x(TQ335x)学习笔记——LCD驱动移植
TI的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,与按键一样,我们可以通过DTS配置完成LCD的显示.下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路. (1)初步分析 由 ...
- STM32F407使用MFRC522射频卡调试及程序移植成功
版权声明:转载请注明出处,谢谢 https://blog.csdn.net/Kevin_8_Lee/article/details/88865556 或 https://www.cnblogs.co ...
- Linux64位程序移植
1 概述 Linux下的程序大多充当服务器的角色,在这种情况下,随着负载量和功能的增加,服务器所使用内存必然也随之增加,然而32位系统固有的4GB虚拟地址空间限制,在如今已是非常突出的问题了:另一个需 ...
- 017_STM32程序移植之_AS608指纹模块
STM32程序移植之AS608指纹模块 BUG说明: 硬件接线图如图所示 STM32引脚 指纹模块引脚 功能 3.3V 3.3V PA3 Tx PA2 Rx GND GND PA1 WAK 3.3V ...
- 016_STM32程序移植之_舵机
STM32程序移植之舵机PWM测试 接线图如下: STM32引脚 舵机引脚 功能 GND GND 正极电源 具体看舵机的额定电压 PA6 PWM引脚 STM32引脚 CH340引脚 GND GND 3 ...
- 015_STM32程序移植之_NRF24L01模块
STM32程序移植之NRF24L01模块 引脚接线图如下所示 STM32引脚 NRF24L01引脚 功能 GND GND 3.3V 3.3V PB8 CE PB9 CSN PB13 SCK PB15 ...
随机推荐
- Be Better:遇见更好的自己-2016年记
其实并不能找到好的词语来形容过去的一年,感觉就如此平淡的过了!没有了毕业的稚气,看事情淡了,少了一丝浮躁,多了一分认真.2016也许就是那句话-多读书,多看报,少吃零食多睡觉,而我更愿意说--Be B ...
- 12306官方火车票Api接口
2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...
- MSDN文档篇
很多人网上下载3~10G不等的MSDN文档,发现,下载完成了不会用 很多人每次都得在线下载文档,手上万千PC,都重新下载不是得疯了? so==> 先看几张图 推荐一个工具:https://vsh ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- nginx+php的使用
原文来自:windows下配置nginx+php环境 按照他的步骤走,亲测可用! 但是这里他后面说的根目录可能有些人有点懵. 其实在设置的时候就设置了: 网站根目录就是www这个目录,如果没创建请自行 ...
- Node.js:进程、子进程与cluster多核处理模块
1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...
- iOS逆向工程之Hopper中的ARM指令
虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...
- spring boot 实战:我们的第一款开源软件
在信息爆炸时代,如何避免持续性信息过剩,使自己变得专注而不是被纷繁的信息所累?每天会看到各种各样的新闻,各种新潮的技术层出不穷,如何筛选出自己所关心的? 各位看官会想,我们是来看开源软件的,你给我扯什 ...
- .NET应用程序域
在.NET平台下,可执行程序并没有直接承载在Windows进程中,而非托管程序是直接承载的..NET可执行程序承载在进程的一个逻辑分区中,称之为应用程序域(AppDomain).一个进程可以包含多个应 ...
- iOS之UILabel的自动换行
思路: 获取UILabel的frame大小 获取UILabel的字体大小 获取UILabel的文本内容 根据上面的3部分数据,计算文本显示区域大小 根据4计算的大小,实时改变UILabel的frame ...