lớp Pin -- điều khiển chân I/O¶
Một đối tượng Pin đại diện cho một chân GPIO đơn trên STM32. Nó cung cấp các phương thức để cấu hình chế độ của chân (đầu vào, đầu ra, chức năng thay thế, analog) và điện trở kéo, cũng như để đọc hoặc điều khiển mức logic kỹ thuật số của nó. Để lấy mẫu analog, xem pyb.ADC; để liệt kê chức năng thay thế, xem PinAF.
Tất cả các chân (pin) trên header đã được định nghĩa sẵn là pyb.Pin.board.<name>. Hầu hết các OpenMV Cam STM32 đều cung cấp các chân header I/O P0 ... P9; OpenMV Cam N6 cung cấp thêm các chân đến P18
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
Chân STM32 cơ bản cũng có thể được truy cập trực tiếp qua pyb.Pin.cpu.<name>, được đặt tên theo chữ cái cổng theo sau là số chân (ví dụ pyb.Pin.cpu.A0). Việc ánh xạ mỗi chân header OpenMV sang chân CPU được cố định bởi bo mạch.
Các chân (pin) cũng có thể được chọn bằng tên chuỗi:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
Có thể thêm tên do người dùng định nghĩa bằng Pin.dict()
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
và tra cứu lại:
pin = pyb.Pin("LeftMotorDir")
Ngoài ra, có thể cài đặt một hàm ánh xạ tùy chỉnh bằng Pin.mapper()
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
do đó một lời gọi đến pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) sẽ truyền "LeftMotorDir" trực tiếp đến hàm ánh xạ.
Thứ tự sau đây xác định cách một tên được ánh xạ đến một chân vật lý:
Một đối tượng
Pinđược truyền trực tiếp.Hàm ánh xạ do người dùng cung cấp trả về một chân.
Từ điển do người dùng cung cấp chứa một khóa khớp.
Chuỗi khớp với tên chân trên board (
P0,P1, ...).Chuỗi khớp với tên cổng/chân CPU (
A0,B7, ...).
Gọi pyb.Pin.debug(True) để in thông tin chẩn đoán về cách mỗi đối tượng được ánh xạ đến một chân.
Hàm khởi tạo¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
Tạo một đối tượng Pin mới được liên kết với
idđã cho. Nếu có thêm các đối số, chúng sẽ được chuyển tiếp đếnPin.init()để cấu hình chân.Phương thức lớp¶
Phương thức¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
Khởi tạo chân:
mode có thể là một trong các giá trị:
Pin.IN- cấu hình chân làm đầu vào;Pin.OUT_PP- cấu hình chân làm đầu ra, với điều khiển push-pull;Pin.OUT_OD- cấu hình chân làm đầu ra, với điều khiển open-drain;Pin.ALT- cấu hình chân cho chức năng thay thế, đầu vào hoặc đầu ra;Pin.AF_PP- cấu hình chân cho chức năng thay thế, push-pull;Pin.AF_OD- cấu hình chân cho chức năng thay thế, open-drain;Pin.ANALOG- cấu hình chân cho analog.
pull có thể là một trong các giá trị:
Pin.PULL_NONE- không có điện trở kéo lên hoặc kéo xuống;Pin.PULL_UP- kích hoạt điện trở kéo lên;Pin.PULL_DOWN- kích hoạt điện trở kéo xuống.
Khi một chân có chế độ kéo
Pin.PULL_UPhoặcPin.PULL_DOWNđược kích hoạt, chân đó được kéo lên 3V3 hoặc GND tương ứng thông qua một điện trở nội (thường là hàng chục kOhm -- xem đặc tính điện trong datasheet STM32 của OpenMV Cam đang sử dụng).value nếu không phải None sẽ đặt giá trị đầu ra của cổng trước khi kích hoạt chân.
alt có thể được sử dụng khi chế độ là
Pin.ALT,Pin.AF_PPhoặcPin.AF_ODđể đặt chỉ số hoặc tên của một trong các chức năng thay thế liên kết với chân. Đối số này trước đây được gọi làafvẫn có thể được dùng nếu cần.
- value(value: Any | None = None) int | None¶
Lấy hoặc đặt mức logic kỹ thuật số của chân:
Không có đối số, trả về 0 hoặc 1 tùy thuộc vào mức logic của chân.
Với
valueđược cho, đặt mức logic của chân.valuecó thể là bất cứ thứ gì chuyển đổi thành boolean. Nếu chuyển thànhTrue, chân được đặt cao, ngược lại thì được đặt thấp.
- af() int¶
Trả về chức năng thay thế hiện đang được cấu hình của chân. Số nguyên trả về sẽ khớp với một trong các hằng số cho phép của đối số af trong hàm init.
Hằng số¶