您好!
我尝试从32个 ADC 通道中的 A0到 A3读取4个 ADC 通道。 我希望它在 通道序列(自动扫描)模式下工作。
对于配置、我执行了以下步骤:
ADC12CTL0 |= ADC12SHT0_0 | ADC12SHT1_0; //设置采样时间
ADC12CTL1 |= ADC12CONSEQ_1; //通道序列,单次转换模式
ADC12CTL1 |= ADC12SSEL_3; //选择 SMCLK 时钟
ADC12CTL1 |= ADC12SHP; //使用采样计时器
ADC12CTL2 ~(3<<4); //重置 ADC 分辨率设置
ADC12CTL2 |= ADC12RES_2; //选择12位分辨率
ADC12MCTL0 |= ADC12INCH_0; //选择 ADC 输入通道 A0
ADC12MCTL1 |= ADC12INCH_1; //选择 ADC 输入通道 A1
ADC12MCTL2 |= ADC12INCH_2; //选择 ADC 输入通道 A2
ADC12MCTL3 |= ADC12INCH_3; //选择 ADC 输入通道 A3
对于逻辑、我执行了以下步骤:
ADC12CTL0 |= ADC12ON; //打开 ADC
ADC12CTL0 |= ADC12ENC; //启用 ADC
ADC12CTL0 |= ADC12SC; //开始转换-软件触发
while (ADC12CTL1和 ADC12BUSY); //轮询 ADC 忙状态
for (index = 0;index < 4;index++){
ADCvar[index]=ADC12MEM++; //将转换后的值存储到数组中
}
在调试模式下检查代码时、发现 ADC12BUSY 始终保持高电平。 因此、它卡在 while 环路中。
ADC 配置有什么问题吗?
请注意: ADC12ENC 和 ADC12SC 位用单独的指令置位、同时内部触发。
Q2 -这些值仅存储在 ADC12MEM0中。 用户是否应该在 ADC12CTL3中增加寄存器 ADC12CSTARTADDx?
我预计在转换开始后、它会由处理器自动递增。 这不是该函数吗?
谢谢!
Padmini