clasa ADCAll – acces la toate canalele ADC¶
ADCAll expune fiecare canal ADC al MCU printr-un singur obiect – atât pinii externi de intrare analogică, cât și canalele interne pentru temperatura siliciului, referința de 1,21 V și VBAT. Este utilă pentru monitorizarea liniei de alimentare a MCU și a senzorilor de pe cip fără a instanția câte un ADC pentru fiecare pin.
Exemplu:
import pyb
# 12-bit resolution, internal channels only (temp + VBAT + VREF).
adcall = pyb.ADCAll(12, 0x70000)
temp = adcall.read_core_temp()
vbat = adcall.read_core_vbat()
vref = adcall.read_core_vref()
vdda = adcall.read_vref()
Constructori¶
- class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)¶
Oferă acces simultan la fiecare canal ADC al MCU, inclusiv la canalele interne pentru temperatura siliciului, referința internă de 1,21 V și
VBAT. Construirea acestui obiect comută toți pinii ADC externi mascați în modul de intrare analogică.resolutioneste rezoluția de conversie a ADC în biți (de obicei8,10sau12).maskeste o mască de biți pe 32 de biți care selectează ce canale să fie activate; bitulNactivează canalulN. Implicit este0xffffffff(toate canalele). Canalele interne se află la biții16(temperatură),17(VBAT) și18(VREF), așa că pentru a activa doar canalele interne transmiteți0x70000.
Senzorul de temperatură de pe cip este calibrat din fabrică și are o precizie de aproximativ ±1 °C, dar măsoară temperatura siliciului – care este de obicei cu zeci de grade peste cea ambiantă atunci când MCU este activ. Citirile sunt relevante ca aproximare a temperaturii ambiante doar pe o placă proaspăt trezită din somn.
Atenționare
Tensiunile de intrare analogice nu trebuie să depășească niciodată tensiunea reală de alimentare.
Metode¶
- read_channel(channel: int) int¶
Citește canalul ADC dat. Canalele externe (
0–15) returnează valori brute nescalate la rezoluția configurată; canalele interne (16–18) returnează tot valori brute, dar funcțiile ajutătoare dedicate de mai jos le convertesc în tensiuni.
- read_core_temp() float¶
Returnează temperatura siliciului în grade Celsius, calculată din canalul intern de temperatură și valorile de calibrare din fabrică stocate în MCU.
- read_core_vbat() float¶
Returnează tensiunea bateriei de rezervă în volți. Citirea este efectuată printr-un divizor de tensiune de pe cip (astfel încât rezerva de tensiune să nu restricționeze gama de intrare a ADC) și scalată înapoi la tensiunea reală a bateriei. Divizorul este activ doar pe durata conversiei ADC, astfel încât consumul în standby al bateriei de rezervă este neglijabil.
- read_core_vref() float¶
Returnează tensiunea de referință internă de 1,21 V (nominal) în volți, măsurată folosind alimentarea MCU ca referință a ADC. Acesta este rezultatul brut al conversiei.
- read_vref() float¶
Returnează tensiunea de alimentare a MCU în volți. Calculată prin măsurarea referinței interne de tensiune și scalarea înapoi folosind valoarea sa de calibrare din fabrică. Cu o linie sănătoasă de 3,3 V, citirea va fi apropiată de
3.3. MCU continuă să funcționeze – iar conversiile ADC rămân relevante – cu o alimentare de până la aproximativ 2 V, cu condiția respectării setărilor corespunzătoare de ceas al MCU, de viteză de acces la memoria flash și de mod de programare.