工具/软件:
您好:
MSPM0G1519参考手册指出 CTL0.ENC 位必须为0才能写入 MEMCTL[y]。
但也有说明、CTL0.ENC 设置为0后、当前转换将完成、结果存储在相应的 MEMRESx 中。
状态寄存器中还有一个额外的 BUSY 标志、可以检查最后一次转换是否已完成(例如在设置 ENC=0后)。
问题:如果我设置 CTL0.ENC=0并立即写入 MEMCTL[y](根据我对参考手册的解释允许这样做)并且仍然存在正在进行的转换、会发生什么情况?
在上述场景中、我们观察到、如果再次启用转换(CTL0.ENC=1)、转换实际上不会启动。 下面的代码显示了该序列。
DL_ADC12_disableConversions(ADC1); DL_ADC12_configConversionMem(ADC1, ...); DL_ADC12_enableConversions(ADC1);
然而、如果我们在禁用转换后等到 STATUS.BUSY=0 (参考手册中未提及这一点)、则它会按预期工作。 下面是工作伪代码。
DL_ADC12_disableConversions(ADC1); while(DL_ADC12_getStatus(ADC1) & DL_ADC12_STATUS_CONVERSION_ACTIVE) {}; DL_ADC12_configConversionMem(ADC1, ...); DL_ADC12_enableConversions(ADC1);
这是预料之中的吗? 参考手册中是否缺少此信息?
此致
Marco Marder