智能车制作

标题: 摄像头组求助 [打印本页]

作者: J-sir    时间: 2012-11-22 18:15
标题: 摄像头组求助
我用DMA+ADC采集模拟摄像头图像。图像很清楚,可是总是先发来一副远一点的一方,又发来一副近一点的地方,就好像把一场当做两场来采了,我测了场中断没问题,PAL信号,一场大约20ms。不知道怎么解决,跪求大神相助
作者: 野火    时间: 2012-11-22 18:27
先发来一副远一点的一方,又发来一副近一点的地方,就好像把一场当做两场来采了??有没有图片?
是不是采集到的图像由两幅图像组成,上面那副是本次的采集图像,下面那副是下一场的采集图像?
看这文档,有讲到这问题:
http://www.znczz.com/thread-111159-1-1.html


作者: J-sir    时间: 2012-11-22 22:18
野火 发表于 2012-11-22 18:27
先发来一副远一点的一方,又发来一副近一点的地方,就好像把一场当做两场来采了??有没有图片?
是不是采 ...

感谢你的回答!我的情况是这样的:就像是把一副图片从中间拦腰截断了,第一次发上半部分,下一次发下半部分。然后周而复始的这样子。

作者: J-sir    时间: 2012-11-22 22:23
J-sir 发表于 2012-11-22 22:18
感谢你的回答!我的情况是这样的:就像是把一副图片从中间拦腰截断了,第一次发上半部分,下一次发下半部 ...

一幅图像我只采其中的60行,但是用了DMA以后就采集了后面我本来不想要的那些行,并储存在下一幅的图像数组里。我并没有这样设置……还有我的事模拟摄像头。请帮我看看初始化的对吗?

void dma_init(){
  SIM_SCGC6|=SIM_SCGC6_DMAMUX_MASK;//打开DMA多路复用器时钟
  SIM_SCGC7|=SIM_SCGC7_DMA_MASK;//打开DMA模块时钟
  DMAMUX_CHCFG0=DMAMUX_CHCFG_SOURCE(41);//DMA通道0对应41号DMA请求,即ADC1,参阅Chip Configuration
  DMA_TCD0_SADDR = (uint32_t)&(ADC_R_REG(ADC1_BASE_PTR, 0));
  
  DMA_TCD0_SOFF = 0;//每次传送源地址不变
  DMA_TCD0_CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(lie_max);//当前主循环次数,采集点数
  DMA_TCD0_BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(lie_max);//起始主循环次数,采集点数
  DMA_TCD0_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0);//源数据宽度8bit,目的数据宽度8bit
  DMA_TCD0_NBYTES_MLNO = DMA_NBYTES_MLNO_NBYTES(1);//每次读取一字节
  DMA_TCD0_SLAST = 0;//主循环结束后源地址0回写tcd
  DMA_TCD0_DLASTSGA = 0;
  DMA_TCD0_DADDR=(uint32)image;//设置目的地址,image数组第一个元素
  DMA_TCD0_DOFF=1;//每次写目的地址加1
  DMA_TCD0_CSR= DMA_CSR_DREQ_MASK;//DMA通道0主循环结束后停止硬件请求
  DMA_TCD0_CSR|=DMA_CSR_INTMAJOR_MASK;//使能DMA0中断
  DMAMUX_CHCFG0|=DMAMUX_CHCFG_ENBL_MASK;//DMA通道0使能
}

作者: 野火    时间: 2012-11-22 22:41
DMA+ADC?
初步觉得,是不是采集的点太少就停止采集了?
作者: J-sir    时间: 2012-11-22 23:31
野火 发表于 2012-11-22 22:41
DMA+ADC?
初步觉得,是不是采集的点太少就停止采集了?

嗯,是采的很少,但是为什么采的少就会出现问题呢?

作者: 野火    时间: 2012-11-22 23:39
J-sir 发表于 2012-11-22 23:31
嗯,是采的很少,但是为什么采的少就会出现问题呢?

采集不够一场,你就停止采集了……

作者: J-sir    时间: 2012-11-23 14:48
野火 发表于 2012-11-22 23:39
采集不够一场,你就停止采集了……

对啊,大家不都是这么干的么…………一场300多行,哪有人全采啊。

作者: J-sir    时间: 2012-11-23 16:54
我终于找到问题了!!!!!血的教训啊!!!开中断之间一定要先清中断标志位。不然在你关掉中断的过程硬件依然会把标志位置位的。哈哈哈哈
作者: J-sir    时间: 2012-11-23 17:01
我是SB哈哈哈和




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