你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32N6的DCMIPP能直接把接收到的YUV422数据转化成RGB565吗

[复制链接]
zhangzyem 提问时间:2025-7-16 15:29 / 未解决

1、问题描述

在使用XS9950解码器芯片向STM32N6发送CSI图像时,获取的YUV数据经DCMIPP转换。若转出格式设置为YUV422_1,则获取的图像为黑白色;若转出的格式设置为RGB565_1,则获取的图像发紫。我们最终要获取RGB565格式的图像进行AI识别。为什么DCMIPP转出的图片呈现为紫色?

注:上面提到的图像设置是hal库的DCMIPP_PipeConfTypeDef结构提的PixelPackerFormat设置。

2、图像接收测试

发送端:XS9950芯片,YUV422_8bit  YUYV

接收端:STM32N6,PixelPackerFormat设置为YUV422_1

image.png

图像为黑白色

发送端:XS9950芯片,YUV422_8bit  YUYV

接收端:STM32N6,PixelPackerFormat设置为RGB565_1 image.png

图像为紫色

3、单色测试

发送端:XS9950芯片,YUV422_8bit  YUYV

颜色设置:(Y-U-V) 0xeb  0x80  0x80 白色

接收端:STM32N6,PixelPackerFormat设置为YUV422_1

PIPE1最终传出数据

image.png

PIPE1最终传出图像 image.png

颜色显示为白色,是正常显示

发送端:XS9950芯片,YUV422_8bit  YUYV

颜色设置:(Y-U-V) 0xeb  0x80  0x80

接收端:STM32N6,PixelPackerFormat设置为RGB565_1

PIPE1最终传出数据 image.png PIPE1最终传出图像 image.png

看起来YUV的颜色数据是正确的,为什么换成RGB输出后图像颜色变化了?

4、关于RGB888还是YUV444的问题

此选项指示数据为RGB888还是YUV444? image.png

发送端:XS9950芯片,YUV422_8bit  YUYV

颜色设置:(Y-U-V) 0xeb  0x80  0x80

接收端:STM32N6,PixelPackerFormat设置为RGB888_YUV444_1

PIPE1最终传出数据 image.png

假设这里都数据是RGB888数据那么则与输入数据完全一致,即PIPE1直接把接收到的YUV数据当作了RGB数据。

R = 0x80 = 128 (十进制)

G = 0xEB = 235 (十进制)

B = 0x80 = 128 (十进制)

转为RGB565

R: 5 位 (0-31),映射 0-255 到 0-31:128 * 31 / 255 ≈ 15.6 → 16 =  10000b

G: 6 位 (0-63),映射 0-255 到 0-63:235 * 63 / 255 ≈ 58.0 → 58 =  111010b

B: 5 位 (0-31),映射 0-255 到 0-31:128 * 31 / 255 ≈ 15.6 → 16 =  10000b

1000011101010000b=0x8750

与单色测试设置RGB565的输出数据基本一致,说明PIPE1直接把YUV的数据当成RGB的数据进行映射。

5、我的设置代码如下图,是否DCMIPP能接收YUV数据转出RGB565颜色格式数据?还是有其他什么地方没有配置到? image.png

1752650050269.jpg
image.png
收藏 评论1 发布时间:2025-7-16 15:29

举报

1个回答
butterflyspring 回答时间:昨天 14:35
目前看来,YUV422 的数据在 DCMIPP 转成 RGB565 时,高低字节顺序反了,需要调整高低字节顺序。
如果YUV数据用于显示,可以直接用YUV格式

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版