大家好、专家也很好
关于 ADC OneShot 模式、可能是由于我的配置错误、我遇到了一些问题、如下所示:
我配置 SOC0、SOC4、SOC9、SOC15 (四个 SOC 均为软件触发器)、 顺序模式
然后启用 SOCPRICTL.OneShot。
在主循环中、软触发 ADC、如下所示:
while (1)
{
DELAY_US (10);
AdcRegs.ADCSOCFRC1.all = 0xFFFF; // Point1
temp = AdcRegs.ADCSOCFLG1.all;
DELAY_US (10);
AdcRegs.ADCSOCFRC1.all = 0xFFFF; // Point2
DELAY_US (10);
AdcRegs.ADCSOCFRC1.ALL = 0xFFFF;
DELAY_US (10);
AdcRegs.ADCSOCFRC1.ALL = 0xFFFF;
}
我在上面的两行中设置断点、有一些结果是:
在 Point1之后 、ADCSOCFLG1都为1、 同时我认为它应该为0x1000 (仅第一个 SOC);
在 Point1之后 、temp = 0xFFFF、这意味 着 ADCSOCFLG1全部为1。 但我没有配置其他 SOC 寄存器;
所有16 个 AdcResult 寄存器都填充了数据;
我想问的是:
1.案例的正确结果是什么(SOC0、SOC4、SOC9、SOC15)?
2.为什么得到这一结果?
使用 OneShot 模式的正确方法是什么?
祝你一切顺利!!!