[STM32H7] 【STM32H7S78-DK测评】数码相框的基本实现

[复制链接]
1832|7
 楼主| jobszheng 发表于 2024-10-29 02:13 | 显示全部楼层 |阅读模式
本帖最后由 jobszheng 于 2024-10-29 02:45 编辑

【STM32H7S78-DK测评】数码相框的基本实现

前言

数码相框,在当年还是属于高端数码产品。做为一名80后,数码相框的流行期正值我大学本科阶段,看着自己家人的照片可以一张一张的在写字台,在茶几,在电视柜上播放,那高级感特别的自豪。可是,当年一款飞利浦的640x480分辨率的白色数码相框要800多元,七寸显示大小吧!画图的细腻程度较现在的差距还是蛮大的!当年虽然有万般喜爱,但苦于生计,也只是在电子商场的展台远远地看看而已。

数码相框的功能

  • 数码相框首先要显示图片
  • 数码相框可显示与切换多张图片
  • 数码相框可有音乐背景播放功能

寥寥几字把数码相框的功能说了一个大概。其实,当年的数码相框产品要比这个出色的多,只是今天我们时间有限,挑重点的功能特性来说罢了。

项目实现功能

  • 显示图片的功能实现。在本次评测阶段,我们使用STM32H7的LTDC外设功能来驱动液晶显示器,并显示我们经过格式化转储后的图片数据。主要目的还是对图片进行压缩大小,以尽可能多的保存图片;
  • 对图片的切换实现。我们采用DMA2D功能,在2个图层之间做变换切换。充分利用STM32H7的硬件对2个图层的处理达到图片切换的自然,丝滑处理;
  • 对于背景音乐来说,STM32H7S78,则直接支持I2S外设接口,可以轻松连接音频设备。为后续我们播放音乐提供硬件支持;

项目软件代码

我们将图片保存到外围的NorFlash之中,然后,在主程序中按顺序调用。数码相框的软件代码实现并不难:

相关的核心代码如下:

  1. void pic_show(const uint8_t **pic_ptr) {
  2.         LTDC_LayerCfgTypeDef pLayerCfg1 = { 0 };

  3.         pLayerCfg1.WindowX0 = 0;
  4.         pLayerCfg1.WindowX1 = 800;
  5.         pLayerCfg1.WindowY0 = 15;
  6.         pLayerCfg1.WindowY1 = 465;
  7.         pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
  8.         pLayerCfg1.Alpha = 200;
  9.         pLayerCfg1.Alpha0 = 0;
  10.         pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
  11.         pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
  12.         pLayerCfg1.FBStartAdress = (uint32_t) pic_ptr;
  13.         pLayerCfg1.ImageWidth = 800;
  14.         pLayerCfg1.ImageHeight = 480;
  15.         pLayerCfg1.Backcolor.Blue = 0;
  16.         pLayerCfg1.Backcolor.Green = 0;
  17.         pLayerCfg1.Backcolor.Red = 0;
  18.         if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg1, 1) != HAL_OK) {
  19.                 Error_Handler();
  20.         }
  21. }

  22. while (1) {
  23.                 /* USER CODE END WHILE */

  24.                 /* USER CODE BEGIN 3 */
  25.                 HAL_Delay(5000);
  26.                 pic_show(&image_01);
  27.                 HAL_Delay(5000);
  28.                 pic_show(&image_02);
  29.                 HAL_Delay(5000);
  30.                 pic_show(&image_03);
  31.                 HAL_Delay(5000);
  32.                 pic_show(&image_04);
  33.                 HAL_Delay(5000);
  34.                 pic_show(&image_05);
  35.                 HAL_Delay(5000);
  36.                 pic_show(&image_06);
  37.         }
  38.         /* USER CODE END 3 */
  39. }



项目展示


感谢我家已经2.5岁的虎虎小宝宝的出镜。

项目后期改进

本次原计划增加SD卡的文件读写功能。这样,更新图片就更加方便了。不过,当年也只有高端的数码相框才支持从SD卡读取图片并显示的功能。

项目总结

STM32H7RS-DK评估板做为宇宙最强开发板在上手时还是有些难度,发挥其优秀的性能,还是需要研发人员认真,仔细,详实的了解芯片,阅读芯片,读懂芯片。

本次试用评测暂告一段落,待我参加完考试后,再来给大家继续分享。欢迎大家关注21ic论坛,关注我。

谢谢大家^_^


Amazingxixixi 发表于 2024-10-31 16:23 | 显示全部楼层
从SD卡读取图片么?
 楼主| jobszheng 发表于 2024-10-31 16:46 | 显示全部楼层
Amazingxixixi 发表于 2024-10-31 16:23
从SD卡读取图片么?

唉!
惭愧啊!调试的时候进度缓慢,最后,还是把SD卡的读写给暂时去掉了。
不过,我计划在11月底更新成支持SD卡的文件

期待一下吧
地瓜patch 发表于 2024-10-31 19:10 来自手机 | 显示全部楼层
做个真人大小的数码相框有市场不
 楼主| jobszheng 发表于 2024-11-1 16:54 | 显示全部楼层
地瓜patch 发表于 2024-10-31 19:10
做个真人大小的数码相框有市场不

版主,您说的这个和广告屏 貌似没有太大区别了吧~~
weshiluwei6 发表于 2025-1-21 17:13 | 显示全部楼层
楼主你这个里面的几张图片 是怎么存在外面FLASH的呢
工程里转换成的数组 烧录的时候烧进去的吗
 楼主| jobszheng 发表于 2025-1-22 10:33 | 显示全部楼层
weshiluwei6 发表于 2025-1-21 17:13
楼主你这个里面的几张图片 是怎么存在外面FLASH的呢
工程里转换成的数组 烧录的时候烧进去的吗 ...

这个显示的版本是先转换成数组,再保存进入flash的。

其实,我还写了一段压缩与解压缩的程序。但效果不好,由于时间,没有调试出来。
SophiaOP 发表于 2025-1-22 20:40 来自手机 | 显示全部楼层
这个做着挺不错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:热爱开源,乐于分享。在嵌入式技术领域里面,主攻通讯协议,Modbus,TCP/IP以及虚拟化和RTOS

31

主题

746

帖子

23

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