• 鸟瞰“中国围屋之乡” 造型独特如城堡 2019-04-16
  • 先想好如何处理可能的危害,要有经济“卫国战争”的准备,要将困难多设想一点,想到了就不会很被动。 2019-04-16
  • 实现中华民族伟大复兴是近代以来中华民族最伟大的梦想(认真学习宣传贯彻党的十九大精神) 2019-04-13
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-04-13
  • 新华网评:凝聚打赢脱贫攻坚战的强大合力 2019-04-02
  • 打造历史文化名城 “安宁记忆”项目启幕 2019-04-02
  • 打开设计图纸的说明。 2019-03-30
  • 一语惊坛(5月15日):川航备降,是临危不惧的中国智慧的中国奇迹。 2019-03-25
  • 社长手记造车奇人尹同跃并非只为奇瑞而来 2019-03-17
  • 三代航天人做客人民网 共话中国航天创建60年 2019-03-01
  • 回复@寻找失落的真理:跟你的铁环玩去!咱真的没兴趣碾压你也。 2019-03-01
  • 有人踢球踢进了手术室 有人看球看到脖子扳牢了 2019-02-23
  • 朋友圈买过这些东西吗?原来都是不靠谱的! 2019-02-05
  • 为宣传奇绝秀美旅游风光 鹰潭市委书记自拍上央视(图) 2019-02-05
  • 统一监管缺位容易出现监管套利 2018-11-22
  • 快乐十分11选5:社区导航

     

    广东十一选五开奖图

    搜索
    查看: 266|回复: 5
    打印 上一主题 下一主题

    [原创] 【 ST NUCLEO-H743ZI测评】(4)-DCMI之OV7620采集

    [复制链接]

    广东十一选五开奖图 www.guu6.com 539

    TA的帖子

    1

    TA的资源

    一粒金砂(高级)

    Rank: 3Rank: 3

    跳转到指定楼层
    楼主
    发表于 2019-3-15 22:25 | 只看该作者 |只看大图 |倒序浏览 |阅读模式
        我对对应摄像头的认识最早应该是从之前飞思卡尔智能车(现在应该是恩智浦智能车了)开始的,那会儿有摄像头组,我参加的不是这个组别,但是对这个比较好奇,我是参加电磁组,采集的是磁场的中的几个点,根据点的值来推断通电导线位置。而摄像头是直接看一个面,低头看脚下,抬头看前方很是羡慕。再之后是参加论坛测评NXP LPC54100的时候想趁机会采集下摄像头,当时是用的之前的土办法,自己设行中断场中断来大致获取数据,数据量也有限,根本无法获得整张图片。    现在有了H7的板子,自然是要试试DCMI的,前面废话说了不少,马上开始正题。

    DCMI配置大致如上图,再额外使能个串口。
    下面是初始化代码
    1. DCMI->IER |=  DCMI_IER_VSYNC_IE ;
    2.         DCMI->CR |=  DCMI_CR_CAPTURE | DCMI_CR_CM;
    3.         DCMI->CR =        0x00094282;
    复制代码

    开中断,再中断里判断采集的状况。
    1. if((DCMI->RISR&DCMI_RIS_VSYNC_RIS)==DCMI_RIS_VSYNC_RIS)
    2.         {
    3.                 DCMI->ICR |= DCMI_ICR_VSYNC_ISC;
    4.                 if(dcmi_line_cnt>0)finish_cnt[2]=dcmi_line_cnt;
    5.                 dcmi_line_cnt=0;
    6.                 if(dcmi_pixel_cnt>0)finish_cnt[0]=dcmi_pixel_cnt;
    7.                 dcmi_pixel_cnt=0;
    8.                
    9.         }
    10.         if((DCMI->RISR&DCMI_RIS_LINE_RIS)==DCMI_RIS_LINE_RIS)
    11.         {
    12.                 dcmi_line_cnt++;
    13.                 DCMI->ICR |= DCMI_ICR_LINE_ISC;
    14.         }
    15.         if((DCMI->RISR&DCMI_RIS_FRAME_RIS)==DCMI_RIS_FRAME_RIS)
    16.         {
    17.                 if(dcmi_line_cnt>0)finish_cnt[3]=dcmi_line_cnt;
    18.                 dcmi_line_cnt=0;
    19.                 if(dcmi_pixel_cnt>0)finish_cnt[1]=dcmi_pixel_cnt;
    20.                 dcmi_pixel_cnt=0;
    21.                 DCMI->ICR |= DCMI_ICR_FRAME_ISC;
    22.                 vsync_flag=1;
    23.         }
    24.         if((DCMI->RISR&DCMI_RIS_OVR_RIS)==DCMI_RIS_OVR_RIS)
    25.         {
    26.                 DCMI->ICR |= DCMI_ICR_OVR_ISC;
    27.         }
    28.         if((DCMI->RISR&DCMI_RIS_ERR_RIS)==DCMI_RIS_ERR_RIS)
    29.         {
    30.                 DCMI->ICR |= DCMI_ICR_ERR_ISC;
    31.         }
    复制代码

    在while循环里处理采集的数据,采集完完整的数据交给TFT显示,TFT显示是沿用之前的SPI TFT显示。
    1. if((DCMI->SR&DCMI_SR_FNE)==DCMI_SR_FNE)
    2.                 {
    3.                        
    4.                         d_temp.u32=DCMI->DR;
    5.                         d_buf[dcmi_pixel_cnt*2]=d_temp.u8[0];
    6.                         d_buf[dcmi_pixel_cnt*2+1]=d_temp.u8[2];
    7.                         dcmi_pixel_cnt++;
    8.                         if(dcmi_pixel_cnt>10000)
    9.                                 dcmi_pixel_cnt=0;
    10.                         HAL_GPIO_TogglePin(LD3_GPIO_Port,LD3_Pin);
    11.                 }
    12.                 else
    13.                 {
    14.                         uart_decode();
    15.                         if(vsync_flag)
    16.                         {
    17.                                 vsync_flag=0;
    18.                                 showimageHUI2RGB(d_buf);
    19.                                 //HAL_Delay(100);
    20.                                         //DCMI->CR |= DCMI_CR_CAPTURE;
    21.                         }
    22.                 }
    23.   }
    复制代码

    由于OV7620我用的只采灰度图像,TFT是彩屏,于是需要转换一下
    tRGB =((x >> 3)|((x & ~3) << 3)|((x & ~7) << 8));
    DCMI的功能很多,有各种功能,比如单次拍照,连续采集,全屏采集,指定区域采集,各种分配等。
    除此调试有点摸不到头脑,于是写了个简单的上位机软件配合调试。
    功能看下面串口解码函数就一目了然,上位机可以控制H7开始采集,可以将采集的数上传,也可以实时更改DCMI寄存器,这样调试就相对简单点,不用来回编译下载程序。
    1. void uart_decode(void)
    2. {
    3.         if(uart_flag)
    4.         {
    5.                 uart_flag=0;
    6.                 switch(uart_dara[2])
    7.                 {
    8.                         case 0:
    9.                                 if(uart_dara[3])
    10.                                 {
    11.                                         DCMI->CR |= DCMI_CR_CAPTURE;
    12.                                 }
    13.                         break;
    14.                         case 1:
    15.                                 if(uart_dara[3])
    16.                                 {
    17.                                         HAL_UART_Transmit(&huart3,"START",5,100);
    18.                                         HAL_UART_Transmit(&huart3,d_buf,19200,10000);
    19.                                         HAL_UART_Transmit(&huart3,"END",3,100);
    20.                                         DCMI->CR |= DCMI_CR_CAPTURE;
    21.                                 }
    22.                         break;
    23.                         case 2:
    24.                                 if(uart_dara[3])
    25.                                 {
    26.                                         DCMI->CR |= DCMI_CR_CM;
    27.                                 }
    28.                         break;
    29.                         case 3:
    30.                                 d_reg.u8[3]=uart_dara[4];
    31.                                 d_reg.u8[2]=uart_dara[5];
    32.                                 d_reg.u8[1]=uart_dara[6];
    33.                                 d_reg.u8[0]=uart_dara[7];
    34.                                 switch(uart_dara[3])
    35.                                 {
    36.                                         case 0:
    37.                                                
    38.                                         break;
    39.                                         case 1:
    40.                                                 DCMI ->CR = d_reg.u32;
    41.                                         break;
    42.                                         case 2:
    43.                                                 DCMI ->CWSIZER = d_reg.u32;
    44.                                         break;
    45.                                         case 3:
    46.                                                 DCMI ->CWSTRTR = d_reg.u32;
    47.                                         break;
    48.                                         case 4:
    49.                                                 DCMI ->ESCR = d_reg.u32;
    50.                                         break;
    51.                                         case 5:
    52.                                                 DCMI ->ESUR = d_reg.u32;
    53.                                         break;
    54.                                         case 6:
    55.                                                 DCMI ->IER = d_reg.u32;
    56.                                         break;

    57.                                 }
    58.                         break;
    59.                                
    60.                 }
    61.         }
    62. }
    复制代码

    上位机界面如下图

    采集实拍


    最后再来几张摄像头采集,TFT显示的图片。





    DCMI的功能很强大,再配上H7的超高性能,应该可以做些人工智能或者机器视觉之类的东西,本次测评程序有点简陋,简单的测试了下DCMI的功能,没有使用DMA,这肯定很影响H7的正常发挥,希望H7不要介意。
    本次测评到此结束,谢谢阅读!


    此内容由EEWORLD论坛网友supermiao123原创,如需转载或用于商业用途需征得作者同意并注明出处



    此帖出自stm32/stm8论坛


    368

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    沙发
    发表于 2019-3-16 20:27 | 只看该作者
    厉害,请教上位机用什么编的?

    点评

    楼下说的对,labview  详情 回复 发表于 2019-3-17 17:29


    2

    TA的帖子

    0

    TA的资源

    一粒金砂(初级)

    Rank: 1

    板凳
    发表于 2019-3-16 22:17 | 只看该作者
    xunke 发表于 2019-3-16 20:27
    厉害,请教上位机用什么编的?

    LabVIEW


    5736

    TA的帖子

    9

    TA的资源

    版主

    Rank: 6Rank: 6

    4
    发表于 2019-3-16 22:56 来自手机 | 只看该作者
    这个看起来不错

    点评

    谢谢  详情 回复 发表于 2019-3-17 17:29


    539

    TA的帖子

    1

    TA的资源

    一粒金砂(高级)

    Rank: 3Rank: 3

    5
     楼主| 发表于 2019-3-17 17:29 | 只看该作者
    xunke 发表于 2019-3-16 20:27
    厉害,请教上位机用什么编的?

    楼下说的对,labview


    539

    TA的帖子

    1

    TA的资源

    一粒金砂(高级)

    Rank: 3Rank: 3

    6
     楼主| 发表于 2019-3-17 17:29 | 只看该作者

    谢谢


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

    本版积分规则

    • 论坛活动 E手掌握

      扫码关注
      EEWORLD 官方微信

    • EE福利  唾手可得

      扫码关注
      EE福利 唾手可得

    Archiver|手机版|小黑屋|广东十一选五开奖图 ( 京ICP证 060456 )

    GMT+8, 2019-4-19 01:22 , Processed in 0.198018 second(s), 19 queries , Gzip On, MemCache On.

    快速回复 广东十一选五开奖图 返回列表
  • 鸟瞰“中国围屋之乡” 造型独特如城堡 2019-04-16
  • 先想好如何处理可能的危害,要有经济“卫国战争”的准备,要将困难多设想一点,想到了就不会很被动。 2019-04-16
  • 实现中华民族伟大复兴是近代以来中华民族最伟大的梦想(认真学习宣传贯彻党的十九大精神) 2019-04-13
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-04-13
  • 新华网评:凝聚打赢脱贫攻坚战的强大合力 2019-04-02
  • 打造历史文化名城 “安宁记忆”项目启幕 2019-04-02
  • 打开设计图纸的说明。 2019-03-30
  • 一语惊坛(5月15日):川航备降,是临危不惧的中国智慧的中国奇迹。 2019-03-25
  • 社长手记造车奇人尹同跃并非只为奇瑞而来 2019-03-17
  • 三代航天人做客人民网 共话中国航天创建60年 2019-03-01
  • 回复@寻找失落的真理:跟你的铁环玩去!咱真的没兴趣碾压你也。 2019-03-01
  • 有人踢球踢进了手术室 有人看球看到脖子扳牢了 2019-02-23
  • 朋友圈买过这些东西吗?原来都是不靠谱的! 2019-02-05
  • 为宣传奇绝秀美旅游风光 鹰潭市委书记自拍上央视(图) 2019-02-05
  • 统一监管缺位容易出现监管套利 2018-11-22