This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
3楼 器件资源帖
TVP产品在官网上面能够提供的文档和资源基本都差不多。 比较关键的有几个:
- datasheet 提供软硬件设计的依据
- layout guidelines 这个太关键了。大多数的图像质量问题,和PCB走线设计直接相关。建议画板前好好看看这个文档,避免后面不必要的麻烦。
- EVM相关的文档和软件 需要硬件原理图参考,看EVM的user guide。你需要的寄存器配置表,在EVM配套的软件里可以找到。
- patch code download guidelines 除了配置寄存器表,TVP的片子(除了TVP7002)可以下载厂家提供的patch code来保证配置是针对当前应用最优的。 patch code 下载地址
- EVM和配置实例
关于TVP7002/THS8200,2个片子其实正好形成了一对收发,所以EVM板子我们也做成了一对EVM资料和寄存器表,请直接在http://www.ti.com.cn/tool/cn/tvp7002evm 上下载。
目前这2个片子具体支持了YPbPr/VGA的哪些分辨率, 数字接口是YUV444/422, 还是RGB, 都可以在配置表中的excel文件里找到。http://www.ti.com/cn/lit/zip/slec029 这个文档包括一个excel表,完整地列出了所有已经支持的分辨率和需要配置的寄存器的值;另外的inc和cmd文件其实就列出了哪些寄存器是格式相关寄存器和分辨率帧率相关寄存器。如果客户需要excel之外的分辨率配置,可以参考这个做相应修改。
THS8200和DM642芯片的配置实例可以在http://www.ti.com/cn/lit/pdf/spra961 找到。
除了deyisupport,还可以查看e2e论坛上相应的板块:
TVP5150AM1: http://e2e.ti.com/support/data_converters/videoconverters/f/918.aspx
其他的TVP THS器件: http://e2e.ti.com/support/data_converters/videoconverters/f/376.aspx
4楼 TVP515x 问题
万变不离其宗, 首先要吐血推荐Leon Yu大神总结的帖子,对芯片应用的各方面问题都有涉及 , 应该列为TVP51xx芯片开发不得不看之首:
一个手册里面没有提到的关键参数: TVP5150从CVBS输入,到有数字输出经过的时间,或者称为延时,是3-lines。具体取决于视频制式。所以可以认为TVP5150的延迟非常低,非常适合于高实时性的应用。
下面,讲一讲此类芯片一些基础知识,调试的一些思路:
一些论坛帖子和我遇到的实例:
Video Decoder是需要比较精密的时钟参考,才能准确地去采样视频的。以下是一些例子
http://www.deyisupport.com/question_answer/dsp_arm/f/22/t/17389.aspx
http://www.deyisupport.com/question_answer/dsp_arm/f/22/t/78878.aspx
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/58784.aspx
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/69720.aspx
5楼 TVP7002 问题
TVP7002的寄存器配置,EVM等信息请参考3楼。
对于TVP7002的输出格式的讨论:http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/63245.aspx
如果用TVP7002接入VGA,那么推荐按照VGA接口的规范添加EDID功能(一般是在VGA接口上的I2C上挂EEPROM实现),这样可以确保VGA源给过来的是一个标准VESA时序的信号。
http://www.deyisupport.com/question_answer/dsp_arm/f/22/t/77334.aspx
问题:TVP7002具体支持什么格式和分辨率?
答: TVP7002 可以采集VGA和YPbPr视频输入。输出支持20位BT1120或者外同步方式。截断数据低位就可以用作16bit模式。 具体支持的分辨率,请看3楼链接中slec029a压缩包里面的excel文档,里面都列出来了。
问题: 在slec029a中没有看到YPbPr采集的1080p25p30的配置?
答:http://e2e.ti.com/support/data_converters/videoconverters/f/376/t/129640.aspx 需要外接LMH1980芯片实现。
问题: 在slec029a中没有看到TVP7002支持Data Enable(DE)方式的外同步输出接口?
答:支持的。 MISC Control 2寄存器Test output control 001 = Data Enable output 设置下即可。
6楼 THS8200 问题
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/60058.aspx
THS8200 YUV422->VGA 颜色反掉的问题
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/66541.aspx
THS8200是否支持CVBS输出?
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/66221.aspx
THS8200输出偏亮/偏暗/亮度如何调节?
答:看一下手册关于FSADJ1 和FSADJ2 脚的描述。这两个脚是外接一个电阻到地的。电阻值是用来调整亮度的。而寄存器data_fsadj则是去选择是参考FSADJ1 还是FSADJ2来调整亮度。
问:为什么THS8200输出的VGA图像上出现拉丝现象?(Discrete Sync)
很可能是因为HSync和像素时钟之间不满足建立保持时间要求导致一些HSYNC没有被正确采到。 这种紧张的时序关系很容易导致图像上出现拉丝的现象,和温度也比较相关。 建议可以先用示波器的建立保持时间测量一下。尽量放宽时序margin。
THS8200显示颜色溢出的问题:
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/58177.aspx
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/76312.aspx
http://www.deyisupport.com/blog/b/av_tech/archive/2011/07/20/tvp5150xxx-tvp5151.aspx
EX6:为什么我的图像上锯齿、重影很严重?
An:该类问题通常是由于场的处理造成的,属于系统设计问题。一是看是否分静止和运动。如果静止图像也有严重的锯齿,比如你输入一标准信号,看看水平交界的地方是否有明显的错行问题。如果有,应该是后端CPU奇偶场不分造成的。如果只有运动画面有,应该是后端CPU的de-interlace造成的。
请问这里你提到的YUV文件,是缩放后的CIF还是采集到的原始YUV呢?
你好,Eason
我们用的平台包括dm365和dm368都带了tvp5150,
下面这个链接是我之前问的一个问题,不过没有得到解答,链接如下:
http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/314811/1095670.aspx#1095670
我当时问的问题是,我们的颜色(白色的时候)翩灰色,你可以看前3张图像,后面3张是找的另外一家公司的产品做的对比;
现在我想讨论的是,我们采集出来的图像在两个颜色中的过度阶段出现了锯齿(我只能这样描述),对比下面的图片,他们在两个颜色间的过度是很干净的,我不知到为什么会出现这样的现象?不知到有什么好的解决方法,或者测试方法。我猜因为这样所以我们的视频看起来总是很模糊,尤其在编码后,希望你能帮助我。
非常感谢
你好,Eason
我的板子是EVM6467T,AM1808EVM板子都是TVP5147的AD芯片。
开发板都有720p,1080p的例子。现在我有个半球摄像头,像素比较低。
AN-5321A半球摄像机
像素:PAL:512H×582V NTSC:512H×492V
CCD类型:1/3"SONYCCD
信号制式:PAL/NTSC
分辨率:420TVL
请问:这种PAL的信号应该是CVBS信号,他像素512*582输入经过TVP5147后,是否就是720P的BT.656数据标准数据,而不管前段的CCD摄像头的像素。如果我要评估720P,1080P的例子,需要使用什么类型的摄像头?
5147支持最多D1的分辨率。
而720p和1080p的分辨率都是比这个大的多的。
如果你要评估720p 1080p的例子,你需要看看你的6467板子上是否还有其他的视频接口? 如YPbPr,VGA等? 这个需要具体看你的EVM板子的接口。
另外,据我所知,AM1808应该不能支持720p和1080p采集。
1. TVP515x的数字接口就是10位的YUV口,通过设定寄存器就能采集图像并输出量化数据。
2. 手机芯片应该都是MIPI一类串行接口, 需要用YUV->MIPI的桥片
3. 所以你需要的驱动,无非就是 a) TVP5151要工作,所必须要配置的一组寄存器,这个我们能提供 b) 桥片要工作,所必须要配置的一组寄存器, non-TI c) 配置移动芯片通过MIPI口来采集图像的驱动, non-TI。
你要的这个驱动,ti没有。我可以提供的东西就是a)
BR,
Eason
CVBS1 In, Auto-switch
WR_REG,VID_DEC,1,0x03,0x69 // GPCL HIGH, YUV output enable
WR_REG,VID_DEC,1,0x0F,0x02 // GPCL on INTREQ/GPCL/VBLK pin
WR_REG,VID_DEC,1,0x07,0x20 // Pedestal control on
这样就能跑起来了,默认是自动检测输入格式和分辨率的。 输入是CVBS,输出是656嵌入同步的YUV422数据。
如果有其他的要求,请在手册里面找相应的寄存器,不确定的话请找我。
Hi,
Hsync 在 Active pixel处包络为高电平,是支持的。这个就是常见的DE(Data Enable)模式。 在5151上面的AVID脚输出, 设置一下3.21.4 Miscellaneous Controls Register【2】,3.21.6 Miscellaneous Output Controls Register【1】,3.21.16 Active Video Cropping Start Pixel MSB Register, 3.21.17 Active Video Cropping Start Pixel LSB Register,3.21.18 Active Video Cropping Stop Pixel MSB Register,3.21.19 Active Video Cropping Stop Pixel LSB Register
Vsync这个,没有见过这种时序,应该是不行。
Dear Eason Wang:
您好,非常感谢您的回复,目前初始化的寄存器测试如下:
1.未有图像输出
tvp5150_write_cmos_sensor(0x03,0x6b);
tvp5150_write_cmos_sensor(0x0f,0x02);
2.有图像输出,但是图像会抖动
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x02);
3.有图像输出,但是图像会抖动
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x02);
抖动问题和论坛中的帖子http://www.deyisupport.com/question_answer/dsp_arm/f/22/t/48382.aspx 描述得差不多
如下图整个屏幕都在抖动,特别是红色的区域比较明显,请Eason帮忙分析一下是平台的原因,还是说输入的信号,其他其他的原因导致,非常感谢
2.有图像输出,但是图像会抖动
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x02);
3.有图像输出,但是图像会抖动
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x02);
首先,你的2/3两点, 寄存器值是一样的,是否有遗漏了某种情形?
从寄存器配置上来看, 是没有什么问题的。你可以做的是
1. 回读寄存器确认配置正确无误。
2. 用示波器测量FID管脚确有FID信号输出,能测量到电平跳变并且周期正确。
此外, 和TVP对接的主芯片,那么他们的接口是嵌入式同步还是分离同步?是否接了Hsync,Vsync,FID?
那么主芯片采集端的软件是配置成用嵌入同步还是用分离同步来采集? 按照之前你的描述来看,你只配置了tvp的FID输出,但是主芯片采集端是否配置了分离同步去采集?即使配置了分离同步的采集,那么是否是包含FID的分离同步?
BR,
Eason
Dear Eason Wang:
您好,非常感谢你如此细心的回答。
我先介绍我这边的硬件接法,FID/GLCO和AVID和INTREQ/GPCL/VBLK脚都悬空 ,HVSYN和VSYNC的输出如下图片,我这边咨询了MTK工程师,他们那边
说MTK摄像头采集没有嵌入同步和分离同步采集的说法(有可能是表达方式不一样),所以目前我也不清楚是哪种方式?但目前预览的大小只能设置为320*288才 能让显示满屏。之前描述的寄存器初始化如下。请Eason 帮忙分析抖动的原因跟硬件接法相关还是说跟主控端设置有关,非常感谢。
2.有图像输出,但是图像会抖动
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x02);
3.有图像输出,但是图像会抖动
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x00);
HVSYNC
VSYNC
Dear Eason Wang:
你好,针对如下图片,我这边预览设置为320*240
初始寄存器设置为:
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x02);
如下图可以全屏显示,我把预览设置为320*288,初始寄存器设置为:
tvp5150_write_cmos_sensor(0x03,0x6f);
tvp5150_write_cmos_sensor(0x0f,0x02);
tvp5150_write_cmos_sensor(0x16,0x40);
但是预览还是会抖,我这边再次咨询MTK的工程师采集信号同步的问题,暂时还未回复,请知悉
Hi ,
1. 确认一下,视频源直接连接显示器是否有该问题?
2. 换用不同视频源是否存在该问题?
3. 可以通过测量视频源信号来确认该行数跳变是否来自视频源以及tvp
4. 可以强制tvp芯片按照NTSC或者PAL格式来做采集。3.21.32 Video Standard Register 但是不能强制设定输出的宽高。
5. 3.21.45 Vertical Line Count MSB Register、3.21.46 Vertical Line Count LSB Register这个寄存器可以看TVP上采集上面认到的图像行数。 你提到的高度, 是你主芯片这边检测到的? 307这种也不是标准的D1分辨率吧。 720x576和720x480都不符合。 这个高度是指的什么?
请问TI的官网有没有tvp5150的Demo代码?,如果有,可以给个链接吗,谢谢!
不用专门写驱动,直接I2C配置如下寄存器即可
WR_REG,VID_DEC,1,0x7F,0x00 // Restart CPU
WR_REG,VID_DEC,1,0x0F,0x0A // Select GPCL pin definition
WR_REG,VID_DEC,1,0x03,0x6F // GPCL high (not used), YUV output enable
采集部分,按照BT656的配置即可。
您好,最近在用TVP5147,配置寄存器以后VS/HS、DATACLK等并没有输出波形,我的TVP5147复位引脚直接接的高电平,配置寄存器之前要复位5147一下吗?
这颗芯片需要先复位RESETB脚再做I2C配置的。详细看手册2.8 Reset and Initialization
dear Eason:
多谢回复,新手还望指教。我复位配置完以后,DATACLK没有输出的。(但是示波器捕捉到在复位引脚低电平的时候可以输出26.5Mhz信号)。等到复位信号恢复高电平以后,DATACLK信号就没有了。可能是什么原因呢?(I2C借用的eeprom操作的函数,改了芯片地址)
GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH); // GPIO0[1] 即连接复位引脚,高电平
Delay(0xFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_LOW); // GPIO0[1] 即连接复位引脚,低电平
Delay(0xFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH); // GPIO0[1] 即连接复位引脚,高电平
Delay(0xFFFFF);
// Operation Mode Register 0x03h
EEPROMByteWrite(0x03, 0x01);
EEPROMByteWrite(0x03, 0x00);//两个
Delay(0xFFFFF);
//Output Formatter 2 Register 34h 输出形式
EEPROMByteWrite(0x34, 0x11);
//Input Select Register 0x00h
EEPROMByteWrite(0x00, 0x06);
// AutioSwitch 04h 0x01 NTSC 待定
EEPROMByteWrite(0x04, 0x7F);
// Video Standard Register 02h 0x00 PAL
EEPROMByteWrite(0x02, 0x00);
//Luminance Processing Control 3 Register 08h
EEPROMByteWrite(0x08, 0x00);
//Chrominance Processing Control 2 Register 0Eh色度处理
EEPROMByteWrite(0x0E, 0x04);
我想你可能需要先确认一下芯片的逻辑有没有正常跑起来。
- 是否确认过RESETB拉低和拉高是在I2C配置之前发生的,并且按照手册要求间隔至少1ms? RESETB脉冲是否能保证200ns至少?
- 通过I2C去回读已配置的寄存器,是否能验证写入正确?
- 接上摄像头,去读一些状态寄存器,从侧面看看芯片是否工作正常。如2.11.35 Status 1 Register
Vertical sync lock status Horizontal sync lock status
BR,
Eason
reg_val = CodecRegRead(baseAddr, 0x0E); //读取寄存器
结果都是读出来的地址,比如0x0e
/****************************************************************************/
/* */
/* 读寄存器 */
/* */
/****************************************************************************/
unsigned char CodecRegRead(unsigned int baseAddr, unsigned char regAddr)
{
#ifdef CODEC_INTERFACE_I2C
// 发送寄存器地址
slaveData[0] = regAddr;
I2CCodecSendBlocking(baseAddr, 1);
// 接收寄存器返回数据
I2CCodecRcvBlocking(baseAddr, 1);
#endif
return (slaveData[0]);
}
看到你的另外一个帖子,感觉你的I2C操作本身可能还有问题。
一个建议是你用I2C去操作一下板上的其他I2C设备,或者从其他已经验证过的板子上I2C跳线过来配置一下5147看看。
这个问题我们放到你新开的帖子去讨论吧。
dear Eason:
最近我在调试经itop4412驱动的tvp5150的视频采集程序,经过处理输出的视频会有轻微的抖动,可以帮我分析一下原因吗?需要那些信息可以直接回复我,非常感谢。
尚不清楚是在de-interlace前或者之后发生的上下偏移。建议你导出奇、偶场图片对照下,是否5150的输出就是有上下抖动。
如果的确是5150的输出就有抖动,你需要看看 status寄存器里面是否存在vertical lock/horizontal lock失锁的状况发生