硬汉嵌入式论坛

 找回密码
 立即注册
查看: 220|回复: 3
收起左侧

[STM32H7] STM32H7 JPEG硬件编码(非解码)疑问

[复制链接]

51

主题

103

回帖

256

积分

高级会员

积分
256
发表于 2025-10-20 16:32:25 | 显示全部楼层 |阅读模式
本帖最后由 coolaimcu 于 2025-10-20 17:49 编辑

大家好!

我需要使用STM32H7的JPEG硬件编码器功能,网上都是解码的,几乎没有编码例程可以参考。

唯一能参考的就是ST官方的JPEG_EncodingFromFLASH_DMA中的代码。

因为需要先把RGB565转换为MCU块,然后再把MCU块输入到硬件编码器,我看了下官方的RGB565转MCU块的代码,它的RGB565源数组是这种格式的:
uint32_t  Image_RGB565[320 * 240 * 2];

然后数组里面实际包含的元素又是38400个,并非是320 * 240 * 2 = 153600个,根本就对不上!
320 * 240 * 2应该是字节的个数,但是数组它定义的又是uint32_t类型,也不是uint8_t类型啊


而我截图得到的RGB565数据是这种格式的:
uint16_t  Image_RGB565[320 * 240];
貌似我这种才是标准的RGB565吧?我这种需要转为上面他的那种吗?我不明白官方为什么要那样写?


565.jpg

在下面的截图中,这个数组元素又是uint32_t格式,没看到哪里体现出了RGB565,另外下面的数组元素是38400个,但是括号里写的又是RGB_IMAGE_SIZE =320*240*2=153600,不明白这个用意是啥
5651.jpg
5652.jpg


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-21 14:24:03 | 显示全部楼层
38400  * 4 = 153600
320*240*4 = 153600

没问题啊
回复

使用道具 举报

51

主题

103

回帖

256

积分

高级会员

积分
256
 楼主| 发表于 2025-10-21 14:41:03 | 显示全部楼层
eric2013 发表于 2025-10-21 14:24
38400  * 4 = 153600
320*240*4 = 153600

这么算字节是没问题的,关键是它的代码写的是 uint32_t Image_RGB565[320*240*2],表明这个数组有153600个uint32_t类型的元素,这样算下来,字节总数是153600 * 4 ,是远远超过153600的,但因为实际上它的数组里面只有38400个元素,也就是uint32_t Image_RGB565[320*240*2] ={0X22737465,0X37465544..........}; 括号中只有38400个元素,我不理解它为什么不直接写uint32_t Image_RGB565[38400] ={0X22737465,0X37465544..........};,非要写个153600,然后又没填满,难道是有什么特殊用意?我的图片是uint16_t Image_RGB56[320*240]这种格式的,难道还要转成它这样的格式?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-22 11:05:36 | 显示全部楼层
coolaimcu 发表于 2025-10-21 14:41
这么算字节是没问题的,关键是它的代码写的是 uint32_t Image_RGB565[320*240*2],表明这个数组有153600 ...

const缓冲定义太大了,实际上仅用数组里面展示出来的数据。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-22 04:11 , Processed in 0.041282 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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