Part Number: DS90UB983-Q1
我使用的是983 CS2.0串行器,
所以
Part Number: DS90UB983-Q1
我使用的是983 CS2.0串行器,
你好,
第一个问题:1.0 版本和 2.0 版本之间做了哪些更改?为什么在 2.0 版本中需要设置寄存器 29 (0C) 才能点亮屏幕?
我需要研究一下 CS1.0 和 CS2.0 之间的差异才能给出确切答案,但我初步猜测这是由于默认寄存器值的变化造成的。对于 983 来说,使用内部时序通常更稳定,因为我们需要在板载上提供一个 27MHz 的参考时钟信号。如果您希望我进一步调查,请告诉我,但我建议您始终将该寄存器写入 0xC0,除非您正在对外部视频信号进行针对性调试。
第二个问题:外部时序设置和内部时序设置有什么区别?
外部时序设置会强制 983 从外部视频源获取其 PATGEN 时钟信号,而不是从 983 板载的参考时钟信号获取。相反,内部时序设置会强制 983 从内部参考时钟信号获取其 PATGEN 时钟信号。
三个问题:为什么在 2.0 版本中需要配置 2b 寄存器?如果不配置,屏幕显示会异常。
您提供的第二个代码块将 PATGEN 间接寄存器编程为您想要显示的特定视频时序。我建议您每次都对这组寄存器进行编程,无论您使用的是 CS1.0 还是 CS2.0。至于为什么在 CS1.0 中不需要编程,而在 CS2.0 中却需要,很可能是因为默认寄存器值不同。CS2.0 中的默认寄存器值可能与您尝试显示的内容不同。根据数据手册,默认信号似乎是 1920x1080p,因此可能与您需要的时序略有偏差。
一般来说,在对 98x FPD-Link 设备进行编程时,我建议使用 FPD-Link CDDS 中的 ScriptGen 工具。该工具可根据客户需求进行配置,并生成包含最新代码建议的定制化平面脚本。
如果您还有其他问题,请告诉我。
最好的,
卡梅伦
Hi,
我重新更清晰的描述我的背景和问题,这样更有助于理解我的问题
背景:我们之前使用的型号是 PDS90HH983BARURTQ1,后来第二次采购的是PDS90HH983CARURTQ1
第二次采购的PDS90HH983CARURTQ1,我们这里点不亮屏,所以改动了Set patgen配置中 0x29寄存器的值从0x08改成了0x0C
根据983寄存器datasheet可以看出第三个bit PATGEN_TSEL的区别,视频流来自于外部还是内部
配置0x29 寄存器为0x08的时候VP0的配置是(下面这些配置统称为区域一)
WriteI2C(serAddr, 0x40, 0x32);
WriteI2C(serAddr, 0x41, 0x01);
WriteI2C(serAddr, 0x42, 0xa8); // 设置VP_SRC_SELECT为Stream 0以使用SST模式
WriteI2C(serAddr, 0x41, 0x02);
WriteI2C(serAddr, 0x42, 0x80); // VID H Active
WriteI2C(serAddr, 0x42, 0x07); // VID H Active
WriteI2C(serAddr, 0x41, 0x10);
WriteI2C(serAddr, 0x42, 0x80); // Horizontal Active
WriteI2C(serAddr, 0x42, 0x07); // Horizontal Active
WriteI2C(serAddr, 0x42, 0x20); // Horizontal Back Porch
WriteI2C(serAddr, 0x42, 0x00); // Horizontal Back Porch
WriteI2C(serAddr, 0x42, 0x20); // Horizontal Sync
WriteI2C(serAddr, 0x42, 0x00); // Horizontal Sync
WriteI2C(serAddr, 0x42, 0x00); // Horizontal Total
WriteI2C(serAddr, 0x42, 0x08); // Horizontal Total
WriteI2C(serAddr, 0x42, 0xd0); // Vertical Active
WriteI2C(serAddr, 0x42, 0x02); // Vertical Active
WriteI2C(serAddr, 0x42, 0x08); // Vertical Back Porch
WriteI2C(serAddr, 0x42, 0x00); // Vertical Back Porch
WriteI2C(serAddr, 0x42, 0x08); // Vertical Sync
WriteI2C(serAddr, 0x42, 0x00); // Vertical Sync
WriteI2C(serAddr, 0x42, 0x2d); // Vertical Front Porch
WriteI2C(serAddr, 0x42, 0x00); // Vertical Front Porch
WriteI2C(serAddr, 0x41, 0x27);
WriteI2C(serAddr, 0x42, 0x00);
配置0x29 寄存器为0x0C的时候VP0的配置比上方多了(下面这些配置统称为区域二)
WriteI2C(serAddr,0x41,0x2a); //Set patgen address
WriteI2C(serAddr,0x42,0x86); //Set patgen address auto increment
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x0); //Set patgen THW 2048
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x8); //Set patgen THW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x0D); //Set patgen TVW 781
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x03); //Set patgen TVW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x80); //Set patgen AHW 1920
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x7); //Set patgen AHW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0xd0); //Set patgen AVW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x2); //Set patgen AVW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x20); //Set patgen HSW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x0); //Set patgen HSW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x8); //Set patgen VSW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x0); //Set patgen VSW
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x20); //Set patgen HBP
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x0); //Set patgen HBP
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x8); //Set patgen VBP
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x0); //Set patgen VBP
WriteI2C(serAddr,0x41,0x2a);
WriteI2C(serAddr,0x42,0x96);
WriteI2C(serAddr,0x41,0x2b);
WriteI2C(serAddr,0x42,0x0); //HSYC Polarity = +, VSYNC Polarity = +
一开始我这里配置0x29 寄存器为0x0C时并未加入新增的区域二这些寄存器配置
发现屏虽然可以点亮,但是会有各种异常,比如屏闪,reset以后屏不亮
加入区域二,一切都正常了
由此产生了几个问题:
1: PDS90HH983BARURTQ1 和PDS90HH983CARURTQ1做了什么改动,导致需要改0x29 寄存器为0x0C才可以点亮屏?
Best Regards
Chen Shaojie