APP下载

STM32嵌入式线阵CCD数据采集系统研究

2015-11-09李亚威陆永华刘斌

机械工程师 2015年4期
关键词:微控制器时序芯片

李亚威, 陆永华, 刘斌

(南京航空航天大学机电学院,南京210016)

0 引言

电荷耦合元件CCD(Charge-coupled Device)传感器,是一种半导体器件,能够把光学影像转化为模拟电压输出,CCD由于精度高、分辨率高、性能稳定、功耗低、寿命长等特点,广泛应用于图像传感和非接触测量领域[1]。在CCD传感器的应用中,能否产生正确合理的驱动信号是关键,常用的线阵CCD驱动实现方式通常有:EPROM驱动、IC驱动、单片机驱动法、FPGA驱动,但以上方法普遍存在程序设计复杂、驱动频率低等缺陷。使用基于Cortex-M3内核的STM32F103VET6微控制器产生CCD驱动信号,在KeiluVersion4平台上基于STM32固件库开发驱动程序以产生CCD传感器驱动信号并完成采集后数据处理工作,具有驱动频率高、开发便利、驱动信号稳定的优点。

微控制器需要完成产生驱动信号、数据处理、人机交互界面刷新等任务,为满足多任务并发性的要求,在STM32微控制器上移植了μC/OS-Ⅱ操作系统,基于操作系统创建各任务,由操作系统的通信机制及任务调度功能保证各任务的协调运行。

1 系统硬件电路设计

系统采用TOSHIBA公司的TCD1208AP线阵CCD传感器,该型传感器具有灵敏度高、暗电流低的特点。系统总体结构图如图1所示。系统选用ST公司生产的基于Cortex-M3内核的STM32微控制器,其产生的3.3 V驱动信号经电平转换电路转化为5 V的信号驱动线阵CCD传感器。STM32芯片内集成A/D转换器的外接参考电压为3.3 V,线阵CCD输出的最高为5 V的模拟电压经差分放大电路降压后接入A/D转换器采样通道进行采样转换。STM32控制液晶控制器和触摸控制器进而为触控液晶显示器提供驱动信号,完成系统启停控制、显示采样结果等人机交互任务。

图1 系统结构框图

1.1 TCD1208AP驱动电路

TCD1208AP是一种二相双沟道线阵CCD图像传感器芯片,其驱动信号如图2所示。四路驱动信号分别为:转移脉冲SH,复位脉冲RS,时钟脉冲Φ1、Φ2。SH为高电平时信号电荷转移到CCD模拟移位寄存器,SH跳变为低电平后在时钟脉冲Φ1、Φ2交变作用下OS逐个按位输出像元电压信号,随后发出RS脉冲去掉信号输出缓冲器中的残余电荷为下一像元电压输出做准备。根据传感器结构安排,TCD1208AP在一个采样周期中首先输出40个哑元信号,之后输出2160个有效像元输出,其后又输出12个哑元信号后一个输出周期结束,因此一个采样周期中至少包含2212次时钟信号交变和2212个复位脉冲RS。CCD传感器对驱动信号的频率有严格要求[2],其时钟特性如表1所示。

图2 TCD1208AP驱动信号时序图

表1 TCD1208AP驱动信号时钟特性

STM32驱动信号产生方法有两种:a.设定通用定时器产生;b.直接设置IO口模拟。第一种方法计时准确,通过设置相应定时器的预分频寄存器精度可达0.05 μs,但通用定时器同步困难,需要使用中断来实现,操作困难且由于CCD交变时钟信号工作频率高而难以保证准确同步[3]。系统采用库函数直接设置CPU寄存器控制IO口的方法输出驱动信号,通过设置锁相环PLL,STM32的指令执行速度高达72MHz,克服了以往单片机直接驱动频率低的问题。IO跳变时间只有28 ns,采用CPU空指令_nop()延时,精度为13ns,完成一个采样周期最快只需5ms左右,通过库函数设置相应GPIO口的GPIOx_BSRR寄存器实现相应端口同时输出高或低电平可以确保各端口满足驱动信号同步性要求。

通过分析TCD1208AP驱动信号时序图可以看出除去SH中断位在一个Φ1或Φ2周期内可以将信号分为6种状态[4],如图 3 所示,Φ1、Φ2 相位相反,周期为 2 倍的RS。因此可以采用循环状态分割法让STM32周期性的输电平的要求。

图3 时序细分图

调整延时函数的输入参数,在示波器上可以得到输出驱动信号的时序图如图4所示。

1.2 传感器输出电压处理电路

CCD正常工作时有两路输出信号:输出信号OS和补偿信号 DOS,但出大于 1106(2212/2)个Φ1周期内的这6种状态即可完成一次采样。根据图3可以列出各状态的时序变化值,如表2所示。通过调整每种状态的延时时间进而得到复合CCD传感器驱动信号频率要求的信号,在实际测量中,延时函数的输入参数可以随时调整,以取得最佳采样结果。STM32的引脚输出高电平为3.3 V,输出信号经由74LS04P芯片组成的电平转换电路放大到5 V后接入CCD传感器相应引脚,以满足传感器对驱动信号该信号有效信号幅值小,且存在周期性的复位脉冲串扰。系统采用差分运算方式处理输出信号,差分运算放大器选用AD公司的AD8031芯片,它是一款低功耗、高速的单电源电压反馈性放大器,小信号带宽为80 MHz,压摆率为30 V/μs,建立时间为125 ns。采用+5 V电源时,对于2V峰值、1MHz输出信号的总谐波失真(THD)为-62dBc,完全可以满足系统需要。将CCD的输出信号OS和补偿输出信号DOS分别接到芯片的+IN引脚和-IN引脚可以有效去除OS中含有的复位噪声。由于AD8031差分运算放大器的最小放大倍数为1,CCD传感器的最高模拟电压输出为5 V,而STM32芯片内集成A/D转换器的外接参考电压VREF+为3.3 V,因此需要对经过差分处理的模拟信号进行降压处理以满足A/D转换器的量程要求。输出电压信号处理电路如图5所示,图中R1=R2=R3=R4=10 kΩ,R6=2R5=20 kΩ。[5]

表2 时序状态变化表

图4 示波器采集驱动信号时序图

图5 输出信号处理电路图

线阵CCD传感器输出信号频率高,因此需要AD传感器有较高的转换速率,系统将时钟ADCCLK配置为9 MHz,同时把所用ADC1通道11配置为7.5个采样周期,根据STM32的ADC采样时间计算公式:TCONV采样周期+12.5个周期[6]得系统所用ADC1转换通道的转换时间为:TCONV=(55.5+7.5)×1÷9=7 μs,完全满足线阵 CCD 传感器对转换速率的要求。同时将ADC1设置为自动DMA传输模式,每次转换完成后会自动开启DMA传输功能将所得数据采用硬件方式转移到STM32内存预设位置的数据存储数组中,这个过程不需要CPU的参与,不影响CPU产生驱动信号。ADC1采用软件启动模式,编程时在时序状态变化表的特定时刻插入ADC_SoftwareStartConvCmd()库函数启动ADC转换。

1.3 触控液晶显示器电路设计

系统采用2.4寸(240×320)TFT液晶显示器,由于STM32内部没有集成专用的液晶屏和触摸屏的控制接口,所以需要外接专用芯片来控制显示面板,系统采用ILI9325和TSC2046芯片。由STM32的FSMC(静态存储控制器)的NOR/PSRAM模式模拟产生ILI9325的8080接口通信时序,通过对FSMC的操作向ILI9325写入控制命令或GRAM数据。通过配置STM32的SPI接口向四线电阻触摸屏控制器TSC2046写入控制字和接收控制器返回的屏幕X、Y方向的触电电压值。

2 系统软件设计

根据系统硬件功能设计,系统软件主要有3个模块组成:驱动信号产生模块、数据处理模块、液晶显示模块。为了使3个模块协调运行、更好地管理微处理器及缩短软件开发周期,系统在STM32微处理器平台上移植了μC/OS-Ⅱ实时操作系统[7]。根据所完成任务性质及特性的不同,3个模块有不同的优先级及运行频率,其中驱动信号产生模块拥有最高优先级,可剥夺型的实时内核在任何时候都运行就绪了的最高优先级任务,数据处理模块的运行是基于驱动信号产生的基础之上,优先级次低,窗口显示模块对实时性要求最低,可设置最低的优先级。驱动采样任务、数据处理任务及显示任务的流程如图6所示。

液晶显示处理任务负责及时按指定格式显示出处理后的数据及完成通过触摸屏控制系统的运行启停等人机交互任务,为了简化开发步骤和提高程序开发效率,系统在μC/OS-Ⅱ操作系统的基础上移植了uCGUI嵌入式图形支持系统。uCGUI设计用于为任何使用LCD图形显示的应用提供高效且独立于处理器及LCD控制器的图形用户接口。 uCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。系统的控制显示界面如图7所示。

3 结语

系统采用高分辨率、高灵敏度的CCD传感器,低成本、易实现的STM32微控制器,配以μC/OS-Ⅱ和uCGUI操作及图形处理系统,因此该嵌入式CCD数据采集系统可以不依赖于上位机实现任意时间、地点的灵活性数据采集。试验表明,该数据采集系统简单易行、成本低、分辨率高、开发方便,可为基于线阵CCD的数据采集工作提供一种有效便捷、运行可靠的解决方法。

图6 系统软件流程图

图7 采集系统界面

[1] 王庆有.图像传感器应用技术[M].北京:电子工业出版社,2003:46-49,128-134.

[2] Toshiba CCD linear image sensor TCD1206 data manual[M].Toshiba,2001.

[3] 吴吕宪.基于线阵CCD及STM32的滚针直径精确测量的研究[D].南京:南京理工大学,2012:11-13

[4] 周根荣,姜平.基于线阵CCD的织物图像采集系统[J].仪表技术与传感器,2007(8):51-52.

[5] 秦曾煌,姜三勇.电工学:下册[M].7版.北京:高等教育出版社,2009:103-107.

[6] 刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社,2009:136-138.

[7] 刘淼,王田苗.基于μC/OS-Ⅱ的嵌入式数控系统实时性分析[J].计算机工程,2006(22):222-226.

猜你喜欢

微控制器时序芯片
基于Sentinel-2时序NDVI的麦冬识别研究
物联网技术在微控制器实验教学中的应用
基于FPGA 的时序信号光纤传输系统
一种毫米波放大器时序直流电源的设计
芯片测试
多通道采样芯片ADS8556在光伏并网中的应用
Atmel针对新一代物联网应用发布全新32位微控制器
最新STM32设计工具增加对混合信号微控制器的支持
DPBUS时序及其设定方法
74HC164芯片的应用