OV7725的帧率和PCLK寄存器设置
一、OV7725的PCLK的改變和以下幾個寄存器有關:
? ? ? ?1:OX0D(COM4);
------------------------------------------------------------------------------------------------------------------
0X0D ? ? ?COM4 ? ? ? 41 ? ? ? ? ? ? ? common control 4
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[7:6]: ?PLL ?frequency control
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?00:Bypass PLL
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?01:PLL 4X
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10:PLL 6X
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?11:PLL 8X
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Bit[5:4]: AEC evaluate windows
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?00: Full windows
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?01: 1/2 windows
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10: 1/4 windows
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?11: Low 2/3 windows
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[3:0]: Reserved
------------------------------------------------------------------------------------------------------------------
2:0X11(CLKRC);
------------------------------------------------------------------------------------------------------------------
0X11 ? ? CLKRC ? ? 80 ? ? ? ? ? ? ? internal Clock
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[7]: ?Reseved
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[6]: ?Use external clock directly (no clock pre_scale available)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[5:0]: internal clock pre_scalar
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?F(internal clock) ? = F(input ?clock)/(Bit[5:0]+1)/2
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? . Range : ? ?[0 0000] to [1 1111]
------------------------------------------------------------------------------------------------------------------
舉個栗子:
Frame Rate Adjustment for 24Mhz input clock
30 fps, PCLK = 24Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x01);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x00);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);
15 fps, PCLK = 12Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x03);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x00);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);
第一個:
如上:輸入時鐘為24MHZ;0X0D為0x41,說明PCLK是輸入時鐘的4倍頻;0X11為0X01,根據函數式:F(internal clock) ? = F(input ?clock)/(Bit[5:0]+1)/2,得到內部時鐘為:F(internal clock) =24/2/2=6MHZ;得到PCLK=4*6=24MHZ,幀率是30fps
第二個:
如上:輸入時鐘為24MHZ;0X0D為0x41,說明PCLK是輸入時鐘的4倍頻;0X11為0X03,根據函數式:F(internal clock) ? = F(input ?clock)/(Bit[5:0]+1)/2,得到內部時鐘為:F(internal clock) =24/4/2=3MHZ;得到PCLK=4*3=12MHZ,幀率是15fps(幀率變小的原因是PCLK的頻率降低了)
二、OV7725的幀率和PCLK的頻率及0X33及0x34有關,0x33配置的是低8位,0x34配置的是高8位,這里是說增加的假的行,即沒有用的行,這樣幀率就會下降;
? ? ?同時還和0x2a及0x2b有關,這里說的是加入的假的列,即沒用的列,這樣的話幀率也會下降;
---------------------------------------------------------------------------------------------------------
? ?0X33 ? ? ?DM_LNL ? ? ? 00 ? ? ? ?RW ? ? ? ? ? Dummy ?Row ? Low ? 8bit
---------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
? 0x34 ? ? ?DM_LNH ? ? ? 00 ? ? ? ?RW ? ? ? ? ? ?Dummy Row ? ?High ?8bit
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
? 0x2a ? ? EXHCH ? ? ? ? ?00 ? ? ? ? ?RW ? ? ? ? ?Dummy pixel insert MSB
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[7:4] ?:4MSB for dummy pixel insert in horizontal direction
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[3]:Reserved;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[2]:vertical data outup size LSB
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bit[1:0]:Horizontal data outup size 2LSBs
-----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
0x2b ? ?EXHCL ? ? ? ? ? ? 00 ? ? ? ? RW ? ? ? ? Dummy pixel insert LSB
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?8LSB??for dummy pixel insert in horizontal direction
--------------------------------------------------------------------------------------------------------------------------------
舉個栗子:
Frame Rate Adjustment for 24Mhz input clock
30 fps, PCLK = 24Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x01);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x00);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);
25fps, PCLK = 24Mhz
SCCB_salve_Address = 0x42;
write_SCCB(0x11, 0x01);
write_SCCB(0x0d, 0x41);
write_SCCB(0x2a, 0x00);
write_SCCB(0x2b, 0x00);
write_SCCB(0x33, 0x66);
write_SCCB(0x34, 0x00);
write_SCCB(0x2d, 0x00);
write_SCCB(0x2e, 0x00);
write_SCCB(0x0e, 0x65);
這兩端代碼的輸入clk都是24MHZ,輸出PCLK相同都是24MHZ,但frame rate一個是30fps,一個為25fps,程序中只有0X33不同,如何通過將0X33設置為0X66,從而將30fps變為25fps。看下面的分析:
????
??? 從圖片中我們可以看到一個VSYNC有510個t(LINE),所以30fps表示有30*510*t(LINE),結合上面對于0X33的分析,因為都 是24MHZ,所以30fps和25fps兩個時間相同。故在這510個LINE中插入102個(0X66)LINE,總的時間才會相同。 30*510*t(LINE)=25*(510+102)*t(LINE).
??? 當然幀率會隨著PCLK的變化而變化,當PCLK變為12MHZ時,幀率也就減為15fps了。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的OV7725的帧率和PCLK寄存器设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2 MyWarCraftStudio v
- 下一篇: win10使用Switchhost显示无