大家好、团队、
我对 通道的重复序列 ADC10B 有一些困惑。 当我们配置 ADC 的这种模式时、我们在每个通道转换或完整序列转换上都获得 ADC10IFG 标志设置吗? ADC10MEM0是单字结果电阻器、如何访问所有转换的结果? 请说明相同的内容。
我的要求是以重复序列模式对 ADC0和 ADC1通道进行采样。 我参考了一个示例、其中我们将传输相同通道的32个样本、并根据我的要求进行修改、如下所示:
//
#include
int main (空)
{
WDTCTL = WDTPW + WDTHOLD;//停止 WDT
//配置 SMCLK = 1MHz
CSCTL0_H = 0xA5;
CSCTL1 |= DCOFSEL0 + DCOFSEL1;//设置最大值 DCO 设置
CSCTL2 = SELA_1 + SELESS_3 + SELM_3;//设置 ACLK = VLO;MCLK = DCO
CSCTL3 = DIVA_0 + DIVS_3 + DIVM_3;//设置所有分频器
//配置 ADC10;
ADC10CTL0 = ADC10SHT_3 + ADC10MSC + ADC10ON;// 32ADCclks、ADC 打开
ADC10CTL1 = ADC10SHP + ADC10CONSEQ_3 + ADC10SSEL_3 + ADC10DIV_1;// SMCLK/2
//采样计时器,rpt 单通道
ADC10CTL2 = ADC10RES;// 10位分辨率
ADC10MCTL0 = ADC10INCH_1 + ADC10SREF_1;// Vref+、A10
//配置内部基准
while (REFCTL0 & REFGENBUSY);//如果基准发生器忙,请等待
REFCTL0 |= REFVSEL_3+REFON;//选择内部基准= 2.5V
//内部基准打开
_DELAY_CYCLES (75);//参考延迟(~75us)以实现稳定
//配置 DMA (ADC10IFG 触发器)
DMACTL0 = DMA0TSEL__ADC10IFG;// ADC10IFG 触发器
__data16_write_addr ((unsigned short)&DMA0SA、(unsigned short)&ADC10MEM0);
//源单个地址
__data16_write_addr ((unsigned short)&DMA0DA、(unsigned short) 0xC800);
//目标数组地址
DMA0SZ = 0x04;// 4次转换
DMA0CTL = DMADD_5 + DMADSTINCR_3 + DMAEN + DMAIE + DMALEVEL;
// rpt、inc dest、word access、
//在32次转换后启用 int
while (1)
{
while (ADC10CTL1 & BUSY);//如果 ADC10内核处于活动状态则等待
ADC10CTL0 |= ADC10ENC + ADC10SC;//开始采样
_bis_SR_register (CPUOFF + GIE);// LPM0、ADC10_ISR 将强制退出
__no_operation();//<<在此设置断点
__DELAY_CYCLES (5000);//转换之间的延迟
}
}
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=dma_vector
_interrupt void DMA0_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(DMA_vector)) DMA0_ISR (void)
其他
错误编译器不受支持!
#endif
{
switch (__evo_in_range (DMAIV、16))
{
情况0:中断;//无中断
案例2:
// 32次转换完成
ADC10CTL0 &=~ADC10ENC;
_BIC_SR_REGISTER_ON_EXIT (CPUOFF);//退出 LPM
中断;// DMA0IFG
案例4:中断;// DMA1IFG
案例6:中断;// DMA2IFG
案例8:中断;//保留
案例10:中断;//保留
案例12:中断;//保留
案例14:中断;//保留
案例16:中断;//保留
默认值:break;
}
}
根据我的情况,我应该将 DMA0SZ 保留为0x2,因为我需要两个 ADC 通道数据,但当我保留它时,该程序通过 DMA 为我提供一个通道重复结果。 当我将其保持为0x04时,它会将两个通道结果作为重复的结果提供给我,即0xC800、0xC802上的通道1结果和 0xC804、0xC806上的通道0结果
请帮助我更正此示例...
此致、
Vikas Chola