发新帖本帖赏金 3.00元(功能说明)我要提问
返回列表
打印
[STM32F4]

【f446RE开发板试用】446驱动TFT_LCD显示JPG图像

[复制链接]
2814|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 sky.sun.zz 于 2015-10-9 10:31 编辑

     STM32F446RE由于没有FSMC,用来驱动TFT液晶有点小麻烦,加上一开始没有仔细阅读原理图,导致走了一段弯路,费力不少时间。原先一看原理图,发现GPIOA,GPIOB,GPIOC的16条引脚都引出,拿来做TFT数据端口的驱动应该都没问题。就先把PA拿来驱动数据端口,结果花了不少时间,TFT都无法常工作。其实在开发板上:
1。PC14和PC15已经用来驱动32K晶振,PC13用做复位输入端,C15并接PC13到地。

2。PA13,PA14是TMS,TCK,接ST_LINK。

3。PB3是SWO,PB11是VCAP。

因此,要想找到一个可用的16位IO口来驱动TFT数据口,实际上是不可能的。现在只能用2个不同IO口来拼接这个16位端口了:


          驱动TFT的硬件连接

最底层的驱动代码,16位数据口的拼接:
void wr_cmd(uint16_t cmd)
{
        RS_L;        
        CS_L;        
        WR_L;
        GPIOC->ODR &=0XE000;
        GPIOC->ODR |= cmd&0X1FFF;
        GPIOB->ODR &=0XFF8F;
        GPIOB->ODR |= (cmd>>9)&0X0070;
        __nop();
        __nop();        

        WR_H;        
        __nop();
        CS_H;               
}
void wr_data(uint16_t dat)
{
        RS_H;        
        CS_L;        
        WR_L;
        GPIOC->ODR &=0XE000;
        GPIOC->ODR |= dat&0X1FFF;
        GPIOB->ODR &=0XFF8F;
        GPIOB->ODR |= (dat>>9)&0X0070;
        __nop();
        __nop();
        WR_H;        
        __nop();
        CS_H;                  
}

    TFT终于能够正常工作了。我们知道,在嵌入式系统中TFT显示图像大都是显示BMP位图,一幅图像文件要占用不小存储器空间,要想减小存储器空间的占用,最好使用JPG格式来显示,而采用JPG格式显示速度是个瓶颈。现在有了STM32F446,用它来显示JPG图片速度将会改善,是个不错的选择。JPEG解码需要进行大量的浮点运算,因此在MDK5中需要启用STM32F446的浮点运算功能。
接下来要下载一个JPEGDECODE.C软件加入项目中,JPG图片需要使用320x240的JPG图片并下载BIN2C.EXE进行处理得到图片数据(例:img_a)



               启用FPU

#include "arm_math.h"   //浮点运算库
main(){
HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
lcd_initialize();

LoadJpegFile(img_a); //(文件:img_a.h储存了1幅320*240的jpg图像数据)
while(1)
  {
  }
}

                        img_a.h显示的图片


            STM32F446显示JPG图片

本例中装入7幅320x240JPG图像,编译后所占存储器空间是相当小的:

图3 内存占用情况








打赏榜单

21ic小喇叭 打赏了 3.00 元 2015-10-26

沙发
SLHSu37| | 2015-10-8 08:57 | 只看该作者
分享代码呗············

使用特权

评论回复
板凳
大秦正声| | 2015-10-8 10:00 | 只看该作者
彩色的图片!不错!

使用特权

评论回复
地板
sky.sun.zz|  楼主 | 2015-10-8 11:39 | 只看该作者
SLHSu37 发表于 2015-10-8 08:57
分享代码呗············

最主要的代码已分享,其他代码你要根据自己的TFT修改,ST库文件里有很多例程。

使用特权

评论回复
5
android2| | 2015-10-8 14:13 | 只看该作者
JPEG解码需要进行大量的浮点运算,看来F446RE是真强大

使用特权

评论回复
6
SLHSu37| | 2015-10-8 16:37 | 只看该作者
sky.sun.zz 发表于 2015-10-8 11:39
最主要的代码已分享,其他代码你要根据自己的TFT修改,ST库文件里有很多例程。 ...

小白表示很蛋疼啊····

使用特权

评论回复
7
sky.sun.zz|  楼主 | 2015-10-8 20:10 | 只看该作者
本帖最后由 sky.sun.zz 于 2015-10-11 11:43 编辑
SLHSu37 发表于 2015-10-8 16:37
小白表示很蛋疼啊····

不要偷懒呀,多敲敲键盘就不了!
STM324x7I_EVAL.rar (10.55 KB)
jpegdecode.rar (22.21 KB)

使用特权

评论回复
8
FireRiver9| | 2015-10-10 22:19 | 只看该作者
图像是JPG的?很强大啊

使用特权

评论回复
9
lizhuang_1| | 2015-10-12 19:42 | 只看该作者

楼主的这个文件是什么文件啊?,我想借用你的程序来驱动我的LCD,遇到了些问题啊,还望楼主不吝赐教!

使用特权

评论回复
10
sky.sun.zz|  楼主 | 2015-10-12 19:54 | 只看该作者
本帖最后由 sky.sun.zz 于 2015-10-12 20:05 编辑
lizhuang_1 发表于 2015-10-12 19:42
楼主的这个文件是什么文件啊?,我想借用你的程序来驱动我的LCD,遇到了些问题啊,还望楼主不吝赐教!
...

字库呀,ST固件库到处都是,到ST官方可以下载不同版本的。你的编译环境中固件库的Utilities文件夹里就有。

使用特权

评论回复
11
abotomson| | 2022-12-5 20:19 | 只看该作者
这个板子连线看着都费事了。              

使用特权

评论回复
12
kmzuaz| | 2022-12-5 20:48 | 只看该作者
刷屏的速度怎么样?              

使用特权

评论回复
13
sky.sun.zz|  楼主 | 2022-12-6 10:15 | 只看该作者
kmzuaz 发表于 2022-12-5 20:48
刷屏的速度怎么样?

速度很快

使用特权

评论回复
14
MessageRing| | 2022-12-6 11:06 | 只看该作者
这连线,看着就麻烦

使用特权

评论回复
15
uptown| | 2022-12-12 11:22 | 只看该作者
F446RE是真强大,速度可以。

使用特权

评论回复
16
yeates333| | 2022-12-12 16:17 | 只看该作者
可以使用硬件spi驱动吗              

使用特权

评论回复
17
sky.sun.zz|  楼主 | 2022-12-12 20:37 | 只看该作者
yeates333 发表于 2022-12-12 16:17
可以使用硬件spi驱动吗

这个当然可以,不过我使用的LCD不是SPI总线,没有试过

使用特权

评论回复
18
qiufengsd| | 2022-12-18 18:31 | 只看该作者
现在stm32h7的产品非常给力呢。

使用特权

评论回复
19
geraldbetty| | 2022-12-18 23:17 | 只看该作者
有这个板子的外扩板子吗?              

使用特权

评论回复
20
sky.sun.zz|  楼主 | 2022-12-19 10:04 | 只看该作者
geraldbetty 发表于 2022-12-18 23:17
有这个板子的外扩板子吗?

没有,只是用杜邦线连接

使用特权

评论回复
发新帖 本帖赏金 3.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

732

帖子

13

粉丝