注册 登录
查看: 554|回复: 17

[鹰眼] 关于鹰眼使用的问题?【已解决】

[复制链接]
发表于 2014-12-1 10:52:47 | 显示全部楼层 |阅读模式
本帖最后由 s572508290 于 2014-12-8 21:08 编辑


我采集的图像分为三个区域:
   1区域:看图像是应该在最右边,(大概有16个像素点宽度),可是它却跑到最左边去了
  2区域是正常显示的区域
  3区域是无数据区。把摄像头该盖住的时候,3区域还是全白,不知道这是什么原因。。。

第1区的问题应该是时序的问题,可是最后一个区域是什么原因呢?我换成60*80、还有240*180,还是一样的,下面始终有一块无数据区域,求大神指点迷津

1区域:最右边跑到最左边去了,我看鹰眼的使用说明,也许是场中断以来就开始采集图像,刚刚把上一场的的最后 一个输出信号采集到、由于是场中断采集,所以看起来是最右边的跑到最左边去了。当然这只是我的分析,没经过实验。今天突然发现又正常了,,,,,,自己做的板子上正常了,,比较神奇。呵呵呵(或许是我把时钟改过吧,不记得了,,,以前该时钟没效果的。。。)
3区域:没数据。这个就是自己的原因了,检测发现DMA采集次数少些很多,所以就。。。

就这些了:还有的一个问题啊,希望知道的大大们解决一下啦。就是我通过串口和电脑相连接鹰眼可以初始化成功(注:串口模块也是自己自己焊接的板子上直接用的),不通过串口,独立在自己焊接的板子上让鹰眼初始化却总是失败,我知道大概是我弄的板子有问题,哪位大大指点一些迷津呢,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-12-1 10:54:27 | 显示全部楼层
你是液晶上看还是怎样?
用上位机来看图像,截图一下图像来看看。

1和2 是这个原因导致的:
改了底层后解决了图像卡住的问题 - 智能车讨论区 - 山外论坛 http://vcan123.com/forum.php?mod=viewthread&tid=4363&ctid=6
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-1 11:03:14 | 显示全部楼层
井字条纹:

盖上摄像头盖子的时候:

突出1区域而采集的图像:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-12-1 11:04:54 | 显示全部楼层
s572508290 发表于 1417402994
井字条纹:

盖上摄像头盖子的时候:

突出1区域而采集的图像:
你是用K60 or KL26?或者是自己移植的?

感觉是信号线受到了干扰,接个 150欧下拉电阻看看。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-1 11:05:51 | 显示全部楼层
s572508290 发表于 1417402994
井字条纹:

盖上摄像头盖子的时候:

突出1区域而采集的图像:
用液晶看的时候,底部也是白色的?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-1 11:10:50 | 显示全部楼层
山外メ雲ジ 发表于 1417403094
你是用K60 or KL26?或者是自己移植的?

感觉是信号线受到了干扰,接个 150欧下拉电阻看看。
看了你写的摄像头程序,自己移植了的
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-1 11:12:29 | 显示全部楼层
山外メ雲ジ 发表于 1417403151
用液晶看的时候,底部也是白色的?
一直是在用上位机查看,查看数据的时候下面那几行的数据全部为00,
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-1 11:14:17 | 显示全部楼层
s572508290 发表于 2014-12-1 11:10
看了你写的摄像头程序,自己移植了的

先试试源程序。
自己移植,容易漏了部分代码而导致异常。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-1 11:15:36 | 显示全部楼层
山外メ雲ジ 发表于 1417403657
先试试源程序。
自己移植,容易漏了部分代码而导致异常。
嗯,我再试试
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-1 12:17:02 | 显示全部楼层
山外メ雲ジ 发表于 1417403657
先试试源程序。
自己移植,容易漏了部分代码而导致异常。
我发现鹰眼只要在盖上盖子的时候初始化才容易成功,不盖盖子的时候不太容易初始化成功(PS:基本上没初始化成功过),这是个什么原因呢?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-1 12:31:39 | 显示全部楼层
s572508290 发表于 2014-12-1 12:17
我发现鹰眼只要在盖上盖子的时候初始化才容易成功,不盖盖子的时候不太容易初始化成功(PS:基本上没初始化 ...

你是自己杜邦线接线?管脚好像是受干扰吧。

用原始例程,最好用山外哥的核心板进行测试。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-1 14:14:34 | 显示全部楼层
s572508290 发表于 1417407422
我发现鹰眼只要在盖上盖子的时候初始化才容易成功,不盖盖子的时候不太容易初始化成功(PS:基本上没初始化成功过),这是个什么原因呢?
现在搞定了没?试过我们的原始例程没?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 21:17:54 | 显示全部楼层
本帖最后由 s572508290 于 2014-12-8 21:25 编辑
山外メ雲ジ 发表于 2014-12-1 14:14
现在搞定了没?试过我们的原始例程没?

试过原始例序了,不过没那没把图像弄出来。(PS:现在我用的是 MDK 在编,所以IAR有的地方不懂)。现在我是完全按照你的例程改写,这次倒不是后面的图像到前边了,二是到后面的图像到前面,还是最下面有一块无数据,,,,我接上了一个下拉电阻,但是还是一样的。。。。山哥,能够大概说说图像前移或者后移的原因是什么吗??
程序大概如下:
void OV_ISR(uint32_t array)
{
    if(ov7725_img_flag== IMG_START)
    {
       GPIO_ITDMAConfig(HW_GPIOA, VSYN, kGPIO_IT_RisingEdge, false);     //关闭场中断
       ov7725_img_flag = IMG_GATHER;
       DMA_SetDestAddress(HW_DMA_CH2, (uint32_t)&ImageTemp[0]);           //设置传输地址
       DMA_EnableRequest(HW_DMA_CH2);                                                          //使能DMA
    }
    else
    {   
        GPIO_ITDMAConfig(HW_GPIOA, VSYN, kGPIO_IT_RisingEdge, false); //关闭场中断
        ov7725_img_flag = IMG_FAIL;
    }
}
void DMA_OV7725(void)
{
    ov7725_img_flag = IMG_FINISH;                           //DMA 中断中图像采集状态改变(完成)
}
void ov7725Init(void)
{
    uint32_t i;
    for(i=0;i<8;i++)
    {
        GPIO_QuickInit(HW_GPIOA, 8+i, kGPIO_Mode_IFT);             //数据引脚初始化为浮空输入
    }
    /* 场中断  行中断 像素中断 */
    GPIO_QuickInit(HW_GPIOA, PCLK,kGPIO_Mode_IPU);                   //配置PCLK为上拉输入
    GPIO_QuickInit(HW_GPIOA,VSYN, kGPIO_Mode_IPD);                 //配置VSYN为上拉输入
  //  GPIO_QuickInit(HW_GPIOA, HREF, kGPIO_Mode_IPU);
    PORT_PinPassiveFilterConfig(HW_GPIOA,VSYN,ENABLE);          //配置VSYN开启无源滤波器
    GPIO_CallbackInstall(HW_GPIOA, OV_ISR);                                 //注册场中断回调函数
    GPIO_ITDMAConfig(HW_GPIOA, PCLK, kGPIO_DMA_RisingEdge,true);     /PLCK 触发DMA传输
   //GPIO_ITDMAConfig(HW_GPIOA, HREF, kGPIO_DMA_RisingEdge,1);
    GPIO_ITDMAConfig(HW_GPIOA, VSYN, kGPIO_IT_RisingEdge,false);              //VSYN中断初始化(先禁止)
    // 初始化数据端口
   
    DMA_InitTypeDef DMA_InitStruct1 = {0};                                                               //Dma 初始化
    DMA_InitStruct1.chl = HW_DMA_CH2;
    DMA_InitStruct1.chlTriggerSource = PORTA_DMAREQ;                                       //A后触发DMA传输
    DMA_InitStruct1.triggerSourceMode = kDMA_TriggerSource_Normal;               
    DMA_InitStruct1.minorLoopByteCnt = 1;                                                     
    DMA_InitStruct1.majorLoopCnt = Image_H*Image_W/10;                       //触发次数 Image_H*Image_W/8        写少了了所以会出现空白区域
   
    DMA_InitStruct1.sAddr = (uint32_t)&PTA->PDIR + 8/8;                       //原地址
    DMA_InitStruct1.sLastAddrAdj = 0;
    DMA_InitStruct1.sAddrOffset = 0;
    DMA_InitStruct1.sDataWidth = kDMA_DataWidthBit_8;               //8位数据宽度
    DMA_InitStruct1.sMod = kDMA_ModuloDisable;
   
    DMA_InitStruct1.dAddr = (uint32_t)&(ImageTemp[0]);                    //目标地址
    DMA_InitStruct1.dLastAddrAdj = -Image_H*Image_W/10;
    DMA_InitStruct1.dAddrOffset = 1;
    DMA_InitStruct1.dDataWidth = kDMA_DataWidthBit_8;
    DMA_InitStruct1.dMod = kDMA_ModuloDisable;
    DMA_Init(&DMA_InitStruct1);
    DMA_CallbackInstall(HW_DMA_CH2, DMA_OV7725);                      //注册中断回调函数
    DMA_ITConfig(HW_DMA_CH2, kDMA_IT_Major,true);                   //配置为DMA传输完成中断
}
void ov7725_eagle_get_img()
{
    ov7725_img_flag = IMG_START;                   //开始采集图像
    GPIO_ITDMAConfig(HW_GPIOA, VSYN, kGPIO_IT_RisingEdge, true);                         //允许PTA的中断
    while(ov7725_img_flag != IMG_FINISH)           //等待图像采集完毕
    {
        if(ov7725_img_flag == IMG_FAIL)            //假如图像采集错误,则重新开始采集
        {
            ov7725_img_flag = IMG_START;           //开始采集图像
              //写1清中断标志位(必须的,不然回导致一开中断就马上触发中断)
            GPIO_ITDMAConfig(HW_GPIOA, VSYN, kGPIO_IT_RisingEdge, true);                 //允许PTA的中断
        }
        printf("succec\r\n");
    }
}
(PS:中断标志为自动在中断如口清零了:
例如:
void PORTA_IRQHandler(void)
{
    uint32_t ISFR;
    /* safe copy */
    ISFR = PORT_InstanceTable[HW_GPIOA]->ISFR;
    /* clear IT pending bit */
    PORT_InstanceTable[HW_GPIOA]->ISFR = 0xFFFFFFFF;
    if(GPIO_CallBackTable[HW_GPIOA])
    {
        GPIO_CallBackTable[HW_GPIOA](ISFR);
    }
}

void DMA15_IRQHandler(void)
{
    DMA0->CINT = DMA_CINT_CINT(15);
    if(DMA_CallBackTable[15]) DMA_CallBackTable[15]();
}


回复 支持 反对

使用道具 举报

发表于 2014-12-2 21:22:47 | 显示全部楼层
s572508290 发表于 2014-12-2 21:17
试过原始例序了,不过没那没把图像弄出来。(PS:现在我用的是 MDK 在编,所以IAR有的地方不懂)。现在我 ...

先用原始例程测吧。DMA这部分的代码,不熟悉,漏了某些步骤,或者交换某些步骤,都会出现各种异常。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 21:23:29 | 显示全部楼层
本帖最后由 s572508290 于 2014-12-2 21:25 编辑
山外メ雲ジ 发表于 2014-12-1 14:14
现在搞定了没?试过我们的原始例程没?


还是井字条纹:

全黑图像:


右边那快该属于前面的有时候是8个像素点,有时间确实16个像素点,这个是不是时间没处理号呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 21:27:22 | 显示全部楼层
s572508290 发表于 1417526274
试过原始例序了,不过没那没把图像弄出来。(PS:现在我用的是 MDK 在编,所以IAR有的地方不懂)。现在我是完全按照你的例程改写,这次倒不是后面的图像到前边了,二是到后面的图像到前面,还是最下面有一块无数据,,,,我接上了一个下拉电阻,但是还是一样的。。。。山哥,能够大概说说图像前移或者后移的原因是什么吗 ...
竟然变成笑脸了,,,,,
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 21:28:07 | 显示全部楼层
s572508290 发表于 1417526274
试过原始例序了,不过没那没把图像弄出来。(PS:现在我用的是 MDK 在编,所以IAR有的地方不懂)。现在我是完全按照你的例程改写,这次倒不是后面的图像到前边了,二是到后面的图像到前面,还是最下面有一块无数据,,,,我接上了一个下拉电阻,但是还是一样的。。。。山哥,能够大概说说图像前移或者后移的原因是什么吗 ...
笑脸是大写字母“P”
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 21:31:18 | 显示全部楼层
山外メ雲ジ 发表于 1417526567
先用原始例程测吧。DMA这部分的代码,不熟悉,漏了某些步骤,或者交换某些步骤,都会出现各种异常。
山哥,我用的 MDK 这个编译软件的, 所以直接用你的有些引脚没看懂。
但是编程的逻辑可以是一样的,这个什么软件都差不多的,所以我就先直接借鉴的。搞dMA模块好久好久了啊,,,,,就是把这个摄像模块处理不好。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

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

本版积分规则

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