AM3517 WINCE7 Camera Driver --TVP5150 配置

TVP5150am1输入:制式:PAL(BGHIN)ITU-RBT601 interlaced扫描  CVBS(composite)  AIP1A输入  

                     输出:8bit ITU-R BT656 embeded sync output


一:TVP5150简单介绍

支持输入:两路CVBS 或 一路SVIDEO

支持输入格式:PAL   NTSC    SECAM

输出格式:内嵌同步:8bit ITU-RBT656 和8bit 4:2:2 YCbCr     分离同步:8bit 4:2:2YCbCr

注:5150和5146的差别还是挺大


二:TVP5150寄存器配置

1.datasheet参考如下

 

从上面可见CVBS输入只需要设置0x03寄存器即可,确实,最后我也只设置了这一个寄存器,其他都是default

寄存器对照datasheet详细的看了一番,下面简单介绍下几个重要的寄存器

1.0x01:选择CVBS 还是SVIDEO输入,选择1口还是2口输入

2.0x03:最重要的寄存器,设置输出口Y0-Y7输出,始终输出,不然后端没有视频数据输出

3.0x04和0x28:配合选择制式的,但是5150比5146先进就是可以auto选择制式格式,这里只要default就自动选择了

4.0x0d:设置输出格式的


三:需要修改TI camera driver的几处地方camera/pdd/tvpctrl.cpp

1.初始化,肯定的,一般寄存器setting放在单独的一个文件当中

BOOL CTvpCtrl::Init(PVOID MDDContext)
{
    RETAILMSG(ZJKtvp_DEBUGMSG,(TEXT("ZJK:CTvpCtrl::Init--CAM_PDD_TvpCtrl.cpp\r\n")));//add by zjk
	// Read parameters from registry
    if (GetDeviceRegistryParams(
        (LPCTSTR)MDDContext, 
        &m_pTvpConfig, 
        dimof(s_deviceRegParams), 
        s_deviceRegParams) != ERROR_SUCCESS)
    {
        DEBUGMSG(ZONE_ERROR, (TEXT("ERROR: CTvpCtrl::Init - Error reading from Registry.\r\n")));
        return FALSE;
    }

	if (m_pTvpConfig.dwI2CAddr == 0)
	{
        DEBUGMSG(ZONE_ERROR, (TEXT("ERROR: CTvpCtrl::Init - Wrong I2C address read from registry\r\n")));
        return FALSE;
	}
/*  add by zjk because tvp5140 reset connect by baseboard reset key
	if (m_pTvpConfig.dwResetGpio != (DWORD)-1)
	{
		HANDLE hGpio = GPIOOpen();
	  
		Sleep(20);
		GPIOClrBit(hGpio, m_pTvpConfig.dwResetGpio);
		GPIOSetMode(hGpio, m_pTvpConfig.dwResetGpio, GPIO_DIR_OUTPUT);
		Sleep(20);
		GPIOSetBit(hGpio, m_pTvpConfig.dwResetGpio);
		GPIOSetMode(hGpio, m_pTvpConfig.dwResetGpio, GPIO_DIR_OUTPUT);

		GPIOClose(hGpio);
	}*/
	RETAILMSG(ZJKtvp_DEBUGMSG,(TEXT("ZJK:CTvpCtrl::Init--before I2CInit()\r\n")));//add by zjk
	I2CInit();
    RETAILMSG(ZJKtvp_DEBUGMSG,(TEXT("ZJK:CTvpCtrl::Init--after I2CInit() \r\n")));//add by zjk
	if (m_hI2C != NULL)
	{
		for(UINT i=0;i<num_tvp_settings;i++)
		{
			WriteReg(tvpSettings[i].reg, tvpSettings[i].val);
		}
	}

	I2CDeinit();    

    return TRUE;                
}   

2.打开开关

BOOL CTvpCtrl::SetPowerState(BOOL PowerOn)
{
	RETAILMSG(ZJKtvp_DEBUGMSG,(TEXT("ZJK:CTvpCtrl::SetPowerState--CAM_PDD_TvpCtrl.cpp\r\n")));//add by zjk
    I2CInit();
    //WriteReg(REG_OPERATION_MODE, PowerOn ? 0x00 : 0x01);
	WriteReg(TVP5150_OP_MODE_CTL, PowerOn ? 0x00 : 0x01);//change bu zjk because the operate mode register of 5150 is 0x02,5146 is 0x03
    I2CDeinit();

    return TRUE;
}

3.选择输入方式的地方,也就是上层APP传输参数选择哪一路输入的地方

BOOL CTvpCtrl::SelectComposite()
{       
	RETAILMSG(ZJKtvp_DEBUGMSG,(TEXT("ZJK:CTvpCtrl::SelectComposite--CAM_PDD_TvpCtrl.cpp\r\n")));//add by zjk
	I2CInit();      
    WriteReg(REG_INPUT_SEL, (UINT8)m_pTvpConfig.dwSelComposite);
    I2CDeinit();        


    return TRUE;
}







  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值