I2C总线CMOS型PB-0300数字图像传感器_传感与控制论文
关键词: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信号控制每行有效信号的输出,高电平有效;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的输出来改变像素输出时间的。
图2 信号输出时序
*增益设置寄存器(r43,r44,r45,r46,r53)
设置输出像素的各种颜色的增益值。像素信号在模数转换前经过增益放大电路,分别对各种颜色进行处理,r43、r46分别对应蓝色和红色,r44、r45都对应绿色,r53是全局设置。一般的照明情况下(100~1000lx),增益值为1~8,编程的值是多少,对应的增益值就是多少。从r53可以读出自动曝光模式下的增益值。
*模数转换参考(adc)控制寄存器(r25)
通过改变模数转换参考值,改变图像的数字输出,从而调节图像亮度。当图像亮度大时,增加adc值,得到的图像将变暗;当图像较暗时,减小adc值,得到的图像将变亮。在非自动曝光模式下,r25控制adc的最大参考值(最小参考值为0),其典型值在24~38之间。在自动曝光模式下,adc参考值不能改变。
*信号漂移值设置寄存器(r32)
设置信号漂移值,调节图像的亮度,可以设置正负两种值。当图像太暗时,给r32加一个正值,像素信号变大,使得图像变亮;当图像太亮时,给r32加一个负值,使图像变暗。
4 pb-0300与单片机的接口
当pb-0300复位至默认状态下时,能够自动工作,此时采用自动曝光功能,输出的图像为640×480像素,输出速率为30帧/s。也可以通过修改寄存器的值来改变传感器的工作方式和提高图像的输出质量。在mcs-51系列单片上,可以使用虚拟i2c总线软件包viic模拟i2c总线,对pb-0300的寄存器进行读写。接口电路如图3所示。
pb-0300采用16位寄存器,需要写入2个字节,写满之后寄存器地址自动增加。所以对连接寄存器进行写操作时,只需写入第一个寄存器的地址;进行读操作时,先对控制寄存器空写一次,以明确操作对象,然后进行读数。子程序write是将默认状态下r5的值(510)修改为340(0214h),使图像输出为vga(640×480),输出速率为25帧/s。子程序read是以读r9、r10为例的典型程序。子程序清单如下:
vsda equ p1.7
vscl equ p1.6
sla equ 50h
numbyt equ 51h
mtd equ 30h
mrd equ 40h
write:mov 30h,#05h ;寄存器r5地址
mov 31h,#02h ;寄存器值(0214h)
mov 32h,#14h
mov sla,#0bah ;寻址并为写操作
mov numbyt,#03h ;写入字节数
lcall wrnbyt
ret
read:mov 30h,#09h ;寄存器的r9地址
mov numbyt,#01h ;写入字节数
mov sla,#0bah ;寻址并为写操作
lcall wrnbyt
mov sla,#0bbh ;寻址并为读操作
mov numbyt,#04h;读出字节数
lcall rdnbyt
ret
可以利用usb接口直接读出pb-0300芯片的数据。在line-valid和frame-valid信号均为高电平时,按照像素时钟pixclk的输出读数。由于usb接口速度快,能够将pb-0300的数据实时地传送到计算机内。
pb-0300具有体积小、功耗低、接口简单的特点,而且编程操作灵活,可以不用编程在默认方式下工作,也可以通过编程来改变输出图像的质量、大小和速度等,特别适合于现场应用中。pb-0300系列目前流行使用的是pb-0330。