คลาส ADCAll -- เข้าถึงช่อง ADC ทั้งหมด

ADCAll เปิดเผยช่อง ADC ทุกช่องบน MCU ผ่านอ็อบเจกต์เดียว -- ทั้งพินอินพุตแอนะล็อกภายนอกและช่องภายในสำหรับอุณหภูมิได แรงดันอ้างอิง 1.21 V และ VBAT มีประโยชน์สำหรับการตรวจสอบรางจ่ายไฟของ MCU และเซนเซอร์บนชิปโดยไม่ต้องสร้างอินสแตนซ์ ADC ต่อพิน

ตัวอย่าง:

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()

ตัวสร้าง

class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)

ให้การเข้าถึงช่อง ADC ทุกช่องบน MCU พร้อมกัน รวมถึงช่องภายในสำหรับอุณหภูมิได แรงดันอ้างอิงภายใน 1.21 V และ VBAT การสร้างอ็อบเจกต์นี้จะสลับพิน ADC ภายนอกทั้งหมดที่ถูกมาสก์ไปเป็นโหมดอินพุตแอนะล็อก

  • resolution คือความละเอียดการแปลง ADC เป็นบิต (โดยทั่วไปคือ 8, 10 หรือ 12)

  • mask คือบิตมาสก์ 32 บิตที่เลือกว่าจะเปิดใช้งานช่องใด บิต N เปิดใช้งานช่อง N ค่าเริ่มต้นคือ 0xffffffff (ทุกช่อง) ช่องภายในอยู่ที่บิต 16 (อุณหภูมิ), 17 (VBAT) และ 18 (VREF) ดังนั้นหากต้องการเปิดใช้งานเฉพาะช่องภายในให้ส่ง 0x70000

เซนเซอร์อุณหภูมิบนชิปได้รับการสอบเทียบจากโรงงานและมีความแม่นยำประมาณ ±1 °C แต่วัดอุณหภูมิได -- ซึ่งมักจะสูงกว่าอุณหภูมิแวดล้อมหลายสิบองศาเมื่อ MCU กำลังทำงาน การอ่านค่าจะมีความหมายเฉพาะในฐานะตัวแทนอุณหภูมิแวดล้อมบนบอร์ดที่เพิ่งตื่นขึ้นมาใหม่เท่านั้น

Warning

แรงดันอินพุตแอนะล็อกต้องไม่เกินแรงดันจ่ายที่แท้จริงเด็ดขาด

เมธอด

read_channel(channel: int) int

อ่านช่อง ADC ที่กำหนด ช่องภายนอก (0 -- 15) คืนค่าดิบที่ไม่ปรับขนาดที่ความละเอียดที่กำหนดค่าไว้ ช่องภายใน (16--18) ก็คืนค่าดิบเช่นกัน แต่เฮลเปอร์เฉพาะด้านล่างจะแปลงค่าเหล่านั้นเป็นแรงดัน

read_core_temp() float

คืนค่าอุณหภูมิบนไดเป็นองศาเซลเซียส คำนวณจากช่องอุณหภูมิภายในและค่าการสอบเทียบจากโรงงานที่จัดเก็บใน MCU

read_core_vbat() float

คืนค่าแรงดันแบตเตอรี่สำรองเป็นโวลต์ การอ่านค่าผ่านตัวแบ่งแรงดันบนชิป (ดังนั้น headroom จึงไม่จำกัดช่วงอินพุตของ ADC) และปรับขนาดกลับเป็นแรงดันแบตเตอรี่จริง ตัวแบ่งแรงดันจะทำงานเฉพาะระหว่างการแปลง ADC เท่านั้น ดังนั้นการดูดกระแสสแตนด์บายบนแบตเตอรี่สำรองจึงน้อยมาก

read_core_vref() float

คืนค่าแรงดันอ้างอิงภายใน 1.21 V (ค่าระบุ) เป็นโวลต์ โดยวัดโดยใช้แรงดันจ่ายของ MCU เป็นอ้างอิง ADC นี่คือผลการแปลงดิบ

read_vref() float

คืนค่าแรงดันจ่ายของ MCU เป็นโวลต์ คำนวณโดยการวัดแรงดันอ้างอิงภายในและปรับขนาดกลับโดยใช้ค่าการสอบเทียบจากโรงงาน ด้วยรางไฟ 3.3 V ที่ปกติ การอ่านค่าจะใกล้เคียงกับ 3.3 MCU ยังคงทำงาน -- และการแปลง ADC ยังคงมีความหมาย -- ด้วยแรงดันจ่ายต่ำถึงประมาณ 2 V หากตั้งค่าสัญญาณนาฬิกาของ MCU ความเร็วการเข้าถึงแฟลช และการตั้งค่าโหมดโปรแกรมที่เหมาะสม