智能车制作

标题: 冷火MCF52255摄像头DMA [打印本页]

作者: 13760271915    时间: 2014-1-20 12:09
标题: 冷火MCF52255摄像头DMA
  1. #include"DMA.h"
  2. void DMA_Init()
  3. {
  4.         MCF_GPIO_PTJPAR=0x00;//GPIO
  5.         MCF_GPIO_DDRTJ=0x00;//input
  6.        
  7.         MCF_GPIO_PTCPAR|=MCF_GPIO_PTCPAR_DTIN3_DTIN3;//DTIM3触发
  8.         MCF_DMA_DSR(3) |= MCF_DMA_DSR_DONE;//清零标志位
  9.         // Enable DMA master access in both supervisor and user mode
  10.         MCF_SCM_MPR = MCF_SCM_MPR_MPR(0x05);//DMA可挂载总线
复制代码
最近在搞冷火DMA,用的是数字摄像头OV7620,准备用PCLK分频后的脉冲去触发DMA传输,代码参考的是论坛之前的一个帖子跟网友金刀丸同学的,现在是用20K的PWM去触发,但是一直没成功!我看数据手册的时候好像说是要配置DTER寄存器里面的位CAP才能触发DMA,但我见他们的代码里都没有体现,希望大家能帮我看一下是哪里的问题,谢谢了,大家多多交流

作者: 13760271915    时间: 2014-1-20 12:10
#include"DMA.h"
void DMA_Init()
{
        MCF_GPIO_PTJPAR=0x00;//GPIO
        MCF_GPIO_DDRTJ=0x00;//input
       
        MCF_GPIO_PTCPAR|=MCF_GPIO_PTCPAR_DTIN3_DTIN3;//DTIM3触发
        MCF_DMA_DSR(3) |= MCF_DMA_DSR_DONE;//清零标志位
        // Enable DMA master access in both supervisor and user mode
        MCF_SCM_MPR = MCF_SCM_MPR_MPR(0x05);//DMA可挂载总线
        //dtim3 trigger DMA3
        MCF_SCM_DMAREQC = MCF_SCM_DMAREQC_DMAC3(0x7);//中断触发源
        MCF_DMA_SAR(3) = (uint32)MCF_GPIO_SETTJ;//源地址     
        MCF_DMA_DAR(3) = (uint32)&IMG_BUFF[0]; //数组首地址           
        MCF_DMA_BCR(3) = 99;//传送数据量
        MCF_DMA_DCR(3) = //MCF_DMA_DCR_INT   //不触发DMA中断
                MCF_DMA_DCR_SSIZE(1)    //ssize : byte   
              | MCF_DMA_DCR_DSIZE(1)    //dsize : byte
              | MCF_DMA_DCR_DINC     //目的地址自增(自增一个byte)
               //| MCF_DMA_DCR_SINC     //源地址保持不变
              | MCF_DMA_DCR_D_REQ    //传输完毕后,关闭dma请求
                                                              //Disable request. DMA hardware automatically clears the corresponding DCRn[EEXT] bit
                                                                //when the byte count register(BCR) reaches zero.
              //| MCF_DMA_DCR_EEXT     //外部触发dma
              | MCF_DMA_DCR_CS;   //一个请求触发一次,周期窃取

        //DTMR 配置   
        MCF_DTIM_DTMR(3) =  0;    //清空dtmr寄存器

        MCF_DTIM_DTMR(3) = MCF_DTIM_DTMR_CE_RISE //上升沿捕捉
                                     | MCF_DTIM_DTMR_CLK_DTIN ;   //外部时钟源
          
        MCF_DTIM_DTXMR(3) |=  MCF_DTIM_DTXMR_DMAEN;   //dma请求使能
        //***********************
        MCF_DTIM_DTER(3)|=MCF_DTIM_DTER_CAP;//***********************
        //***********************
        //MCF_DTIM_DTXMR(3) |=  MCF_DTIM_DTXMR_HALTED;  //挂起状态停止计数
            
        //MCF_DTIM_DTXMR(3) &=  ~MCF_DTIM_DTXMR_MODE16;
          
        //MCF_DTIM_DTMR(3) &=  ~MCF_DTIM_DTMR_FRR;  //Restart  

        //MCF_DTIM_DTMR(3) |=  MCF_DTIM_DTMR_OM;   //OutputMode

        //MCF_DTIM_DTMR(3) |= MCF_DTIM_DTMR_PS(0x5);//
        MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL;
        MCF_INTC0_IMRL&=~MCF_INTC_IMRL_INT_MASK12;//
        MCF_INTC0_ICR12=MCF_INTC_ICR_IP(6)+MCF_INTC_ICR_IL(6);
       
       
    //MCF_DTIM_DTMR(3) |= MCF_DTIM_DTMR_RST;  
        MCF_DMA_DCR(3)|= MCF_DMA_DCR_EEXT;//启动DTMR
        MCF_DMA_DCR(3)|= MCF_DMA_DCR_START;

}

作者: 金刀丸    时间: 2014-1-20 12:23
哎,程序被你曝光了,都说过了我这个不是用外部触发的,而是DTIM参考比较方式触发的,所以不用PWM波来触发
作者: 13760271915    时间: 2014-1-20 12:31
金刀丸 发表于 2014-1-20 12:23
哎,程序被你曝光了,都说过了我这个不是用外部触发的,而是DTIM参考比较方式触发的,所以不用PWM波来触 ...

里面只有中断优先级的程序是参考你的,其它都是参考论坛上那个帖子的
作者: zhua    时间: 2014-2-20 09:47
13760271915 发表于 2014-1-20 12:31
里面只有中断优先级的程序是参考你的,其它都是参考论坛上那个帖子的

这个实验成功没有?

作者: 13760271915    时间: 2014-2-20 10:21
zhua 发表于 2014-2-20 09:47
这个实验成功没有?

我上面不是写着没触发成功吗

作者: zhua    时间: 2014-2-20 10:40
穂佳的UART中有一个DMA示例你见过没有?
作者: zhua    时间: 2014-2-20 10:53
13760271915 发表于 2014-2-20 10:21
我上面不是写着没触发成功吗

穂佳的UART中有一个DMA示例你见过没有?

作者: projecta    时间: 2014-2-26 19:57
coldfire把我逼疯了
作者: Enzo    时间: 2014-3-10 09:18
触发dma请求 cap 必须置1 在Ds 中有个逻辑表……怎么都不看啊
作者: 箫剑酒仙    时间: 2014-3-10 09:59
外部触发为啥屏蔽了???  //| MCF_DMA_DCR_EEXT     //外部触发dma
作者: 蓝月    时间: 2014-3-20 22:53
Enzo 发表于 2014-3-10 09:18
触发dma请求 cap 必须置1 在Ds 中有个逻辑表……怎么都不看啊

请问在上面程序的基础上,将cap置1就行了吗?

作者: 蓝月    时间: 2014-3-20 22:54
13760271915 发表于 2014-1-20 12:10
#include"DMA.h"
void DMA_Init()
{

请问一下,现在你调好了吗?





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