OpenEdv-开源电子网

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

STM32F429图像采集OV2640保存RGB565到数组问题,200积分悬赏

[复制链接]

24

主题

130

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2016-7-20
在线时间
137 小时
发表于 2017-9-10 14:37:56 | 显示全部楼层 |阅读模式
200金钱
本帖最后由 STM23小白 于 2017-9-10 15:03 编辑

我要采集RGB565图像到数组以方便做图像处理,数组是申请的片外RAM,但如何判断一帧图像的帧头和帧尾呢。例程里面是直接判断JPG格式,RGB565如何判断呢?
贴上代码,求大神看一看逻辑上应该如何修改。
这是采集到一帧图像回调
if(photo_data_ok == IMG_START)
      {
        __HAL_DMA_DISABLE(&DMADMCI_Handler);//关闭DMA
        while(DMA2_Stream1->CR&0X01); //等待DMA2_Stream1可配置
        rlen=lcddev.width-__HAL_DMA_GET_COUNTER(&DMADMCI_Handler);//得到剩余数据长度
        pbuf=photo_data_buf+photo_data_len;//偏移到有效数据末尾,继续添加
        if(DMADMCI_Handler.Instance->CR&(1<<19))
          for(i=0;i<rlen;i++)
            pbuf=dcmi_line_buf_photo[1];//读取buf1里面的剩余数据
        else
          for(i=0;i<rlen;i++)
            pbuf=dcmi_line_buf_photo[0];//读取buf0里面的剩余数据
        photo_data_len += rlen;
        photo_data_ok = IMG_FINISH;
      }
      if(photo_data_ok == IMG_NEXT)
      {
        __HAL_DMA_SET_COUNTER(&DMADMCI_Handler,photo_line_size); //传输长度为photo_buf_size*4字节
        __HAL_DMA_ENABLE(&DMADMCI_Handler); //打开DMA
        photo_data_ok = IMG_START;
        photo_data_len = 0;        //数据重新开始
      }
这是DMA2数据流1中断回调
//图像采集回调函数
void data_dcmi_rx_callback(void)
{
  u32 i;
  u32 *pbuf;
  pbuf=photo_data_buf+photo_data_len;//偏移到有效数据末尾
  if(DMADMCI_Handler.Instance->CR&(1<<19))//buf0已满,正常处理buf1
  {
    for(i=0;i<lcddev.width;i++)pbuf=dcmi_line_buf_photo[0];//读取buf0里面的数据
    photo_data_len+=lcddev.width;//偏移
  }
  else //buf1已满,正常处理buf0
  {
    for(i=0;i<lcddev.width;i++)pbuf=dcmi_line_buf_photo[1];//读取buf1里面的数据
    photo_data_len+=lcddev.width;//偏移
  }
}
这是主函数大循环
//获取图像
void camera_get_img(void)
{
  photo_data_len=0;
  photo_data_ok = IMG_START;//开始采集一帧图像保存至数组
  dcmi_rx_callback = data_dcmi_rx_callback;//设置保存图像回调函数
  while(photo_data_ok != IMG_FINISH);
  photo_data_ok = IMG_NEXT;//采集第二帧
  while(photo_data_ok != IMG_FINISH);
  dcmi_rx_callback = lcd_dcmi_rx_callback;//设置显示回掉函数
  DCMI_DMA_Init((u32)dcmi_line_buf_photo[0],(u32)dcmi_line_buf_photo[1],lcddev.width/2,DMA_MDATAALIGN_HALFWORD,DMA_MINC_ENABLE);//DCMI DMA配置  
}
基本上根据原子代码修改的,求给一个实现功能的思路

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2017-9-10 15:17:51 | 显示全部楼层
进一次帧中断不就是了么
回复

使用道具 举报

24

主题

130

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2016-7-20
在线时间
137 小时
 楼主| 发表于 2017-9-10 15:25:38 | 显示全部楼层
huyang201306 发表于 2017-9-10 15:17
进一次帧中断不就是了么

进一次帧中断函数就是我上面第一个函数,根据原子写的例程,进一次帧中断只有写一行数据呀
回复

使用道具 举报

24

主题

130

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2016-7-20
在线时间
137 小时
 楼主| 发表于 2017-9-10 15:28:00 | 显示全部楼层
huyang201306 发表于 2017-9-10 15:17
进一次帧中断不就是了么

如果帧中断能把数据全部写完,那行DAM2S1的行中断又是什么意思呢
回复

使用道具 举报

24

主题

130

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2016-7-20
在线时间
137 小时
 楼主| 发表于 2017-9-12 11:35:51 | 显示全部楼层
回复

使用道具 举报

24

主题

130

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2016-7-20
在线时间
137 小时
 楼主| 发表于 2017-9-16 08:53:01 | 显示全部楼层
求解答
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-17 01:11:14 | 显示全部楼层
你先读懂我的代码吧。RGB565没有什么帧头帧尾,而是通过帧中断和行同步时钟来确定数据的起始的。
回复

使用道具 举报

24

主题

130

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2016-7-20
在线时间
137 小时
 楼主| 发表于 2017-9-17 12:06:41 | 显示全部楼层
正点原子 发表于 2017-9-17 01:11
你先读懂我的代码吧。RGB565没有什么帧头帧尾,而是通过帧中断和行同步时钟来确定数据的起始的。

原子哥,为什么行中断读了值以后,进帧中断还有剩余的值要读呢?可以配置进帧中断把一帧的图像一次性读完吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-18 00:51:00 | 显示全部楼层
STM23小白 发表于 2017-9-17 12:06
原子哥,为什么行中断读了值以后,进帧中断还有剩余的值要读呢?可以配置进帧中断把一帧的图像一次性读完 ...

不行,每一个行信号,出一行数据
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-10-7
在线时间
11 小时
发表于 2017-11-5 18:37:22 | 显示全部楼层
帮顶
回复

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2018-11-22
在线时间
24 小时
发表于 2018-11-22 19:48:51 | 显示全部楼层
解决了吗0.0
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 10:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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