智能车制作

标题: 摄像头组有人用KL26配置dma成功的么??? [打印本页]

作者: 飞翔的土豆    时间: 2015-10-8 21:07
标题: 摄像头组有人用KL26配置dma成功的么???
每天都应水一贴~~~


作者: 337881256    时间: 2015-10-10 09:02
void DMA_TPM_Init(void)
{  
        SIM_SCGC7 |= SIM_SCGC7_DMA_MASK;        //打开DMA时钟
        SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;        //打开DMA多路复用时钟

        DMA_DSR_BCR_REG(DMA_BASE_PTR,0) |= DMA_DSR_BCR_DONE_MASK;
        DMA_DCR_REG(DMA_BASE_PTR,0) = 0
                                               | DMA_DCR_SSIZE(1)
                                               | DMA_DCR_DSIZE(1)
                                       //        | DMA_DCR_SINC_MASK                  //传输后源地址增加(根据位宽)
                                               | DMA_DCR_DINC_MASK                  //传输后目的地址增加(根据位宽)
                                               | DMA_DCR_CS_MASK                  // 0为不停得传输,直到BCR为0;1为一次请求传输一次
                                               //| DMA_DCR_START_MASK               //软件触发传输
                                              | DMA_DCR_ERQ_MASK                   //硬件触发传输(与上面START二选一)
                                               | DMA_DCR_D_REQ_MASK                 //传输完成后硬件自动清ERQ
                                                                ;
       
        DMAMUX_CHCFG_REG(DMAMUX0_BASE_PTR,0) = DMAMUX_CHCFG_SOURCE(55); //设定传输源

        //配置PTM
       
        SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1)
                                  |SIM_SOPT2_PLLFLLSEL_MASK;
        SIM_SCGC6 |= SIM_SCGC6_TPM1_MASK;
       
        TPM_CNT_REG(TPM1_BASE_PTR) = 0;
        TPM_MOD_REG(TPM1_BASE_PTR) = 33;

        TPM_SC_REG(TPM1_BASE_PTR) = 0;
        TPM_SC_REG(TPM1_BASE_PTR) = TPM_SC_TOF_MASK                //清零计时器溢出标志位
                                                                  |TPM_SC_DMA_MASK        //使能溢出传输DMA
                                                                  //|TPM_SC_TOIE_MASK        //使能TOF中断
                                                                  //|TPM_SC_CMOD(1)                //设置计数器模式,并开始TPM计数
                                                                |TPM_SC_PS(0);
}

void DMA_TPM_Transfer(uint8* TBuff, uint8* RBuff)
{
          DMA_DSR_BCR_REG(DMA_BASE_PTR,0) |= DMA_DSR_BCR_DONE_MASK;

    DMA_DSR_BCR_REG(DMA_BASE_PTR,0) = DMA_DSR_BCR_BCR(73);        //传输数目
                                                    

    DMA_SAR_REG(DMA_BASE_PTR,0) = (uint32) TBuff; // 源地址
        DMA_DAR_REG(DMA_BASE_PTR,0) = (uint32) RBuff; // 目的地址
       
        TPM_CNT_REG(TPM1_BASE_PTR) = 0;                //计数器清零
       
        TPM_SC_REG(TPM1_BASE_PTR) |= TPM_SC_TOF_MASK;                //清零计时器溢出标志位

    DMA_DCR_REG(DMA_BASE_PTR,0) |=  DMA_DCR_ERQ_MASK;
        DMAMUX_CHCFG_REG(DMAMUX0_BASE_PTR,0) |= DMAMUX_CHCFG_ENBL_MASK;                //开始DMA
        TPM_SC_REG(TPM1_BASE_PTR) |= TPM_SC_CMOD(1);        //设置计数器模式,并开始TPM计数
}


作者: 牵手。。柱间    时间: 2015-10-14 06:46
我现在还没有。
作者: 飞翔的土豆    时间: 2015-10-15 12:31
337881256 发表于 2015-10-10 09:02
void DMA_TPM_Init(void)
{  
        SIM_SCGC7 |= SIM_SCGC7_DMA_MASK;        //打开DMA时钟

谢谢分享啦,这两天一直没上论坛,前两天配出来了,当时搞错了,以为kl26和k60一样目标地址会保存的...






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