OV5640时钟理解与端口理解(一)

XCLK 与PCLK的关系

对OV5640中XCLK与PCLK配置寄存器之间的关系,两者的关系图片:
XCLK与其他时钟的关系

代码如下(示例)只是截取相关的配置

//配置初始化部分代码
write_i2c(0x3103, 0x11); // system clock from pad, bit[1]
write_i2c(0x3008, 0x82); // software reset, bit[7]
// delay 5ms
write_i2c(0x3008, 0x42); // software power down, bit[6]
write_i2c(0x3103, 0x03); // system clock from PLL, bit[1]
write_i2c(0x3017, 0xff); // FREX, Vsync, HREF, PCLK, D[9:6] output enable
write_i2c(0x3018, 0xff); // D[5:0], GPIO[1:0] output enable
write_i2c(0x3034, 0x1a); // MIPI 10-bit
write_i2c(0x3037, 0x13); // PLL root divider, bit[4], PLL pre-divider, bit[3:0]
write_i2c(0x3108, 0x01); // PCLK root divider, bit[5:4], SCLK2x root divider, bit[3:2]
// SCLK root divider, bit[1:0]
//-----VGA 30帧/秒-----------------------
// Input Clock = 24Mhz, PCLK = 56MHz
write_i2c(0x3035, 0x11); // PLL
write_i2c(0x3036, 0x46); // PLL
write_i2c(0x3c07, 0x08); // light meter 1 threshold [7:0]
write_i2c(0x3820, 0x41); // Sensor flip off, ISP flip on
write_i2c(0x3821, 0x07); // Sensor mirror on, ISP mirror on, H binning on

write_i2c(0x4837, 0x22); // DVP CLK divider
write_i2c(0x3824, 0x02); // DVP CLK divider

其中时钟主要用到配置寄存器为:

0X3037Bit[4]: PLL root divider 0: Bypass1: Divided by 2 Bit[3:0]: PLL pre-divider
0X3036Bit[7:0]: PLL multiplier (4~252) Can be any integer for 4~127andonly even integer for 128~252
0X3035Bit[7:4]: System clock dividerSlow down all clocks Bit[3:0]: Scale divider for MIPI MIPI PCLK/SERCLK can beslowed down
0X3034Bit[6:4]: PLL charge pump control Bit[3:0]: MIPI bit mode 0x8: 8-bit mode 0xA: 10-bit mode
0X3108查找手册
0X3824查找手册

计算过程( 800x480 30帧/秒 上面图片中过程):详细的参数参考使用手册
(1)、外部输入的时钟为24MHz,0X3037[3:0]:进行预分频,分频值为3;得到的时钟为8MHz;
(2)、进行倍频处理:0x3036 [7:0] = 0x72 =114,得到的时钟频率为912MHz;
(3)、分频处理:0x3035[7:4] = 0x41,时钟为228MHz;
(4)、由于0x3037[4]与0x3034、0x3108、0x3035、0x3824配置寄存器的作用,可以得到分频系数为5、所以可以得最终的时钟为45.6MHz。

OV5640结构与端口

来源于数据手册
使用到端口:
XCLK : INPUT ,外部输入时钟信号,一般采用为24MHZ;
PWDN:INPUT,掉电模式与省电模式的选择;
RESETB : INPUT ,系统复位信号;
PCLK:OUTPUT:像素数据输出同步时钟;
HREF:OUTPUT:行同步信号,一帧(一张)图像的一行数据;
VSYNC:OUTPUT:场同步信号,一帧(一张)图像传输完成;
DP[9:0] :OUTPUT,像素数据
SIOC:INPUT,配置数据的时钟信号;
SIOD:INOUT,配置数据的数据线,两个配置信号线与I2C功能相同;

个人理解

寄存器太复杂,太多了,对寄存器的配置理解的还是不够通透,时钟计算不太准确,自己的理解。根据手册配置能够满足时钟的要求。例如 1024×768×30帧/秒的图像采集,计算疫苗产生的像素点为1024×768×30=23,592,960,采用RGB565的格式 传输图像信息,一共16bit的数据,需要2个时钟周期才能完成一个像素点数据的传输,所以需要传输的数据23,592,960×2=47,185,920‬,约为47MHZ,个人认为大于该时钟就完全可以完成数据的传输

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值