OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4458|回复: 8

求助,使用ov2640+阿波罗f767想通过串口输出40*32的RGB图像

[复制链接]

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
发表于 2021-2-20 14:26:35 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-20 15:38:50 | 显示全部楼层
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-20 15:40:47 | 显示全部楼层

vu8 bmp_request=0;                                                //bmp拍照请求:0,无bmp拍照请求;1,有bmp拍照请求,需要在帧中断里面,关闭DCMI接口.
u8 ovx_mode=0;                                                        //bit0:0,RGB565模式;1,JPEG模式
u16 curline=0;                                                        //摄像头输出数据,当前行编号
u16 yoffset=0;                                                        //y方向的偏移量

#define output_width 32
#define output_height 40


u32 dcmi_line_buf0 [output_width];
u32 dcmi_line_buf1 [output_width];
u32 picture_data_buf [output_width*output_height];


volatile u32 jpeg_data_len=0;                         //buf中的JPEG有效数据长度
volatile u8 jpeg_data_ok=0;                                //JPEG数据采集完成标志
volatile u8 currentline = 0;
volatile u8 one_shot_ok = 0;

回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-20 15:41:12 | 显示全部楼层
然后dma中断函数将数据存放在数组里面
void out_dcmi_rx_callback(void){
        u16 *pbuf;
        u16 * databuf =(u16*)picture_data_buf;
        databuf = databuf+currentline*output_width;
        u8 i ;
       
        if(DMADMCI_Handler.Instance->CR&(1<<19))
        {
                pbuf = (u16*)dcmi_line_buf0;
        }
        else {
                pbuf = (u16*)dcmi_line_buf1;
        }
       
        for(i=0;i<output_width; i++){
                databuf[i] = pbuf[i];
        }
        LED0_Toggle;
        currentline++;
       
}
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-20 15:42:06 | 显示全部楼层
DCMI中断将one_shot_ok置为1
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
{
        //jpeg_data_process();//jpeg数据处理
        LED1_Toggle;
        ov_frame++;
    //重新使能帧中断,因为HAL_DCMI_IRQHandler()函数会关闭帧中断
    __HAL_DCMI_ENABLE_IT(&DCMI_Handler,DCMI_IT_FRAME);
       
        ///
        one_shot_ok = 1;
        DCMI_Stop();
}
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-20 17:01:35 | 显示全部楼层
        OV2640_RGB565_Mode();        //RGB565模式
        OV2640_Light_Mode(0);        //自动模式
        OV2640_Color_Saturation(3);//色彩饱和度0
        OV2640_Brightness(4);        //亮度0
        OV2640_Contrast(3);                //对比度0
        //OV2640_Special_Effects(2); //设置成黑白
        OV2640_ImageWin_Set(0,0,1600,1184); // 1600 = 40 * 40 , 1184 = 32 *37
        OV2640_OutSize_Set(output_width,output_height);
        DCMI_Init();                        //DCMI配置

        dcmi_rx_callback=out_dcmi_rx_callback;
        DCMI_DMA_Init((u32)dcmi_line_buf0,(u32)dcmi_line_buf1,output_width/2,DMA_MDATAALIGN_HALFWORD,DMA_MINC_ENABLE);//DCMI DMA配置  
       

        currentline = 0 ;
        one_shot_ok = 0;
       

        LCD_Clear(BLACK);
        DCMI_Start();                         //启动传输
  while(one_shot_ok!=1)
        {
                        delay_ms(10);
        }       
        ouputpointer = (u16*)picture_data_buf;
        for(i=0;i < output_height ; i++){
                        for(j=0 ; j < output_width ; j++){
                                printf("%x ",ouputpointer[i*output_width+j]);
                        }
                        printf("\r\n");
        }
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-20 17:02:18 | 显示全部楼层
但是通过串口读出来的数据不对,两行一样的,就像这样
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
160 80 20 60 40 20 803 803 1040 0 60 60 40 40 40 40 40 40 20 860 2 2 800 800 800 800 1000 1000 40 41 1000 1000
0 0 20 20 20 20 1 1 0 20 0 0 0 0 20 20 20 20 21 21 20 20 0 0 0 800 0 0 20 20 0 0
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-21 09:47:38 | 显示全部楼层
通过修改了dma初始化size和ImageWin_Set和OutSize_Set函数,但是发现读出来的数据不对劲,有没有老哥懂啊
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-12-13
在线时间
7 小时
 楼主| 发表于 2021-2-22 19:34:42 | 显示全部楼层
有没有老哥给点意见
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 00:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表