摘 要: 通过STC89C52单片机平台,以4路驱动信号的TCD1208AP和6路驱动信号的TCD1501D为例,采用分割法对驱动信号进行了分析与编码。根据线阵CCD驱动信号数量的不同,分别采用单周期和双周期指令完成了驱动时序的编程实现和实验验证。该方法应用高执行效率的51汇编指令,驱动信号频率高、稳定性好,充分发挥了单片机和线阵CCD的综合性能。
关键词: 线阵CCD;单片机驱动;分割法;STC89C52;TCD1208AP;TCD1501D
近年来,随着半导体技术和大规模集成电路的发展,CCD图像传感器在功耗、分辨率和动态范围等方面取得了巨大的进步。目前,CCD图像传感器非接触式测量技术已广泛应用于尺寸测量、图像传感、机器视觉、文字扫描等领域[1]。
线阵CCD驱动信号是一组关系复杂的周期性脉冲信号,它是决定信号积分时间、信噪比的关键因素。目前,线阵CCD的驱动电路主要包括专用集成电路驱动、EPROM驱动、可编程逻辑器件驱动、单片机驱动等[2]。基于单片机的线阵CCD驱动扩展性强、功耗小、应用成本低,应用前景广阔。单片机驱动设计中,难免要使用转移指令,但是由于单片机的转移指令、位操作和端口赋值指令的指令周期不同及驱动信号的复杂性,如果驱动时序设计不当,将难以满足CCD驱动时序的高频率和稳定性要求。因此,关于单片机线阵CCD驱动时序分析和设计方法的研究具有深刻的意义。
1 线阵CCD驱动设计
51系列单片机具有低功耗、扩展灵活、控制稳定等特点,是目前应用最广泛的单片机。因此,本文将利用STC89C52单片机进行线阵CCD驱动设计的研究。
CCD图像传感器采用光电效应,以感应电荷为信号,在特定驱动脉冲作用下,实现信号电荷的存储和定向转移[3]。线阵CCD驱动设计中,所采用指令的指令周期决定了线阵CCD的驱动频率的大小。具体采用单周期指令还是多周期指令取决于线阵CCD驱动信号的路数和驱动信号间的关系。
1.1 线阵CCD的驱动信号
线阵CCD在驱动时序作用下完成了信号电荷的存储、转移和输出。线阵CCD的驱动信号包括转移脉冲(SH)、时钟脉冲(Q1,Q2)、复位脉冲(RS),部分线阵CCD还包括采样保持脉冲(SP)和门限脉冲(CP)。本文以东芝4驱动TCD1208AP和6驱动TCD1501D线阵 CCD为例,研究基于51单片机的线阵CCD的驱动设计。
TCD1208AP采用帧输出方式,每帧信号对应1 106个时钟脉冲。利用51单片机计数器对时钟脉冲Q2的下降沿计数,当计数达到1 106时,利用中断方式产生转移脉冲SH。单片机与TCD1208AP间的接口关系如图1所示。图4是TCD1208AP 4路驱动信号的状态转换图。
由图4可知,除去SH中断状态外,TCD1208AP驱动信号共有8种状态。Q1和Q2相位相反,周期是RS的2倍,SH由计数中断产生。程序设计中,采用位操作指令和自加自减指令实现信号间转换;驱动信号的周期切换采用JBC跳转指令通过RS信号的检测实现循环。JBC指令寻址位为1转移,选择RS为检测位,需对状态转移图中的信号编码进行取反操作。这样实现了驱动信号的转换均在单周期指令操作,与双周期指令相比,驱动频率提高了一倍。核心程序如下:
MOV P1,#0xFA ;驱动信号的初始状态
LOOP: ;驱动信号8状态间的循环程序段
SETB P1^2
DEC P1
NOP
CLR P1^2
SETB P1^2
INC P1
JBC P1^2,LOOP
CT0: ;转移脉冲SH中断处理程序
CLR P1^3
MOV TH0,#0xFB ;TH0=(65536-2538)/256
MOV TL0,#0xAE ;TL0=(65536-2538)%256
SETB P1^3
RETI
TCD1501D驱动信号设计中,采用分割法,在保持RS占空比为1:4的条件下,8等分分割TCD1501的电荷转移脉冲信号Q1和Q2,形成驱动信号间的关系如图6所示。
由图7可知,TCD1501D增加了两路信号CP和SP,驱动信号间的变换至少包含两路信号的变换,无法再仅采用单周期自加自减指令和位操作指令控制单片机I/O口产生驱动信号,只能选择双周期的I/O端口数据传送指令进行TCD1501D驱动设计,核心程序如下:
LOOP: ;驱动信号8状态间的循环程序段
MOV P1,0xD9
MOV P1,0xD5
MOV P1,0xDE
MOV P1,0xCE
MOV P1,0xDA
MOV P1,0xD6
MOV P1,0xDD
JBC P1^4,LOOP
CT0: ;转移脉冲SH中断处理程序
SETB P1^5
MOV TH0,#0xF6 ;TH0=(65536-2538)/256
MOV TL0,#0x14 ;TL0=(65536-2538)%256
CLR P1^5
RETI
当晶振频率相同时,与TCD1208AP相比,TCD1501D的驱动频率降低一半,但这不影响多数非接触式测量的应用要求。由上述两例驱动设计过程可知,根据CCD驱动信号数量的不同和驱动信号的时序关系设计驱动程序,能最大限度地提高信号的驱动频率,充分发挥单片机驱动的优势。
2 实验结果分析
STC89C52是 51单片机中性价比极高的一款单片机,最高工作频率为35 MHz,6T/12T双工模式可选,作为线阵CCD驱动,其能满足应用对象对高速度、低功耗的要求。
本文选择STC89C52单片机作为试验平台,采用keil C51平台验证所设计的时序的正确性。试验中,采用24 MHz晶振作为STC89C52外部晶振,选用6T双倍速工作模式,内部机器周期0.25 ?滋s。该条件下,TCD1208AP和TCD1501D的时钟脉冲频率分别达到了0.5 MHz和0.25 MHz的正常工作要求。图8和图9是实际测量的时序图。
由图8和图9可知,当转移脉冲计数发生中断时,转移脉冲SH发生跳变,说明采集完一帧图像数据。注意,SH的高电平保持时间必须小于Q1高电平保持时间。实际应用中,CCD各信号需满足特定的时间参数要求。表1和表2是TCD1208AP和TCD1501D理论时间参数和实验测量参数的对照表,表中时间符号分别与图2和图5中的时间符号相对应。
可以看出,实测参数均满足理论值要求。TCD1501D的RS脉冲宽度是TCD1208AP的RS脉冲宽度的2倍,充分说明驱动信号单周期指令运行速度是双周期指令的2倍。因此,根据线阵CCD驱动信号数量的不同和驱动信号的关系,合理采用分割法对信号进行分析和编码,科学选择单周期指令和双周期指令,能充分发挥单片机和线阵CCD的综合性能,提高驱动信号的频率和稳定性。目前该设计方法在某型号精密位置校正装置的CCD模块中得到成功应用。
本文采用51单片机作为线阵CCD的驱动控制器,很好地满足了CCD驱动强扩展性、高速度、低功耗的应用要求。设计中,根据线阵CCD驱动信号数量和信号关系的不同,采用分割法对驱动时序进行了分析和编码,利用51汇编指令完成驱动时序的科学编程,完成线阵CCD驱动时序的设计。利用STC89C52单片机,以4路和6路线阵CCD驱动设计为例,提出了多路驱动信号线阵CCD驱动设计的具体方法。本文对驱动时序进行了测试,验证了实测参数的正确性。该方法得到的驱动时序频率很好地满足了线阵CCD的工作要求,稳定性好,为后续CCD驱动开发指明了方向。
参考文献
[1] 王庆有.图像传感器应用技术[M].北京:电子工业出版社,2003.
[2] 曾维友,赵江,罗时军,等.基于C51的线阵CCD驱动设计[J].湖北汽车工业学院学报,2009,23(1):62-64.
[3] 卢阳.TDI/CCD图像传感器脉冲驱动电路研究及小型可见光CCD摄像机组件设计[D].重庆:重庆交通大学,
2006.
[4] TOSHIBA公司.TCD1208AP数据手册[S].东京:TOSHIBA公司,2001.
[5] 崔岩,吴国兴,殷美琳,等.基于FPGA的线阵驱动设计[J].现代电子技术,2011,34(10):206-210.
[6] TOSHIBA公司.TCD1501D数据手册[S].东京:TOSHIBA公司,2001.