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.