打印

MO单片机NCU100LE3AN的ADC转换采用PDMA读数据.

[复制链接]
3204|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feng89|  楼主 | 2011-3-2 23:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我采用NCU100LE3AN单片机,有PDMA功能,如果单用AD不用PDMA是成功的,我一次想采样256个数据,用PDMA读完256数据后中断处理数据,但是按下面的程序,PDMA死活不进中断,请教一下大家,哪里有问题了?
程序代码如下:
ADC->ADCR.ADEN = 1;       //使能ADC模块
       ADC->ADCR.DIFFEN = 0;       //单端输出模式.
       ADC->ADCR.ADMD = 3;       //转换模式.连续转换模式
    ADC->ADCHER.CHEN= 0x10;   //通道选择 ADC4通道
      ADC->ADSR.ADF =1;     //写1清中断标志
      ADC->ADCR.ADIE = 0;    //1--开ADC中断.
    ADC->ADCR.PTEN=1;//使能PDMA传送.要使用PDMA传送,必须软件关闭ADIE
      /**********PDMA初始化步骤*************
1. PDMA时钟使能,这个要在解锁寄存器.
2. 使用PDMA的通道
3. 哪个外设使用PDMA功能.\
4. PDMA传送的方向.
5.PDMA的目的地址
6.PDMA的源地址
7.PDMA传送的数据宽度.
8.传送方向.????
9.源地址传给完了是固定还是增加.
10.目的地址是不变还是变化.
11.传送的数据长度.
     **********************/
  UNLOCKREG();                    //解锁操作的寄存器
  SYSCLK->AHBCLK.PDMA_EN  =1; //使能PDMA时钟   
  LOCKREG();
  NVIC_DisableIRQ(PDMA_IRQn);//
  PDMA0->CSR. APB_TWS=2;//传送的数据宽度是:16位
  PDMA0->CSR.DAD_SEL=0;//传送的目的地址连续增加.
  PDMA0->CSR.SAD_SEL=2;//传送的源地址固定不变.
  PDMA0->CSR.MODE_SEL=1;//外设到内存传送.
  PDMA0->CSR.PDMACEN=1;//使能PDMA传送数据.
  PDMA0->SAR=0x400E0010;//PDMA传输的源地址.ADC4通道
  PDMA0->DAR=(uint32_t)ADCINPUT; //PDMA传送的目的地址,也就是数组的地址.
  PDMA0->BCR=256; //PDMA传送的字节数.
  PDMA0->IER.TABORT_IE=1;//允许WRAP AROUND 中断.
  PDMA0->IER.TABORT_IE=0;//禁用异常中断,程序基本功能测试通过优化的时候,开通处理.
  PDMA0->CSR.TRIG_EN=1;
     PDMA_GCR->GCRCSR.CLK0_EN= 1; //使能通道0的时钟.
  PDMA_GCR->PDSSR1.ADC_RXSEL =0;  //PDMA读取APB上的数据. 使用通道0;
      NVIC_EnableIRQ(PDMA_IRQn);

相关帖子

沙发
思行合一| | 2011-3-3 22:35 | 只看该作者
太难了,看不懂啊!

使用特权

评论回复
板凳
北理黒鳍| | 2011-4-1 21:28 | 只看该作者
先收下,慢慢学

使用特权

评论回复
地板
hotpower| | 2011-4-2 17:10 | 只看该作者
请参考spi和pdma的例子

使用特权

评论回复
5
tresachen| | 2011-4-2 21:13 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

158

帖子

1

粉丝