คลาส 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.3MCU ยังคงทำงาน -- และการแปลง ADC ยังคงมีความหมาย -- ด้วยแรงดันจ่ายต่ำถึงประมาณ 2 V หากตั้งค่าสัญญาณนาฬิกาของ MCU ความเร็วการเข้าถึงแฟลช และการตั้งค่าโหมดโปรแกรมที่เหมาะสม