基于ARM7 PWM定时器的图像传感器时序信号设计
扫描二维码
随时随地手机看文章
图像传感器的正常工作必须由外部提供适当的驱动信号和工作电压。这些驱动信号的波形、相位、前后沿时间、高低电平等对图像传感器器件工作的好坏影响很大,因此,在设计过程中必须严格按要求进行电路的设计[1]。
驱动电路是为图像传感器读出电路提供所必需的各个驱动脉冲信号,以便使其扫描电路以及信号处理、输出电路能正常工作,输出相应的视频信号[2]。对于CMOS图像传感器,根据像元排列形状的不同,可以把它分为线列阵、面列阵以及特殊列阵(如环行列阵等)。应用较多又最常见的是线列阵和面列阵。
1 线阵型驱动信号时序的要求
多个形状和大小完全相同的光电二极管在硅片上等间距地排成一条直线,即叫“线列阵”,只需要对水平移位寄存器进行驱动控制,其驱动信号比较简单。线阵型驱动和控制移位寄存器的波形要求如图1所示[3]。图中,CP是传感器的时钟信号,通过对晶振的输入时钟分频得到,作为传感器的工作频率。S信号是传感器扫描起始信号,由它确定视频输出电压的起始时间。两个?准信号是作为扫描电路即移位寄存器的动态电源,从而达到对每个像元的采集,且两个Φ信号可以为互补的时钟,也可以不是。Vout[3]是视频信号,是传感器在S脉冲同步下,将入射到其光敏面上的按空间分布的光强信息转换成按时序串行输出的电信号。
线阵型图像传感器在这些驱动信号的作用下,就可以输出串行的视频信号。这些驱动信号的时序关系对图像传感器工作时序至关重要。
2 ARM7微处理器及PWM定时器
由于嵌入式系统对CPU的性能要求越来越高,如核心频率、寻址能力、指令系统、功耗散热等,以ARM为体系的RISC系统结构逐渐占领市场。
2.1 ARM7系列微处理器
ARM系列处理器是由英国ARM公司设计制造的嵌入式处理器,其已成为现今世界上最流行的嵌入式处理器,主要包括ARM7、ARM9、ARM9E、ARM10E等系列。
ARM7系列微处理器为低功耗的32 bit RISC处理器,最适合于对价位和功耗要求较高的消费类应用,主要应用在工业控制、Internet设备、网络和调制解调器设备、移动电话等多媒体和嵌入式应用场合。
2.2 S3C44B0X及其PWM定时器
ARM7系列微处理器包括四种类型的内核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ-S。ARM7TDMI是目前使用最广泛的32 bit嵌入式RISC处理器,是ARM公司最早为业界普遍认可且赢得了最为广泛的应用的处理器核。S3C44B0X即是基于ARM7TDMI的体系结构。
脉冲宽度调制技术PWM,通过对一系列脉冲的宽度进行调制等效地获得所需要波形(含形状和幅值),被广泛应用于各种控制系统中[4]。
PWM是一种对模拟信号电平进行数字编码的方法,通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量、通信、功率控制与变换等许多领域中。
PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换,让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。
S3C44B0X内部集成了PWM(脉宽可调制)定时器,其内部框图如图2所示,具有以下特点[5]:
(1)5个16 bit带PWM的定时器(Timer),1个16 bit基于DMA或基于中断的内部定时器。
(2)3个8 bit预计数器,2个5 bit分频器,1个4 bit分频器。
(3)可编程的工作周期、频率和极性。
(4)死区(Dead-zone)产生器。
(5)支持外部时钟源。
S3C44B0X中定时器Timer0、Timer1、Timer2、Timer3、Timer4具有PWM功能,Timer5仅作为内部时钟,没有输出引脚。Timer0、Timer1共享一个8 bit的预计数器,Timer2、Timer3共享另一个8 bit预计数器,Timer4、Timer5共享其他的一个8 bit预计数器。除了Timer4和Timer5,其他每一个Timer都有时钟分频器用以得到5个不同的分频信号(1/2、1/4、1/8、1/16、1/32)。Timer4和Timer5有4个分频信号(1/2、1/4、1/8、1/16)和一个输入信号TCLK/EXTCLK。
8 bit预计数器是可编程的,通过加载TCFG0和TCFG1寄存器中存储的数据值,对MCLK信号进行分频。
Timer的计数缓冲寄存器(TCNTBn)有一个初始值,当定时器允许工作时,这个值被加载到减法计数器中。Timer的比较缓冲寄存器(TCMPBn)有一个初始值,这个值被加载到比较寄存器中与减法计数器中的值进行比较。TCMPBn中的值被用作PWM(脉宽调制)。当减法计数器中的值等于比较寄存器中的值时,定时器控制逻辑单元会改变输出电平。因此,比较寄存器决定了PWM输出信号的高电平(或者低电平)持续时间。当频率和占空比改变时,TCNTBn和TCMPBn双精度缓冲的特点使定时器能产生一个稳定的输出。
每一个Timer都拥有时钟驱动的16 bit减法计数器。当减法计数器系数减到0时,Timer产生一个中断请求来告诉CPU定时器的操作已经完成了,相应地TCNTBn中的值自动加载到减法计数器中产生下一次操作。但是如果TCONn中定时器使能端被置0,TCNBn中的值就不会再加载到计数器中[6]。
3 PWM定时器实现时序信号
利用S3C44B0X内部的PWM定时器产生一定时序的信号,用以驱动线阵型图像传感器,可以通过软件方式控制定时器中的若干寄存器,使定时器输出的信号具有一定的时序关系。
3.1 PWM定时器时序信号的产生
本文设计的驱动信号(包括起始信号S、时钟信号Φ以及扫描结束信号EOF)是为128像元的线阵型图像传感器而设计的。一个周期内的信号时序如图3示。其中,EOF信号是为了测试的方便而添加的,它表示的是像元扫描结束后输出的脉冲信号。S信号及EOF信号周期固定,因此可以利用设置Timer1和Timer2直接产生。Φ信号在扫描起始后产生,扫描期间维持直到128个像元扫描完为止,扫描完成后输出EOF信号,时钟信号被置0。因此Φ信号的周期不固定,需要以CP信号作为参照。Timer0产生固定周期的CP信号,当Timer0减法计数器减到0时会产生中断,将进入中断服务程序,并在中断服务程序中对Timer0产生的中断进行累计加1计数。中断计数为1后启动Timer3开始定时操作,从而在这期间产生周期固定(为CP信号的两倍)的脉冲信号。当计数产生了257个中断时,说明?准信号已经产生了128个脉冲,此时停止Timer3的定时操作。当计数产生了258个中断时,将中断计数值清零,同时产生下一个周期的操作。
3.2 程序设计
程序包括头文件PWM.h对PWM定时器中的寄存器及输出引脚进行配置以及对MCLK时钟信号的配置。利用对外部晶振信号的分频来得到定时器所需要的MCLK时钟信号(包括对PWM定时器的设置用以产生CP、S、EOF信号以及中断服务程序用以产生?准时钟信号)。PWM定时器设置的程序流程图如图4所示。
当PWM Timer0的中断产生时,进入中断服务程序isrPwmTimer0,其程序流程如图5所示。其中在配置PWM Timer3时,同样包括对TCON加载模式、减法计数器系数、占空比系数、TCNTBn及TCMPBn寄存器刷新的设置。
通过对程序的编译、仿真、下载,从S3C44B0X引脚TOUT0输出的为CP信号,从TOUT1输出的为S信号,从TOUT2输出的为EOF信号,从TOUT3输出的为?准时钟信号。将这些信号作为图像传感器的驱动信号,接入线阵型传感器的驱动引脚就可以使传感器按一定时序正常工作。
利用ARM7 PWM定时器,通过软件编程还可以实现面阵型图像传感器的驱动时序信号的设计。修改程序即可应用于各种型号的图像传感器驱动信号的设计。