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ý:

  1. Một đối tượng Pin được truyền trực tiếp.

  2. Hàm ánh xạ do người dùng cung cấp trả về một chân.

  3. Từ điển do người dùng cung cấp chứa một khóa khớp.

  4. Chuỗi khớp với tên chân trên board (P0, P1, ...).

  5. 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 đến Pin.init() để cấu hình chân.

Phương thức lớp

classmethod debug(state: bool | None = None) bool | None

Lấy hoặc đặt trạng thái gỡ lỗi (True hoặc False để bật hoặc tắt).

classmethod dict(dict: dict | None = None) dict | None

Lấy hoặc đặt từ điển ánh xạ chân.

classmethod mapper(fun: Callable[[str], Pin] | None = None) Callable[[str], Pin] | None

Lấy hoặc đặt hàm ánh xạ chân.

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_UP hoặc Pin.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_PP hoặc Pin.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à af vẫ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. value có thể là bất cứ thứ gì chuyển đổi thành boolean. Nếu chuyển thành True, chân được đặt cao, ngược lại thì được đặt thấp.

__str__() str

Trả về một chuỗi mô tả đối tượng chân.

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.

af_list() List[PinAF]

Trả về một mảng các chức năng thay thế có sẵn cho chân này.

gpio() int

Trả về địa chỉ cơ sở của khối GPIO liên kết với chân này.

mode() int

Trả về chế độ 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ố mode trong hàm init.

name() str

Lấy tên chân.

names() List[str]

Trả về tên cpu và board của chân này.

pin() int

Lấy số chân.

port() int

Lấy cổng của chân.

pull() int

Trả về cấu hình kéo hiện tại 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ố pull trong hàm init.

Hằng số

IN: int

Cấu hình chân làm đầu vào kỹ thuật số (trở kháng cao).

OUT_PP: int

Cấu hình chân làm đầu ra kỹ thuật số với bộ điều khiển push-pull.

OUT_OD: int

Cấu hình chân làm đầu ra kỹ thuật số với bộ điều khiển open-drain.

ANALOG: int

Cấu hình chân làm đầu vào analog (ví dụ: để dùng với ADC).

ALT: int

Cấu hình chân theo chức năng thay thế (đầu vào hoặc đầu ra).

AF_PP: int

Cấu hình chân theo chức năng thay thế với bộ điều khiển push-pull.

AF_OD: int

Cấu hình chân theo chức năng thay thế với bộ điều khiển open-drain.

PULL_NONE: int

Vô hiệu hóa cả điện trở kéo lên và kéo xuống trên chân.

PULL_UP: int

Kích hoạt điện trở kéo lên nội bộ trên chân.

PULL_DOWN: int

Kích hoạt điện trở kéo xuống nội bộ trên chân.