智能车制作

标题: K60内部AD DMA的问题 [打印本页]

作者: agogos    时间: 2012-5-8 15:08
标题: K60内部AD DMA的问题
我看了下数字摄像头触发DMA的都是IO管脚,我使用内部ADC1的。然后我就不明白这句DMA_ERQ|=DMA_ERQ_ERQ0_MASK;就能开始AD转换么(不需要对ADC1的SC1再次赋值)?还有就是DMA下ADC选择是连续模式还是一般的?我是在行中断里面开始DMA的,现在出来都是0x00,也没有进入DMA0中断,所以目视有问题。求指导呀!!
作者: 568581185    时间: 2012-5-8 20:16
要开启DMA读取数据,AD必须连续转换,不能单次的。

作者: agogos    时间: 2012-5-8 21:36
本帖最后由 agogos 于 2012-5-8 21:38 编辑
568581185 发表于 2012-5-8 20:16
要开启DMA读取数据,AD必须连续转换,不能单次的。

仔细看了下,我已经写了连续转换了。。。初始化代码如下。
static void CaptureInit(void){
//Init Interrupts PTE3->CS,行同步下降沿,PTE5->VS,场同步上升沿
SIM->SCGC5|=SIM_SCGC5_PORTE_MASK;//Enable Interrupt Clock
PORTE->PCR[3]|=PORT_PCR_IRQC(10)|PORT_PCR_MUX(1);//GPIO,Falling Edge Interrupt
PORTE->PCR[5]|=PORT_PCR_IRQC(9)|PORT_PCR_MUX(1);//GPIO,Rasing Edge Interrupt
PTE->PDDR&=0xFFFFFFD7;//PTE3,PTE5 Input
NVIC_EnableIRQ(PORTE_IRQn);//Enable Interrupt
//ADC ADC1->ADC1_SE5a->PTE1(ALT0)
SIM->SCGC5|=SIM_SCGC5_PORTE_MASK;
PORTE->PCR[1]|=PORT_PCR_MUX(0);//PTE1->ADC1_SE5a
PTE->PDDR&=~GPIO_PDDR_PDD(1<<1);//PTE1->Input
SIM->SCGC3|=SIM_SCGC3_ADC1_MASK;//ADC1 Clock Enable
ADC1->SC1[0]&=~ADC_SC1_AIEN_MASK;//ADC1A
ADC1->SC1[0]|=ADC_SC1_ADCH(5);//ADC1_5->Input, Single Pin, No interrupt
ADC1->SC1[1]&=~ADC_SC1_AIEN_MASK;//ADC1B
ADC1->SC1[1]|=ADC_SC1_ADCH(5);//ADC1_5b
ADC1->SC2&=0x00000000;//Clear all.
ADC1->SC2|=ADC_SC2_DMAEN_MASK;//DMA, SoftWare Triggle
ADC1->SC3&=(~ADC_SC3_AVGE_MASK&~ADC_SC3_AVGS_MASK);
ADC1->SC3|=ADC_SC3_ADCO_MASK;
ADC1->CFG1|=ADC_CFG1_ADICLK(1)|ADC_CFG1_MODE(0)|ADC_CFG1_ADIV(1);//InputClk, ShortTime, 8bits, Bus
ADC1->CFG2&=~ADC_CFG2_MUXSEL_MASK;//ADC1A
ADC1->CFG2|=ADC_CFG2_ADACKEN_MASK;//OutputClock
//DMA
SIM->SCGC6|=SIM_SCGC6_DMAMUX_MASK;//DMAMUX Clock Enable
SIM->SCGC6|=SIM_SCGC7_DMA_MASK;//DMA Clock Enable
DMAMUX->CHCFG[0]|=DMAMUX_CHCFG_SOURCE(41);//DMA0->No.41 request, ADC1
DMA->TCD[0].SADDR=(uint32_t)&(ADC1->R[0]);//Source Address 0x400B_B010h
    DMA->TCD[0].SOFF=0;//Source Fixed
DMA->TCD[0].ATTR=DMA_ATTR_SSIZE(0)|DMA_ATTR_DSIZE(0);//Source 8 bits, Aim 8 bits
DMA->TCD[0].NBYTES_MLNO=DMA_NBYTES_MLNO_NBYTES(1);//one byte each
DMA->TCD[0].SLAST=0;
    DMA->TCD[0].DADDR=(uint32_t)&SysImgBuffer[0][0];
DMA->TCD[0].DOFF=1;
DMA->TCD[0].CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(IMG_COL);
DMA->TCD[0].DLAST_SGA=0;
DMA->TCD[0].BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(IMG_COL);
DMA->TCD[0].CSR=0x00000000;//Clear
DMA->TCD[0].CSR|=DMA_CSR_DREQ_MASK;//Auto Clear
DMA->TCD[0].CSR|=DMA_CSR_INTMAJOR_MASK;//Enable Major Loop Int
DMA->INT|=DMA_INT_INT0_MASK;//Open Interrupt
DMA->ERQ&=~DMA_ERQ_ERQ0_MASK;//Clear Disable
DMAMUX->CHCFG[0]|=DMAMUX_CHCFG_ENBL_MASK;//Enable
NVIC_EnableIRQ(DMA0_IRQn);
}

作者: xinmengwangran    时间: 2012-5-8 21:39
飘过 令人蛋疼的K60

作者: agogos    时间: 2012-5-8 21:40
xinmengwangran 发表于 2012-5-8 21:39
飘过 令人蛋疼的K60

呵呵。。。对这个有了解不??有了解的点拨下嘛
作者: xinmengwangran    时间: 2012-5-8 21:45
agogos 发表于 2012-5-8 21:40
呵呵。。。对这个有了解不??有了解的点拨下嘛

不好意思 真的不会 我弄XS128的 这个 刚要弄就被吓退啦 太麻烦 不舒服
作者: agogos    时间: 2012-5-8 21:49
xinmengwangran 发表于 2012-5-8 21:45
不好意思 真的不会 我弄XS128的 这个 刚要弄就被吓退啦 太麻烦 不舒服

其实。。也还好。。。。主要是主频是摄像头的生命。。。
作者: xinmengwangran    时间: 2012-5-8 22:09
agogos 发表于 2012-5-8 21:49
其实。。也还好。。。。主要是主频是摄像头的生命。。。

嗯 你这个超到多少啊 我队友的好像抄到100M啦
作者: agogos    时间: 2012-5-8 22:18
xinmengwangran 发表于 2012-5-8 22:09
嗯 你这个超到多少啊 我队友的好像抄到100M啦

现在超频的主要目的还是为了像素点,100M在正常工作条件下,不算超频。我200M
作者: xinmengwangran    时间: 2012-5-8 22:22
agogos 发表于 2012-5-8 22:18
现在超频的主要目的还是为了像素点,100M在正常工作条件下,不算超频。我200M

是吗 总线分得100M!这个和XS128不一样啊!
作者: agogos    时间: 2012-5-8 22:34
xinmengwangran 发表于 2012-5-8 22:22
是吗 总线分得100M!这个和XS128不一样啊!

嗯。。我还是BUS100M,不过有人说200M总线也是可以的。。。
作者: 568581185    时间: 2012-5-8 23:24
ADC1->SC1[1]|=ADC_SC1_ADCH(5);//ADC1_5b
据我所知,后缀含有b的ADC不能软件触发。好好看看资料吧
作者: agogos    时间: 2012-5-9 11:39
568581185 发表于 2012-5-8 23:24
ADC1->SC1[1]|=ADC_SC1_ADCH(5);//ADC1_5b
据我所知,后缀含有b的ADC不能软件触发。好好看看资料吧

多谢提醒。其实我在后面的寄存器里面选择的是A通道,不是B,我这么写只是为了确保B不被触发。。。。
作者: xinmengwangran    时间: 2012-5-9 23:40
agogos 发表于 2012-5-8 22:34
嗯。。我还是BUS100M,不过有人说200M总线也是可以的。。。

哦 这个真不错 呵呵 一般用不着吧
作者: 月嘉愚生    时间: 2012-6-18 23:09
上面的代码有哪一句是连续转换模式啊
作者: 冰水混合物    时间: 2012-6-19 11:16
令人蛋疼的K60




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