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.

tvp5146pfp 无法检测视频输入

Other Parts Discussed in Thread: TVP5146, TVP5147, TVP5146M2

使用dm365,dvsdk4。电路图是按照瑞泰创新的图画的,但是有个不一样的地方

(1)买芯片的时候不知道有tvp5146m2pfp和tvp5146pfp,用了tvp5146pfp。

(2)因为莲花头放在面板上,所以使用的是莲花头进来之后用大约2跟15cm的线引到到的电路板上。

现在问题是tvp5146无法检测到视频输入,出错相关信息如下:

(1)正常启动encode的出错信息

./encode -v test.264  -y 2 -r 352x288

Encode demo started.

Failed to detect video standard, video input connected?

...

对应的源代码如下:

   if (Capture_detectVideoStd(NULL, &videoStd, &cAttrs) < 0) {

       ERR("Failed to detect video standard, video input connected?\n");

       cleanup(THREAD_FAILURE);

   }

(2)加入DMAI_DEBUG之后的出错信息

DMAI_DEBUG=2 ./encode -v test.264  -y 2 -r 352x288

Encode demo started.

@0x000e5cdc:[T:0x4001f800] ti.sdo.dmai - [Dmai] Dmai log level set to '2'. Note that calling CERuntime_init after this point may cause unexpected change to .

@0x000e6cc8:[T:0x40c29490] ti.sdo.dmai - [Capture] Composite input selected

@0x0025d0dc:[T:0x40c29490] ti.sdo.dmai - [Capture] ERRNO (22) 《《出错

@0x0025d65d:[T:0x40c29490] ti.sdo.dmai - [Capture] Failed to set video input to 0 (Invalid argument)

(3)内核启动的相关信息:

root@dm365-evm:~/dm365# dmesg

。。。。。。

Linux video capture interface: v2.00

vpfe_init

vpfe-capture: vpss clock vpss_master enabled

vpfe-capture vpfe-capture: v4l2 device registered

vpfe-capture vpfe-capture: video device registered

EVM: switch to tvp5146 SD video input

tvp514x 1-005d: tvp514x 1-005d decoder driver registered !!

vpfe-capture vpfe-capture: v4l2 sub device tvp5146 registered

vpfe_register_ccdc_device: DM365 ISIF

DM365 ISIF is registered with vpfe.

af major#: 251, minor# 0

AF Driver initialized

aew major#: 250, minor# 0

AEW Driver initialized

<davinci_display_init>

。。。。。

(4)系统调用的相关信息

root@dm365-evm:~/dm365# cat /proc/kallsyms|grep tvp

c001cfb8 t tvp514x_init

c0025160 t __initcall_tvp514x_init6

c022ce64 t tvp514x_remove

c022ce90 t tvp514x_g_fmt_cap

c022cf18 t tvp514x_g_ctrl

c022d030 t tvp514x_enum_fmt_cap

c022d0d0 t tvp514x_read_reg

c022d138 t tvp514x_get_current_std

c022d190 t tvp514x_s_parm

c022d1f0 t tvp514x_try_fmt_cap

c022d320 t tvp514x_s_fmt_cap

c022d3ac t tvp514x_g_parm

c022d428 t tvp514x_write_reg

c022d494 t tvp514x_s_std

c022d564 t tvp514x_s_ctrl

c022d764 t tvp514x_write_regs

c022d7ec t tvp514x_s_stream

c022dba8 t tvp514x_querystd

c022dcdc t tvp514x_s_routing

c022deb4 t tvp514x_queryctrl

c022dfd4 t tvp514x_probe

c031d460 t tvp514x_dev

c031d6e8 t tvp514x_ops

c031d708 t tvp514x_id

c031d780 t tvp514x_fmt_list

c031d7c0 t tvp514x_core_ops

c031d800 t tvp514x_video_ops

c031d854 t tvp5146_init_reg_seq

c031d8b4 t tvp514xm_init_reg_seq

c031d8cc t tvp5147_init_reg_seq

  • 找了n长时间,实在不知道问题在哪里,只好来这里请教大家了。不知道还可以提供什么信息?

  • 1,请使用TVP5146M2,之前的TVP5146会有bug(但是它并不会出现你说讲的测不到信号的错误)。

    2,请在选择好端口(register 0x00)后,直接读出register 0x3a,0x3f的值,通过寄存器判断tvp5146m2的工作状态。

  • 现在是芯片已经焊上去了,吹下来更麻烦啊,而且说不定会引起其他问题

  • 我在瑞泰的评估板(tvp5146m2pfp)和我自己的板上(tvp5146pfp)上各走了1遍:先不接视频启动程序,然后再接视频启动程序

    (1)tvp5146m2不解视频,程序输出如下:

    Encode demo started.

    EVM: switch to tvp5146 SD video input

    set[e8]=02

    set[e9]=00

    set[ea]=80

    set[e0]=01

    set[e8]=60

    set[e9]=00

    set[ea]=b0

    set[e0]=01

    set[e0]=00

    set[03]=01

    set[03]=00

    get[80]=51

    get[81]=46

    get[70]=08

    tvp514x_detect,497:81,70,8

    tvp514x 1-005d: tvp5146 (Version - 0x08) found at 0xba (DaVinci I2C adapter)

    set[00]=05

    set[01]=0f

    set[02]=00

    set[03]=00

    set[05]=10

    set[06]=00

    set[07]=00

    set[08]=02

    set[09]=80

    set[0a]=80

    set[0b]=80

    set[0c]=00

    set[0d]=00

    set[0e]=0e

    set[10]=80

    set[11]=80

    set[12]=80

    set[14]=80

    set[32]=0c

    set[33]=00

    set[34]=11

    set[35]=ee

    set[36]=af

    set[37]=ff

    set[38]=ff

    set[39]=01

    set[02]=00

    tiMessage: main.c:  hRendezvousCapStd   waiting

    set[00]=05

    get[33]=00

    set[33]=00

    set[39]=01

    get[20]=00

    get[3f]=81

    get[3a]=11

    tiError: Failed to detect video standard, video input connected?

    (2)然后tvp5146m2接上视频,再次启动程序,输出如下:

    Encode demo started.

    tiMessage: main.c:  hRendezvousCapStd   waiting

    set[02]=00

    set[00]=05

    get[33]=00

    set[33]=00

    set[39]=01

    get[02]=00

    get[3f]=82

    get[3a]=6e

    set[02]=02

    EVM: switch to tvp5146 SD video input

    set[02]=00

    set[00]=05

    get[33]=00

    set[33]=00

    set[39]=01

    get[02]=00

    get[3f]=82

    get[3a]=6e

    set[02]=02

    成功

    (3)在我的板上tvp5146pfp,不接视频,输出如下:

    EVM: switch to tvp5146 SD video input

    Encode demo started.

    tvp5146:set[e8]=02

    tvp5146:set[e9]=00

    tvp5146:set[ea]=80

    tvp5146:set[e0]=01

    tvp5146:set[e8]=60

    tvp5146:set[e9]=00

    tvp5146:set[ea]=b0

    tvp5146:set[e0]=01

    tvp5146:set[e0]=00

    tvp5146:set[03]=01

    tvp5146:set[03]=00

    tvp5146:get[80]=51

    tvp5146:get[81]=46

    tvp5146:get[70]=03

    tvp514x 1-005d: tvp5146 (Version - 0x03) found at 0xba (DaVinci I2C adapter)

    tvp5146:set[00]=05

    tvp5146:set[01]=0f

    tvp5146:set[02]=00

    tvp5146:set[03]=00

    tvp5146:set[05]=10

    tvp5146:set[06]=00

    tvp5146:set[07]=00

    tvp5146:set[08]=02

    tvp5146:set[09]=80

    tvp5146:set[0a]=80

    tvp5146:set[0b]=80

    tvp5146:set[0c]=00

    tvp5146:set[0d]=00

    tvp5146:set[0e]=0e

    tvp5146:set[10]=80

    tvp5146:set[11]=80

    tvp5146:set[12]=80

    tvp5146:set[14]=80

    tvp5146:set[32]=0c

    tvp5146:set[33]=00

    tvp5146:set[34]=11

    tvp5146:set[35]=ee

    tvp5146:set[36]=af

    tvp5146:set[37]=ff

    tvp5146:set[38]=ff

    tvp5146:set[39]=01

    tvp5146:set[02]=00

    tiMessage: main.c:  hRendezvousCapStd   waiting

    tvp5146:set[00]=05

    tvp5146:get[33]=00

    tvp5146:set[33]=00

    tvp5146:set[39]=01

    tvp5146:get[02]=00

    tvp5146:get[3f]=81

    tvp5146:get[3a]=11

    tvp5146:get[02]=00

    然后提示没有连接

    (4)在我的板上tvp5146pfp,接上视频,输出如下:

    Encode demo started.

    EVM: switch to tvp5146 SD video input

    tvp5146:set[02]=00

    tiMessage:      main.c:  hRendezvousCapStd   waiting

    tvp5146:set[00]=05

    tvp5146:get[33]=00

    tvp5146:set[33]=00

    tvp5146:set[39]=01

    tvp5146:get[02]=00

    tvp5146:get[3f]=02

    tvp5146:get[3a]=71

    然后提示没有连接

    说明:(1)上面信息中,其中一些不相关的或者重复的去掉了。

    (2)因为每次开机第一次运行的时候,程序需要检测芯片和做一些初始化的工作,所以2个机器上第一次和第二次运行信息量差别比较大。

  • 只看这几个寄存器的话,就是这样

    m2不接视频-》:   get[02]=00,get[3f]=81,get[3a]=11

    m2接视频-》:get[02]=00,get[3f]=82,get[3a]=6e

    pfp不接视频-》:get[02]=00,get[3f]=81,get[3a]=11

    pfp接视频-》:get[02]=00,get[3f]=02,get[3a]=71

  • 不知道这些信息能否有用?

  • 你有没有用其他的源来做过测试的?

    这个芯片很容易做re-work啊,建议按照Leon的建议换片子试试

    如果你确认自己的原理图设计并没有问题,建议和原版的硬件测量输入端信号对比看看

  • 问题解决了。是因为晶振不起振。最后(1)将芯片换成了tvp5146M2(2)将无源的谐振器换成了有源的振荡器。但是还是没有搞明白,为什么晶振不起振?

  • you wang 于 2012-11-14 18:47 发表了以下帖子 :

    问题解决了。是因为晶振不起振。最后(1)将芯片换成了tvp5146M2(2)将无源的谐振器换成了有源的振荡器。但是还是没有搞明白,为什么晶振不起振?

    我遇到同样问题。检测晶振,发现不起振。有没有进一步研究,为什么不起振?

    是否匹配的电容计算错误?我用33pF?

    是否100K并联电阻有问题?EVM也是这样使用。

  • 到正规渠道购买器件就对了。电路没有问题。匹配电容即使有点误差也不会导致晶振不起振。

  • 问题解决了。

    我这个情况,是由于 pin76  PLLA_1V8未连接导致。

  •  补充一下, Crystal是无源的,所以要使之起振必须在振荡电路上加电压的。 所以电源没接->没有电压->Crystal不起振。

    在排查Crystal不起振的问题时,最好测量下晶振端上是否有直流偏置加载上面。

    而有源晶振,是自带电源输入管脚并集成了振荡电路的,换言之,只要加上电压(有些是存在EN脚)即可自行起振,和所接数字芯片没有关系。