一起来攻克S5pv210 HDMI(作者 gooogleman)

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

 //--------------------------------------------------------------------------------------

// 作者:gooogleman

// 平台:Sate210(wince6.0 R3)

// 日期:2011.11.17

//---------------------------------------------------------------------------------------

    Sate210 经过数个月的调试,VGA,串口,IIC,5150模拟摄像头,以及数字摄像头OV364已经经过稳定性测试,LCD也支持4.3 寸和七寸,并且触摸经过改良,没有任何抖动,并且还增加了PWM 背光控制LCD亮度,基本上功能和性能都接近产品,达到我们设计接近产品的目的,现在是搞HDMI的时候了。

   硬件一直由另外一个队友负责,后来我看官方S5pv210 PCB layout 说明对HDMI的PCB走线做了比较深刻的探讨,居然频率高达1.6G,要求附近不能有晶振这种干扰源,并且尽量短,线的间距也有严格控制,阻抗也要控制,这些东西如果做得不好,肯定发挥不出S5pv210的 HDMI的强大功能,现在这些都有待验证,不过现在首先要让HDMI能出图像先。

    在官方BSP的 DOC下面,看BSP的 release note,里面从2010年三月份三星第二次BSP就已经支持HDMi驱动的了,最高支持1080I,我用的BSP是201004月份的,所以问题不大。但是三星棒子没给HDMI应用,我根据网上的修改,写了个demo 就是不出图像,着急死俺了。

    BSP的 DOC文件夹的TVOUT 文档说明有关于HDMI的部分如下:

 HMDI Initialization Sequence
If you use the HDMI, you should check HPD status and read HDMI support information
1st Step: Read HPD status
DeviceIoControl(m_hTVoutDrv, IOCTL_HDMI_GET_HPD_STATUS, NULL, 0, &bHpdStatus, sizeof(BOOL),
&dwBytes, NULL)
 

2nd Step: If HPD status is plugged, you should read HDMI available mode.
DeviceIoControl(m_hTVoutDrv, IOCTL_HDMI_AVALIABLE_MODE, NULL, 0, &tMode,
sizeof(STDA_ARG_HDMI_AVAILABLE_MODE), &dwBytes, NULL)
 
3rd Step: You should decide HDMI mode what displayed on HDTV (480p, 720p…).
4th Step: Initialize HDMI
DeviceIoControl(m_hTVoutDrv, IOCTL_STDA_TVOUT_INIT_INTERFACE_PARAM, &m_tTvOut,
sizeof(TVOUT_OUTPUT_IF), NULL, 0, &dwBytes, NULL); 
 5th Step: Initialize HDCP (If you want to use HDCP. It is an optional step.)
DeviceIoControl(m_hTVoutDrv, IOCTL_STDA_HDMI_INIT_HDCP_EN, &m_bHDCP, sizeof(BOOL), NULL, 0,
&dwBytes, NULL);
 
6th Step: Initialize HDMI Audio
DeviceIoControl(m_hTVoutDrv, IOCTL_STDA_HDMI_INIT_AUDIO, &m_audioType, sizeof(HDMI_AUDIO_TYPE),
NULL, 0, &dwBytes, NULL);
 
7th Step: Start TVOut Interface
DeviceIoControl(m_hTVoutDrv, IOCTL_STDA_TVOUT_START, NULL, 0, NULL, 0, &dwBytes, NULL);
  

 

但是在HDMI驱动里面有些IOCTL 控制字都找不到,三星也太那个了,明天继续看这个驱动,希望早日出图,先睡觉了,加油。

 

搞了两天,还是IIC驱动有问题。

 

哎,怪事。

 

[HDM[31m[IIC_IST:E] SLAVE(0xA0) DETECTION IS FAILED & RECOVERY STAGE
[0m[31m[Read_HDMI_I2C] IOCTL_I2C_GENERAL_READ ERROR: 31
[0m[EDID: ReadEDIDBlock] Fail to read  : 0th EDID Block

 

[HDMI: HDMICoreReset] pHDMISSReg->HDMI_CORE_RSTOUT=0x1

[HDMI: HDMICheckPhyReady] 1

[HDMI: HDMICheckPhyReady] Successed to hdmi phy on [pHDMICoreReg->HDMI_PHY_STATUS=0x1]

-- SetHDMIPHY

-- HDMISetVideoMode

++ HDMIAudioEnable

-- HDMIAudioEnable

++ HDMIStart

[libhdmi: HDMIStart] HDMI CON0 = 0x05!!!

-- HDMIStart

[TVOUT] ++STDA_HDMI_HpdSetMode(hdmiPinStatus=1, updateStatus=1)

PhysicalIRQ =0x4c
[TVINTR] HDMI_INTC_FLAG[0x8]

[HDMI: HPDEventHandler]!!!

[HPDEventHandler] clear pending for HPD PLUG, Interrupt Enable = 0x44, Interrupt Status = 0x00

[TVINTR] uiHdmiIntcFlag=[0x8]

[TVOUT] ++STDA_HDMI_read_edid_info()

[EDID: EDIDInit]

[Open_HDMI_I2C] I2C OPEN : I2C1: SUCCESS
[Init_HDMI_I2C] ACTUAL I2C CLCOK SPEAD : 64 Khz
[Open_HDMI_I2C] I2C OPEN : I2C1: SUCCESS
[Init_HDMI_I2C] ACTUAL I2C CLCOK SPEAD : 64 Khz
[Open_HDCP_I2C] I2C OPEN : I2C1: SUCCESS
[Init_HDCP_I2C] ACTUAL I2C CLCOK SPEAD : 64 Khz
[EDID: EDIDRead] EDIDRead()!!!

[EDID: ReadEDIDBlock] segnum : 0, addr: 160, offset: 0, size: 128, buffer = 0xD318FD38

[HDM[31m[IIC_IST:E] SLAVE(0xA0) DETECTION IS FAILED & RECOVERY STAGE
[0m[31m[Read_HDMI_I2C] IOCTL_I2C_GENERAL_READ ERROR: 31
[0m[EDID: ReadEDIDBlock] Fail to read  : 0th EDID Block

[EDID: EDIDDeInit]

I: HPDStart] HDMI Subsystem register 0x44!!!

[TVOUT] --STDA_HDMI_HpdSetMode()

[VMIXER]++VMixer_initialize_layer(0,1,0,0,2,4,0,0,0,0x0,0x27000000,1280,1280,720,0,0,50,24)

pPMCtxt->bHPDStatus = (1)

 

 ----------------嘿嘿,这么多人关注啊。在这里告诉大家,我的在去年年底搞定了,官方的BSP已经支持720P的,wince的,只要硬件没错,就会出来的。所以请各位不出来的检查一下自己的硬件连线啊!要仔细,最好用HDMI大的座子,这个焊接比较可靠,以前我用小的,不怎么行啊!后来换个像电脑一样的就可以了。

 

           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值