初级会员

- 积分
- 101
- 金钱
- 101
- 注册时间
- 2021-9-21
- 在线时间
- 19 小时
|
8金钱
//JPEG测试
//JPEG数据,通过串口2发送给电脑.
void jpeg_test(void)
{
u32 i;
u8 *p;
u8 size=1; //默认是QVGA 640*480尺寸
u8 msgbuf[15]; //消息缓存区
LCD_Clear(WHITE);
sprintf((char*)msgbuf,"JPEG Size:%s",JPEG_SIZE_TBL[size]);
LCD_ShowString(30,180,400,24,24,msgbuf); //显示当前JPEG分辨率
POINT_COLOR=RED;
//自动对焦初始化
OV5640_RGB565_Mode(); //RGB565模式
OV5640_Focus_Init();
OV5640_JPEG_Mode(); //JPEG模式
OV5640_Light_Mode(0); //自动模式
OV5640_Color_Saturation(3);//色彩饱和度0
OV5640_Brightness(4); //亮度0
OV5640_Contrast(3); //对比度0
OV5640_Sharpness(33); //自动锐度
OV5640_Focus_Constant();//启动持续对焦
My_DCMI_Init(); //DCMI配置
DCMI_DMA_Init((u32)&jpeg_buf,jpeg_buf_size,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);//DCMI DMA配置
OV5640_OutSize_Set(4,0,jpeg_img_size_tbl[size][0],jpeg_img_size_tbl[size][1]);//设置输出尺寸
DCMI_Start(); //启动传输
while(1)
{
if(jpeg_data_ok==1) //已经采集完一帧图像了
{
p=(u8*)jpeg_buf;
LCD_ShowString(30,210,210,16,16,"Sending JPEG data..."); //提示正在传输数据
for(i=0;i<jpeg_data_len*4;i++) //发送整个jpg文件
{
while((USART1->SR&0X40)==0); //循环发送,直到发送完毕
USART1->DR=p[i];
}
for(i=0;i<10;i++) //发送#提示上位机图像数据发送完成
{
USART1->DR='#';
while((USART1->SR&0X40)==0); //循环发送,直到发送完毕
}
LCD_ShowString(30,210,210,16,16,"Send data complete!!");//提示传输结束设置
jpeg_data_ok=2; //标记jpeg数据处理完了,可以让DMA去采集下一帧了.
break;
}
}
}
这是根据论坛一位大佬的开源项目改的(原项目采用ov2640),串口接收的数据找不到数据头,图片无法正常解析,请大佬们帮忙看看!!
|
|