STM32
直播中

陈超

7年用户 946经验值
私信 关注
[问答]

将YCbCr转换成RGB565,并丢到显示RAM中去,为什么显示的图像不对?

我现在已经写好了代码,将YCbCr转换成RGB565,并丢到显示RAM中去了,但是显示的图像还是不对。不知道哪里出了问题,我TW9912设置的问题还是YCbCr转换成RGB565的算法的问题。
还有如下几个疑问:
1:我现在采用的是硬件同步方法,就是设置TW9912输出VSYNC,和HSYNC信号,通过F4的这两个信号作为图像采集同步信号获得数据。设置后,数据是收到了,但看图像数据有点不大对头,每个收到的32BIT数据大体都相同,显示出来的图像也不对,所以很怀疑采用VSYNC,和HSYNC输出信号这样方法对于TW9912是否可行?我在网上看到有人用TVP5150作为视频解码芯片,就是采用TVP5150输出的VSYNC,和HSYNC作为同步信号的,按道理又应该可以的啊;
2:TW9912规格书上说该芯片输出采用BT656格式,这个格式我在网上看到的资料都是介绍将VSYNC,和HSYNC这两个信号放在数据区里边的,外面没有。如果将这两个放在数据区的话,采用逐行扫描的话应该如何配置F4的几个标志寄存器,有这么用过的?
3:也请帮忙扫扫盲,所谓逐行是否是先传一行奇数行再传一行偶数行。。。直到一帧完全传完?看过网上的一些资料,隔行扫描的话是先传所有奇数行再传所有偶数行,所以这样的话在将图像显示前需要先将奇数行和偶数行合并重组才能正常显示。


回帖(1)

吴凡

2024-5-11 17:32:30
首先,我们需要逐步检查可能的问题。以下是一些建议:

1. 检查YCbCr到RGB565的转换算法:确保你的转换算法是正确的。YCbCr到RGB565的转换涉及到一些特定的公式,如下所示:

   R = Y + 1.0 * Cr
   G = Y - 0.344 * Cb - 0.714 * Cr
   B = Y + 1.772 * Cb

   将这些值转换为0-31的范围内(因为RGB565使用5位表示红色和蓝色,6位表示绿色),然后组合成一个16位的RGB565值。

2. 检查TW9912的设置:确保你正确地配置了TW9912的寄存器,以获取正确的图像数据。这包括设置正确的输入格式、分辨率等。

3. 检查硬件同步方法:你提到使用VSYNC和HSYNC信号作为图像采集同步信号。确保这些信号被正确地生成和处理。如果可能的话,尝试使用其他同步方法,如行同步或场同步,以排除硬件同步方法的问题。

4. 检查显示RAM的写入过程:确保你正确地将RGB565数据写入显示RAM。这包括正确的内存寻址和数据写入顺序。

5. 检查图像数据:你提到收到的32位数据大体相同。这可能表明图像数据在采集或传输过程中存在问题。检查图像采集过程,确保数据被正确地采集和传输。

6. 检查TW9912的数据手册:仔细阅读TW9912的数据手册,以确保你正确地遵循了所有必要的步骤和设置。

7. 考虑使用其他视频解码器:你提到在网上看到有人使用TVP5150作为视频解码器。如果TW9912存在问题,你可以考虑尝试使用其他视频解码器,如TVP5150,以排除TW9912的问题。

通过逐步检查这些方面,你应该能够找到问题的根源并解决它。祝你好运!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分