大家好
我在做视频帧同步模块,使用了lmh1980+lmh1982产生参考27M/74.25M时钟和帧头TOF信号,现在我发现每次上电配置lmh1982后TOF信号的相位与输入的VFSYNC相比都会改变,而且相位比较随机。不重新配置lmh1982,TOF的相位就不会再改变。
我的寄存器配置参数如下:
U8 LMH1982_ADDR[][2] =
{
{0x00,0xab},//0b10101011=0xab
{0x02,0x00},
{0x08,0x00},//STEP 1, SD=27M,HD=74.25M
{0x09,0x01},//STEP 2,TOF_RST=1
{0x0a,0x40},//0b01000000=0x40
{0x0b,0xc0},//TOF_PPL=1728=0x6c0
{0x0c,0x06},
{0x0d,0x71},//TOF_LPFM=625=0x271
{0x0e,0x02},
{0x0f,0x71},//REF_LPFM=625=0X271
{0x10,0x02},
{0x11,0x71},//TOF_OFFSET=625=0x271
{0x12,0x02},
{0x03,0x01},//STEP 3, REF_DIV_SEL=1
{0x04,0xc0},//FB_DIV=1728=0x6c0
{0x05,0x06},
{0x00,0xeb},//STEP 4, 0b11101011=0xeb
//寄存器配置结束
};
然后初始化输出:
U8 lmh1982_output_init(void)
{
U8 ret,i;
if(lmh1982_ref_valid() != TRUE)
{
return ERROR_END;
}
io_write(LMH1982_I2C_ENABLE_BASE, LMH1982_I2C_ENABLE);
//EN_TOF_RST = 1
i = 0xc0;
ret = I2C_Write(LMH1982_WRITE_ADDRESS, 0x0a, i);
if(ret != NORMAL_END)
{
return ret;
}
i |= 0x20;//TOF_INIT = 1
ret = I2C_Write(LMH1982_WRITE_ADDRESS, 0x0a, i);
if(ret != NORMAL_END)
{
return ret;
}
i &= 0x7f;//EN_TOF_RST = 0
ret = I2C_Write(LMH1982_WRITE_ADDRESS, 0x0a, i);
if(ret != NORMAL_END)
{
return ret;
}
i &= 0x5f;//TOF_INIT = 0
ret = I2C_Write(LMH1982_WRITE_ADDRESS, 0x0a, i);
if(ret != NORMAL_END)
{
return ret;
}
io_write(LMH1982_I2C_ENABLE_BASE, LMH1982_I2C_DISABLE);
return ret;
}
摸索n天了也没解决,求一个参考配置方法,谢谢