×
单片机 > 单片机程序设计 > 详情

STM32F103C8T6驱动ov2640拍照串口传输到上位机

发布时间:2020-05-28 发布时间:
|

使用环境(蓝色粗体字为特别注意内容)


1、软件环境:Keil MDK 5.15


2、硬件环境:STM32F103C8T6最小系统,OV2640摄像头模块


最近想玩玩摄像头,于是在网上找找性价比比较高的摄像头,之前用过OV7670这款摄像头,不过这款摄像头对单片机要求较高,一般的单片机驱动起来非常费劲,除非ARM级别的微处理器才能够胜任。要想使用低端单片机驱动的话需要加上FIFO模块,一加上这玩意价格就翻了3倍。。。。原来20块钱的东西涨到了70+,我的天。。。。于是找了大半天,终于找到OV2640这款摄像头,这摄像头是我目前遇到的性价比最高的摄像头了,竟然支持直接输出JPG格式的图片,最高支持1600*1200(200W)像素!!!价格只有带FIFO的OV7670摄像头的一半!而且STM32F103系列单片机就能够轻松驱动(前提是SRAM足够大)。


于是决定使用性价比比较高的STM32F103C8T6这款单片机来驱动,这款单片机单单芯片的话只需8元人民币,而且性能还可以,48脚,RAM20KB,FLASH64K,主频72M,算是性价比较高的了。系统连接图如下所示:



摄像头采集图像之后通过串口发送到上位机,上位机软件如下:



20k的RAM带起来还是比较吃力的



640*480图片效果如下: 



320*240效果如下



效果基本可以。主函数如下:


int main(void)

{

u8 res;

u8 *pname; //带路径的文件名

 

Stm32_Clock_Init(9); // 系统时钟设置

uart_init(72, 115200); // 串口初始化为115200

delay_init(72);     // 延时初始化

usmart_dev.init(72); // 初始化USMART

LED_Init();         // 初始化与LED连接的硬件接口

RCC->AHBENR |= RCC_AHBENR_CRCEN;//硬件crc初始化

delay_ms(5500);

delay_ms(5500);

printf("Enter Main \r\n");

while(OV2640_Init()) //初始化OV2640

{

printf("ov2640 error");

delay_ms(200);

}

printf("ov2640 ok");

delay_ms(1500);

OV2640_JPEG_Mode(); //RGB565模式

OV2640_OutSize_Set(pic_width, pic_height);

ov2640_speed_ctrl();

 

while(1)

{

while(!OV2640_VSYNC) ;

while(OV2640_VSYNC) //等待帧信号

{

res = ov2640_jpg_photo(pname);

delay_ms(10000);

}

 

}

}

关键字:STM32F103C8T6  驱动ov2640  串口传输  上位机 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法