在一些应用场景需多次切换ADC工作状态,反复开关ADC,不能仅操作ON位ENABLE或DSIABLE,也需要确认ADC状态,判断是否ADC状态切换完成,才可进行下一步操作。
Ø ADC上电 ADC第一次上电时,需等待PowerUp 过程完成,可以通过查询ADC_CTRL3 里面的 RDY位确认是否上电完成,然后进行ADC校准。 N32G45x系列,ADC上电操作,以ADC1为列: /* Enable ADC1 */ ADC_Enable(ADC1, ENABLE); /*Check ADC Ready*/ while(ADC_GetFlagStatusNew(ADC1,ADC_FLAG_RDY) == RESET); N32G43x/N32L4xx系列,ADC上电操作: /* Enable ADC */ ADC_Enable(ADC, ENABLE); /*Check ADC Ready*/ while(ADC_GetFlagStatusNew(ADC,ADC_FLAG_RDY) == RESET); N32G03X系列,ADC上电操作: /* Enable ADC */ ADC_Enable(ADC, ENABLE); /*wait ADC is ready to use*/ while(!ADC_GetFlagStatusNew(ADC, ADC_FLAG_RDY)) ; |
Ø ADC下电 通过清除 ON 位可以停止转换,并将 ADC 置于断电模式,在这个模式中ADC 几乎不耗电(仅几uA)。 ADC下电时,用户需查询ADC_CTRL3 里面的 PDRDY 确认是否下电完成,才可进行下一步操作。 在 ADC DISABLE 的时候默认都是 PowerDown 模式,这个模式下只要不断电,不需要重新校正,校正值会在ADC 自动保持。为了进一步的降低功耗 ,ADC 有一个深睡眠模式,会在 ADC DISABLE进入深睡眠模式, ADC 内部的校正值会丢失, 需要重新校正。 N32G45x系列,ADC下电操作,以ADC1为列: /* Disable ADC ADC1 */ ADC_Enable(ADC1, DISABLE); /*Check ADC Power Down Ready*/ while(ADC_GetFlagStatusNew(ADC1, ADC_FLAG_PD_RDY) == RESET); N32G43x/N32L43x/N32L40x系列,ADC下电操作: /* Disable ADC ADC */ ADC_Enable(ADC, DISABLE); /* Check ADC Power Down Ready */ while(ADC_GetFlagStatusNew(ADC, ADC_FLAG_PD_RDY) == RESET); | Ø 低功耗模式下唤醒 当芯片从低功耗模式唤醒后,需要重新复位ADC模块时钟,再进行初始化配置,否则会影响ADC的采样精度。 N32G45x系列,低功耗模式下唤醒后,ADC反初始换配置,以ADC1为例: 1.反初始化ADC时钟:ADC_DeInit(ADC1); 2.ADC初始化配置; 3.使能ADC进行校准 N32G43x/N32L43x/N32L40x系列,低功耗模式下唤醒后,ADC反初始换配置,以ADC1为例: 1.反初始化ADC时钟:ADC_DeInit(ADC1); 2.ADC初始化配置; 3.使能ADC进行校准 |
|