智能车制作

标题: 求助!关于图像采集问题 [打印本页]

作者: _Rp_    时间: 2012-12-10 13:50
标题: 求助!关于图像采集问题
我现用K60采集到的图像是不断上下移动,我看以往的帖子也有这个这个问题。据说是中断的问题。但是我现在实在是找不到我的中断有什么问题。我的采集方法是,先开场中断,带场中断初始化DMA和开行中断。行中断判断行数,当行数大于我设定的行数后关闭场行中断,结束采集。  望大家帮帮忙!{:soso__8233811615348050067_4:}


补充内容 (2012-12-10 20:23):
发现了一个问题!!!  我的摄像头是ov7620的 5v供电的,单片机是3.3v k60。 当我把摄像头供电电压降到4.0v的时候,图像就稳定了,超过了4.5v就是又上下移动了。这个是什么原因呢?

补充内容 (2012-12-11 13:46):
问题解决,OV7620 5v电平和k60 3.3v不匹配!!!!
作者: 野火    时间: 2012-12-10 14:07
可以参考我们的摄像头采集代码

思路是没什么错的,往往是逻辑考虑不全
作者: tujunjie    时间: 2012-12-10 14:29
上照片、、、
作者: tujunjie    时间: 2012-12-10 14:29
上照片,看看到底是怎么回事
作者: _Rp_    时间: 2012-12-10 14:49
tujunjie 发表于 2012-12-10 14:29
上照片,看看到底是怎么回事

因为我的行没有取完,只取了中间一段(80行)。所以图像一会看得很远,一会又看的是近处。图片等会

作者: _Rp_    时间: 2012-12-10 14:54
tujunjie 发表于 2012-12-10 14:29
上照片,看看到底是怎么回事

第一幅
[attach]36592[/attach]
2
[attach]36591[/attach]
3
[attach]36590[/attach]
4
[attach]36589[/attach]
5
[attach]36588[/attach]
6

作者: _Rp_    时间: 2012-12-10 14:55
_Rp_ 发表于 2012-12-10 14:54
第一幅

2

基本上就是这六幅图片不断循环···
作者: tujunjie    时间: 2012-12-10 15:08
_Rp_ 发表于 2012-12-10 14:55
基本上就是这六幅图片不断循环···

80行已经够多了,已经够了,你的采集逻辑没有问题呀!你这种情况我没有遇见过,波特率应该也没有问题,估计是采集程序的问题,其实DMA采集很简单,在场中断里初始化行和DMA,遇见所要采集的行,在行中断里打开DMA中断即可、、、
作者: _Rp_    时间: 2012-12-10 15:12
tujunjie 发表于 2012-12-10 15:08
80行已经够多了,已经够了,你的采集逻辑没有问题呀!你这种情况我没有遇见过,波特率应该也没有问题,估 ...

       void PORTA_IRQHandler()
{
           //场中断
    if(PORTA_ISFR & (1 << 27))              //PTA27触发中断
    {
         if(img_flag == IMG_START)     //需要开始采集图像
  {
   DMA_DADDR(CAMERA_DMA_CH)= (u32)IMG_BUFF;//马上恢复目的地址
   DMA_EN(CAMERA_DMA_CH);              //使能通道CHn 硬件请求      (这样才能继续触发DMA传输)
   img_flag = IMG_GATHER;
                        row=0;
                        PORTC_ISFR  = ~0;
                        enable_irq(89);   //使能行中断    //标记图像采集中
                     
  }
  
        
    }
      
      PORTA_ISFR  = ~0;  
}  


void PORTC_IRQHandler(void)
{
  if(PORTC_ISFR & (1 << 0))                       //PTC0触发行中断
  {
      PORTC_ISFR  = ~0;
      if(row>=50 && row<=130)      //如果当前行数据应该采集
      {
     DMA_EN(CAMERA_DMA_CH); //使能通道CHn 硬件请求      (这样才能继续触发DMA传输)
            
      }
        row++;  
      if(row>=130)
      {
         
               disable_irq(87); //关闭场中的,等待下一次场中断来到重新打开
          disable_irq(89); //关闭行中的,等待下一次场中断来到重新打开
          DMA_DIS(CAMERA_DMA_CH);
              img_flag = IMG_FINISH;
         
      }
  }
     PORTC_ISFR  = ~0;
}
这个是参照野火代码改的 不知道逻辑对不对

作者: tujunjie    时间: 2012-12-10 15:20
_Rp_ 发表于 2012-12-10 15:12
void PORTA_IRQHandler()
{
           //场中断

DMA_DIS(CAMERA_DMA_CH); 这是DMA第几个通道呢?
作者: tujunjie    时间: 2012-12-10 15:20
tujunjie 发表于 2012-12-10 15:20
DMA_DIS(CAMERA_DMA_CH); 这是DMA第几个通道呢?

留下qq交流
作者: _Rp_    时间: 2012-12-10 15:21
qq 100666209
作者: _Rp_    时间: 2012-12-10 20:24
顶!
作者: 389059751    时间: 2012-12-11 16:01

作者: _Rp_    时间: 2012-12-11 18:34
389059751 发表于 2012-12-11 16:01


作者: tearedice    时间: 2012-12-12 00:40
请问楼主用的什么调试工具?
作者: _Rp_    时间: 2012-12-12 12:11
tearedice 发表于 2012-12-12 00:40
请问楼主用的什么调试工具?

IAR + Jlink




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2