lớp ADCAll -- truy cập tất cả các kênh ADC

ADCAll hiển thị mọi kênh ADC trên MCU thông qua một đối tượng duy nhất -- bao gồm cả các chân đầu vào tương tự bên ngoài và các kênh nội bộ cho nhiệt độ die, điện áp tham chiếu 1,21 V và VBAT. Nó hữu ích để giám sát đường cung cấp của MCU và các cảm biến trên chip mà không cần khởi tạo ADC cho từng chân.

Ví dụ:

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

Hàm khởi tạo

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

Cung cấp quyền truy cập đồng thời vào mọi kênh ADC trên MCU, bao gồm các kênh nội bộ cho nhiệt độ die, điện áp tham chiếu nội bộ 1,21 V và VBAT. Khi khởi tạo đối tượng này, tất cả các chân ADC bên ngoài được che sẽ chuyển sang chế độ đầu vào tương tự.

  • resolution là độ phân giải chuyển đổi ADC tính bằng bit (thường là 8, 10 hoặc 12).

  • mask là bitmask 32-bit chọn các kênh cần bật; bit N bật kênh N. Mặc định là 0xffffffff (tất cả các kênh). Các kênh nội bộ nằm ở các bit 16 (nhiệt độ), 17 (VBAT) và 18 (VREF), vì vậy để chỉ bật các kênh nội bộ, hãy truyền 0x70000.

Cảm biến nhiệt độ trên chip được hiệu chỉnh tại nhà máy và chính xác đến khoảng ±1 °C, nhưng nó đo nhiệt độ die -- thường cao hơn nhiệt độ môi trường vài chục độ khi MCU đang hoạt động. Các số liệu đọc chỉ có ý nghĩa như là ước tính nhiệt độ môi trường trên một bo mạch vừa thức dậy.

Cảnh báo

Điện áp đầu vào tương tự không được vượt quá điện áp cung cấp thực tế.

Phương thức

read_channel(channel: int) int

Đọc kênh ADC đã cho. Các kênh bên ngoài (0 -- 15) trả về giá trị thô chưa chia tỷ lệ ở độ phân giải đã cấu hình; các kênh nội bộ (16--18) cũng trả về giá trị thô, nhưng các hàm trợ giúp chuyên dụng bên dưới chuyển đổi chúng thành điện áp.

read_core_temp() float

Trả về nhiệt độ die tính bằng độ Celsius, được tính từ kênh nhiệt độ nội bộ và các giá trị hiệu chỉnh nhà máy lưu trong MCU.

read_core_vbat() float

Trả về điện áp pin dự phòng tính bằng volt. Số liệu đọc được lấy qua bộ chia điện áp trên chip (vì vậy không gian đầu không hạn chế phạm vi đầu vào của ADC) và được chia tỷ lệ ngược về điện áp pin thực tế. Bộ chia chỉ hoạt động trong quá trình chuyển đổi ADC, nên mức tiêu hao điện áp dự phòng là không đáng kể.

read_core_vref() float

Trả về điện áp tham chiếu nội bộ 1,21 V (danh nghĩa) tính bằng volt, được đo với nguồn cung cấp MCU làm điện áp tham chiếu ADC. Đây là kết quả chuyển đổi thô.

read_vref() float

Trả về điện áp cung cấp MCU tính bằng volt. Được tính bằng cách đo điện áp tham chiếu nội bộ và chia tỷ lệ ngược bằng giá trị hiệu chỉnh nhà máy của nó. Với đường cấp nguồn 3,3 V ổn định, số liệu đọc sẽ gần 3.3. MCU tiếp tục hoạt động -- và các chuyển đổi ADC vẫn có ý nghĩa -- với nguồn cung cấp thấp đến khoảng 2 V, miễn là các cài đặt xung nhịp MCU, tốc độ truy cập flash và chế độ lập trình phù hợp được áp dụng.