I2C总线CMOS型PB-0300数字图像传感器
摘要:介绍CMOS型数字图像传感器PB-0300的性能特点、功能设置、与MCS-51系列单片机的接口电路及编程技术。
关键词:I2C总线 数字图像 传感器
1 功能描述
1.1 性能特点
PB-0300系列CMOS型有源像素数字图像传感器,内置模数转换8、位并行数据输出、64个内部寄存器,采用I2C总线控制,可编程控制;可以在彩色和黑白两种模式下工作。当外接24MHz时钟晶振时,可以获得30帧/s的图像输出。在上电期间,自动调入缺省参数设置,包括自动曝光功能,所以可以不编程情况下使用传感器。主要性能指标如表1。
表1 主要性能指标
阵列格局 | 640×487(311 680像素) VGA参考:640×480(307 200像素) |
像素大小和类型 | 有源光电二极管,空间分辨力:7.9μm×7.9μm |
帧速率/(帧/s) | 0~39 |
最大数据传输速度/(MB/s) | 24(在24MHz时钟下) |
功率/mW | 300(最大数据速度下) |
数字信噪比(1lux条件下) | 大于20dB(10:1)(对绿色像素,30Hz的以照明度) |
数字敏感度 | 红色:950bit/lux-second,绿色:650bit/lux-second, 蓝色:750bit/lux-second,(增益为10,ADC参考为+5.0V) |
工作电压/V | +5.0 |
工作电流/mA0 | 60 |
工作温度/℃ | -5~70 |
输出 | 8位彩色(单色)数字输出 |
快门 | 电子旋转抓拍 |
可编程控制项 | 窗口尺寸和位置、信号增益、曝光参数、自动曝光参数、ADC参考、帧速率、DAC偏置 |
1.2 内部结构
PB-0300由五大部分组成:数字逻辑模块、像素阵列、列平行的增益电路和读出电路、8位ADC、偏置DACs,如图1所示。
主要引脚功能如表2。
表2 主要引脚功能描述
引脚名称 | 工作方式 | 功 能 描 述 |
LINE_VALID | 输出 | 行有效信号--图像数据在数据输出总线上时有效 |
FRAME_VALID | 输出 | 帧有效信号 |
SDATA | 输入/输出 | I2C数据通道 |
SCLK | 输入 | I2C时钟 |
PIX_CLOCK | 输出 | 像素时钟,下降沿有效 |
CLOCK_OUT | 输出 | 主时钟输出 |
CLOCK_IN | 输入 | 时钟输入,标称主时钟为24MHz |
DOUT0~7 | 输出 | 8位并行数据输出 |
SADDR | 输入 | 器件连线地址脚,SADDR=5V:写地址=BA,读地址=BB;SADDR=0V:写地址=92,读地址=93 |
VREF1 | 输出 | ADC参考偏置 |
STANDBY | 输入 | 关闭模拟偏置电路和内部时钟(省电) |
RESET_BAR | 输入 | 复位键,低电平有效 |
PB-0300有三种分开的供电电源:数字电源、模拟电源和传感器阵列电源。使用时要特别注意各电源间的相互影响。
2 图像输出格式与时序
PB-0300控制像素数据输出的信号有:帧有效(FRAME-VALID)信号、行有效(LINE-VALID)信号、像素时钟(PIXCLK)信号。FRAME-VALID信号控制一帧有效图像的输出,高电平有效;LINE-VALID信号控制每行有效信号的输出,javascript:window.open(this.src);" style="cursor:pointer;"/>高电平有效;PIXCLK信号控制每个像素的输出,当FRAME-VALID和LINE-VALID均为高电平时,每个像素时钟周期输出一个8位像素信号;并行的DOUT0~DOUT7是像素数据的8位输出,它们始终和像素时钟同步。在PIXCLK处于下降沿时,数据输出和LINE-VALID都不能改变。在默认的VGA(640×480)下,当每行640个有效像素信号输出之后,LINE-VALID变为低电平,PB-0300按一定编码方式向外输出982个无效信号,然后再输出像素信号。当480行有效像素和无效信号完全输出之后,传感器再输出9行空白信号。这期间FRAME-VALID为低电平,标志着当前帧的结构和下一帧的开始;同时,读入寄存器的最新值,通过对寄存器编程而改变的图像参数在下一帧生效。信号输出时序如图2所示。
3 寄存器设置
PB-0300共有64个寄存器(R0-R63),地址依次为00H~3FH,在缺省情况下有自动曝光功能;可以改变输出图像的大小、位置和速度;通过调节像素累积时间、ADC参考和增益值可以控制采集到的图像亮度。下面介绍几个主要寄存器的功能。
*复位控制寄存器(R13)
R13能够使PB-0300复位到上电后的缺省状态。首先向R13的最低位写入“1”,使PB-0300处于复位状态,然后再写入“0”继续工作。
*窗口位置与大小控制寄存器(R1,R2,R3,R4)
控制采集图像窗口的位置与大小。只有在此窗口内的像素才能有效地读出。窗口的像素个数最大值为640×480。R1为行起始坐标,R2为列起始坐标,(1024-R3)为有效行数,(1024-R4)为有效列数;窗口大小的默认值为VGA(640×480),右上角坐标为(0,0),左下角坐标为(639,479)。
*像素累积控制寄存器(R8,R9)
控制像素的采光时间,R8为累积帧数,R9为累积行数,实际总的累积时间,即实际处理完一帧图像的时间为:Tint=[(R8×(1024-R3)+R9)×Trow,其中,Trow为处理完一行有效像素所用的时间。一般的R8设置为0,R9的最大值为有效图像窗口的行数。Tint的值应该能信号避免由于光闪烁使图像产生条纹。在60Hz光闪烁频率下,Tint必须为1/120s的整数倍;50Hz频率下,Tint必须为1/100的整数倍。
*帧速率控制寄存器(R5,R6,R10)
控制每行和每帧有效像素信号之间的无效信号时间。当其它图像参数改变时,通过改变上帧速度控制寄存器的值为调节帧速率。若通过R4减小有效像素列数后,处理一行有效像素的时间将变短,帧速率将增加。这时可以调节R5的值来增加每行元效信号的输出数量和时间,从而使帧速率保持不变;同理,若改变有效像素行数时,调节R6来保持帧速率。R10是通过控制PIXCLK的输出来改变