打印

28335的ADC-DMA例程学习问题

[复制链接]
610|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;//设定采样窗口宽度 16个ADCLK周期
   AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;
   AdcRegs.ADCTRL1.bit.SEQ_CASC = 0;        // 0 Non-Cascaded Mode 选择双序列发生器模式
   AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x1; //使能SEQ1中断
   AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;//复位SEQ1至CONV00状态
   AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;//双序列发生器顺序采样模式
   AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1;//每个序列发生器最大采样通道数为4总共采样可采样8通道
   AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2;
   AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x3;
   AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x0;
   AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x1;
   AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x2;
   AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x3;
   AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 3;   // Set up ADC to perform 4 conversions for every SOC

对于上述ADC配置为双序列排序器顺序采样模式,DMA的数据传送如下:
DMACH1BurstConfig(3,1,10);//一次burst传输4个字,源地址每次加1,目的地址每次加10
DMACH1TransferConfig(9,1,0);//一次DMA有10次burst,一次burst完源地址加1,目的地址不变
DMACH1WrapConfig(1,0,0,1);//每两次burst源地址回到首地址,每一次burst目的地址回到首地址+1

问题1:此例程中只允许了SEQ1排序器,也就是说只有ADCRESULT0-3能采到数据,但是DMA配置确是用到了ADCRESULT4-7,此时没有给SEQ2排序器开始即AdcRegs.ADCTRL2.bit.SOC_SEQ2 = 1这一句没有,也并没有定义MAX_CONV2,ADCRESULT4-7并没有数据.难道传的是0过去?
问题2:DMA由ADC的SEQ1中断触发,此时DMA一直在传ADC的结果寄存器数据。定义了1个长度为40的数组,会不会出现ADC的转换太慢,而DMA一直传的数据都是不变的呢?此例程中并没有允许ADC的连续模式

相关帖子

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

本版积分规则

1

主题

10

帖子

0

粉丝