微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于STM8单片机的CMOS图像采集系统应用设计

基于STM8单片机的CMOS图像采集系统应用设计

时间:12-08 来源:互联网 点击:

SPI时钟,然后往单片机传送数据。该引脚连接单片机的PD7普通I/O口。

ECLK:图像传感器的主时钟输入引脚,连接单片机的CLK_CCO口。单片机通过该口为图像传感器提供16 MHz的主时钟。SPI_RD:图像传感器的图像控制信号输入脚,该引脚控制图像传感器下一帧图像是否到来,高电平有效,该13连接单片机的PB6普通I/O口。

SPI_CLK:图像传感器SPI数据输出的时钟信号输入脚,该引脚连接单片机硬件SPI的SPI_SCK口。单片机通过该引脚为图像传感器提供采数时钟,图像传感器根据采数时钟向单片机传输数据。

SPI_SDA:图像传感器SPI数据输出的数据信号输出脚,该引脚连接单片机硬件SPI的SPI_MISO口。单片机通过该引脚采集数据。

SPI_INT:图像传感器的中断申请信号。图像传感器把每帧图像分成几次中断,单片机响应中断,在中断服务程序里接收数据。该引脚连接单片机PIM具有外部中断接收功能的I/O口。

SBDA、SCLK:图像传感器I2C接口的数据引脚和时钟引脚,连接单片机硬件I2C接口的I2C_SDA和I2C_SCL,是单片机对图像传感器内部寄存器读写操作的数据总线和时钟总线。

PWDN:图像传感器初始化信号线,该引脚连接单片机的PC2普通I/0口。该信号线要在图像传感器上电的过程中拉低,只有该引脚在低电平的情况下,图像传感器才能正常工作。

SST_CE:Flash SPI接口的片选引脚,低电平有效,该引脚连接单片机的PD0普通I/O口。

SST_SO、SST_SI:Flash SPI接口的数据引脚,连接单片机SPI_MISO和SPI_MOSI口,与图像传感器的SPI_SDA分时复用SPI_MISO口。

SST_SCK:Hash SPI接口的时钟信号输入引脚,连接单片机的SPI_SCK口,与图像传感器的SPI_CLK分时复用SPI_SCK口。

3 系统软件设计

3.1主程序的设计

系统软件可分为:图像传感器模块、图像存储器模块、图像的多帧采集和拼接模块、串口数据传输模块。其基本流程图如图3所示。为了尽量提高单片机的处理速度,将系统的时钟频率设置为最高,即16 MHz。

图3 主程序流程图

3.2 图像传感器模块软件设计

根据SP0828 CMOS数字图像传感器的工作原理和工作流程,图像传感器模块包括了图像传感器上电初始化、图像传感器寄存器初始化、图像数据采集3个部分。

3.2.1 图像传感器上电初始化

图像传感器上电初始化,就是图像传感器在上电结束但尚未开始工作的时候,对图像传感器芯片提供主时钟、初始化信号线拉低等一系列的操作,以使图像传感器能够正常工作或者获得最佳的工作状态。其主要流程如图4所示。

图4 图像传感器上电初始化时序图

DVDD28&AVDD连接电源,DVDD28&AVDD拉高即是上电。在上电之后,延时至少10岬,初始化信号线PWDN拉低。然后延时至少110μs,单片机为图像传感器提供主时钟,为使图像传感器工作在最快的速度,单片机为图像传感器提供最高16 MHz的时钟。最后延时至少20 clock,单片机通过I2C接口对图像传感器内部寄存器进行初始化。上电结束。

3.2.2 图像传感器内部寄存器初始化

CMOS图像传感器采用I2C总线控制其各项功能,简单、快捷。I2C总线也是目前图像传感器采用最普遍的控制方式。用户可以通过I2C总线改变图像传感器内部可编程寄存器的缺省参数来设置图像传感器的工作方式,如时钟、帧率、曝光、对比度、亮度等。I2C总线是芯片间串行数据传输总线,它只用一根数据线SDA和一根时钟线SCL即可实现完善的双工同步数据传输。I2C总线规定,主控制器发送起始信号表明一次数据传输的开始,然后为寻址字节,寻址字节由高7位地址位和低1位方向位组成。方向位表明主控制器与被控制器之间的数据传输方向,当该位为“0”时表明主控制器对被控制器的写操作,为“1”时表明主控制器对被控制器的读操作。寻址字节后是按照指定地址读写操作的数据字节与应答位。数据传送完成后主控制器必须发送终止信号。I2C协议的时序如图5所示。

图5 I2C总线的数据传送时序图

STM8单片机有专门的硬件I2C接口,因此可通过该接口实现与图像传感器的通信。该系统中STM8单片机的I2C_SDA数据线和I2C_SCL时钟线分别连接图像传感器的SBDA数据传输口和SCLK时钟传输口。通过上述对I2C协议的分析,设计了如图6所示的I2C总线数据传输流程。

图6 I2C总线数据传输流程

I2C总线操作的典型时序信号有起始位信号、终止

位信号、发送地址、发送数据、接收数据,所有的时序信号都是通过对单片机硬件I2C内部寄存器的操作实现的。I2C模块主要功能函数如下:

(1)读取图像传感器内部寄存器的值

unsigned char I2C_Read(unsigned char slave—address,unsigned charreg address,unsigned char slave_read_address)

/* slave_

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top