查看: 2954|回复: 2

[其他] 关于DMA+PIT+PORT--AN4419

[复制链接]
  • TA的每日心情
    开心
    2018-9-14 09:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    70

    主题

    329

    帖子

    0

    高级会员

    Rank: 4

    积分
    952
    最后登录
    2021-1-4
    发表于 2013-1-9 15:55:47 | 显示全部楼层 |阅读模式
    看了AN4419,我就试了一下,成功了,但是还是有些不明白,和大家讨论一下
    上程序:
    ////////////////////////////////////////////////////////////////////////////////
    //
    //note: use pit0,1 channel DMA and pta16 to generate a clock with 50% dety
    //      and the frequency is PIT0 counter's frequency/2
    //      please refer to AN4419
    ////////////////////////////////////////////////////////////////////////////////
    void dmaPortClockOutputInitialization(void)
    {
      volatile uint32 *tempptr;
      //gpio
      SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
      PORTA_PCR16 = (PORT_PCR_MUX(1)
                    |PORT_PCR_IRQC(0x3));//generate DMA Request on either edge???
      GPIOA_PDDR|=GPIO_PDDR_PDD(GPIO_PIN(16));
     
      GPIOA_PTOR =  0x00010000; //????????????-note must be added for generate the first DMA request
     
      //pit3
      SIM_SCGC6 |= SIM_SCGC6_PIT_MASK;   // turn on PIT cloccks
      PIT_MCR    = 1;                    // reset MDIS -> enable the module
      PIT_LDVAL0 = 1777;
      PIT_TFLG0 = PIT_TFLG_TIF_MASK;     //clear TIF flag
      PIT_TCTRL0 |= PIT_TCTRL_TEN_MASK;  // start the timer
     
      //DMA
      SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;//DMA Mux Clock Gate Control
     
      DMAMUX_CHCFG0 = DMAMUX_CHCFG_SOURCE(49); // PORTA use dma channel 0 
      DMAMUX_CHCFG0 |= DMAMUX_CHCFG_ENBL_MASK//DMA Channel Enable
                      |DMAMUX_CHCFG_TRIG_MASK; //Enables the periodic trigger capability
                                               //for the triggered DMA channel
                                               //using pit3
     
      Dma_Source_WORD1[0]= 0x00010000; //16pin toggle
     
      Dma_Source_WORD1[1]= 0x00000957;// 1kHz duty 50% PIT_LDVAL1
      Dma_Source_WORD1[2]= 0x00000957; 
      tempptr = &Dma_Source_WORD1[0];
      DMA_SADDR_REG(DMA_BASE_PTR,DMA_CHANNEL_0)             = (uint32_t)tempptr;
      DMA_DADDR_REG(DMA_BASE_PTR,DMA_CHANNEL_0)             = 0x400Ff00C; //ADDRESS of PTD_PTOR
      DMA_NBYTES_MLNO_REG(DMA_BASE_PTR,DMA_CHANNEL_0)       = 4;//Minor Byte Transfer Count
      DMA_ATTR_REG(DMA_BASE_PTR,DMA_CHANNEL_0)              = DMA_ATTR_SSIZE(2) | DMA_ATTR_DSIZE(2);
      DMA_SOFF_REG(DMA_BASE_PTR,DMA_CHANNEL_0)              = 0;
      DMA_DOFF_REG(DMA_BASE_PTR,DMA_CHANNEL_0)              = 0;
      DMA_SLAST_REG(DMA_BASE_PTR,DMA_CHANNEL_0)             = 0;
      DMA_CITER_ELINKNO_REG(DMA_BASE_PTR,DMA_CHANNEL_0)     = DMA_CITER_ELINKNO_CITER(1);
      DMA_DLAST_SGA_REG(DMA_BASE_PTR,DMA_CHANNEL_0)         = 0;
      DMA_BITER_ELINKNO_REG(DMA_BASE_PTR,DMA_CHANNEL_0)     = DMA_BITER_ELINKNO_BITER(1);
      DMA_CSR_REG(DMA_BASE_PTR,DMA_CHANNEL_0)               = 0x0520;//0000-0101-0010-0000
      DMA_ERQ|= 1;
     
     
      GPIOA_PSOR = 0x00010000;  //????????????-note must be added for generate the first DMA request
    }
    1. 4个PIT 周期触发DMA可以同时用几个吗?
    2. 手册上的 Peripheral request 、DMA request、trigger的具体含义是什么?trigger 是PIT发的,DMA request 是IO口沿,那么外设请求是什么?我觉得是芯片的内部信号,不用设置,对吗?
     
     
     
     
     
     
     
    我知道答案 目前已有1人回答
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-9-14 09:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    70

    主题

    329

    帖子

    0

    高级会员

    Rank: 4

    积分
    952
    最后登录
    2021-1-4
     楼主| 发表于 2013-1-9 16:10:22 | 显示全部楼层

    RE:关于DMA+PIT+PORT--AN4419

    对了,还有个问题,程序要使引脚先输出一个脉冲,我的理解是要产生第一个DMA请求,这样理解对吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    288

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    610
    最后登录
    1970-1-1
    发表于 2013-1-9 17:10:51 | 显示全部楼层

    RE:关于DMA+PIT+PORT--AN4419

    1、DMA是可以单独试用的,也就是4个PIT可以用4个DMA
    2、对于触发的含义,这个你要对比手册来理解,还有框图。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 00:20 , Processed in 0.088270 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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