stm32无fifo OV7670 实时显示HAL库程序

一、简介:  

OV7670一般模块指低成本数字输出CMOS摄像头,其摄像头包含30w像素的CMOS图像感光芯片,3.6mm焦距的镜头和镜头座,板载CMOS芯片所需要的各种不同电源(电源要求详见芯片的数据文件),板子同时引出控制管脚和数据管脚,方便操作和使用。

214199c585004536b35120e44edc8ceb.png

二、管脚定义

3V3-----输入电源电压(推荐使用3.3,5V也可,但不推荐) 

GDN-----接地点 

SIO_C---SCCB接口的控制时钟(注意:部分低级单片机需要上拉控制,和I2C接口类似) SIO_D---SCCB接口的串行数据输入(出)端(注意:部分低级单片机需要上拉控制,和I2C接口类似) 

VSYNC---帧同步信号(输出信号) 

HREF----行同步信号(输出信号) 

PCLK----像素时钟(输出信号) 

XCLCK---时钟信号(输入信号,时钟速度可以高达24M) 

D0-D7---数据端口(输出信号) 

RESTE---复位端口(正常使用拉高) 

PWDN----功耗选择模式(正常使用拉低) 

三、SCCB通讯时序

其作用是设置芯片内部寄存器,以控制图像的各种所需功能。其时序和一般的I2C时序相似,部分低级单片机要接上拉电阻。

行输出时序 

行输出时序可用来控制一行像素的输出情况,HREF即一行输出的开始和结束信号,同时在像素时钟的同步下,输出8位的像素信号行输出时序图:

a23999fe972d44389f7d96633648263a.jpg

全帧输出下的时序情况: 

该图显示的是一副图像输出的情况下,各控制信号和数据信号的输出。图中,VGA=640X480大小情况下,帧同步信号,行同步信号(HREF或 者HSYNC,注:HSYNC在其它场合下使用,CMOS可以设置,更多时候用HREF即可)如图:

af3c889368804e86a8c8c7a8c4ef148a.jpg

//MAIN.C

 uint16_t Row[320];

int main(void)

uint16_t linecnt=0; 

uint16_t pixcnt=0; 

  HAL_Init();

  SystemClock_Config();

 MX_USART1_UART_Init();

  printf("\r\n按下KEY1,测试KEY1按下的时间\r\n");

    static unsigned long TimerCnt = 0;

    static unsigned int temp7670 = 0;      

   uint16_t value,val,val1,val2;

   ILI9341_Init (); //LCD 初始化

    ILI9341_GramScan( 3 );

   LCD_SetFont(&Font8x16);

   LCD_SetColors(RED,BLACK);

  ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); /* 清屏,显示全黑 */

 ILI9341_DispStringLine_EN(LINE(0),"BH OV7725 Test Demo");

 while(1!=OV7660_init()); 

    while(1) 

    {

       while(value & 0x0800) value = GPIOB->IDR;    

       while((~value) & 0x0800) value = GPIOB->IDR;  

       LI9341_OpenWindow(0,0,320,240);                  

       ILI9341_Write_Cmd ( 0x2C ); 

       for(linecnt=0;linecnt<240;linecnt++)  

  {

   while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_8)==0);

   for(pixcnt=0;pixcnt<320;pixcnt++)

   {

    while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)==0);

    Row[pixcnt]=GPIOC->IDR&0XFF;

    while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)==1); 

    Row[pixcnt]<<=8;

    while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)==0);  

    Row[pixcnt]|=GPIOC->IDR&0XFF; 

    while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)==1);                

   }  

   for(pixcnt=0;pixcnt<320;pixcnt++)

   {

             val =ili9320_BGR2RGB(Row[pixcnt]);

             ILI9341_Write_Data(val);

            }

       }

  }

}

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OV7670是一款智能手机和其他消费电子产品中常用的图像传感器。它有一个带有FIFO缓冲区的图像采集功能,可以将采集的图像数据发送给其他处理器进行处理。 STM32F103RCT6是一款ARM Cortex-M3内核的32位微控制器,具有丰富的外设和强大的处理能力。它可以用来控制OV7670图像传感器,并接收来自传感器的图像数据。 1.44TFT显示屏是一种小尺寸的彩色液晶显示屏,适用于嵌入式系统和便携式设备。它可以连接到STM32F103RCT6微控制器,用于显示OV7670传感器采集到的图像。 要实现OV7670FIFO采集STM32F103RCT6 1.44TFT显示,可以按照以下步骤进行: 1. 连接OV7670STM32F103RCT6:将OV7670传感器的数据线(包括图像数据和控制信号)连接到STM32F103RCT6的相应引脚上。 2. 初始化OV7670:通过编程方式初始化OV7670,设置图像分辨率、采样频率和其他参数。 3. 启动OV7670采集:通过向OV7670发送命令,开始图像采集过程。OV7670会将采集到的图像数据存储在FIFO缓冲区中。 4. 从OV7670读取图像数据:通过读取OV7670FIFO缓冲区,将采集到的图像数据传输到STM32F103RCT6的内存中。 5. 初始化1.44TFT显示屏:通过编程方式初始化1.44TFT显示屏,设置显示参数和像素格式。 6. 从内存中读取图像数据并显示:从STM32F103RCT6的内存中读取采集到的图像数据,通过数据线将其发送到1.44TFT显示屏上,实现图像显示。 总之,通过连接OV7670图像传感器和STM32F103RCT6微控制器,并连接1.44TFT显示屏,可以实现OV7670FIFO采集STM32F103RCT6 1.44TFT显示的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式冰箱

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值