kelas Pin -- mengontrol pin I/O

Objek Pin merepresentasikan satu GPIO pada STM32. Objek ini menyediakan metode untuk mengonfigurasi mode pin (input, output, fungsi alternatif, analog) dan resistor pull, serta untuk membaca atau menggerakkan level digitalnya. Untuk pengambilan sampel analog lihat pyb.ADC; untuk enumerasi fungsi alternatif lihat PinAF.

Semua pin header telah didefinisikan sebelumnya sebagai pyb.Pin.board.<name>. Sebagian besar STM32 OpenMV Cam mengekspos pin header I/O P0 ... P9; OpenMV Cam N6 mengekspos pin tambahan hingga P18

p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)

Port/pin STM32 yang mendasarinya juga dapat dialamatkan langsung melalui pyb.Pin.cpu.<name>, dinamai sebagai huruf port diikuti nomor pin (misalnya pyb.Pin.cpu.A0). Pemetaan setiap pin header OpenMV ke pin CPU ditentukan oleh board.

Pin juga dapat dipilih berdasarkan nama string:

g = pyb.Pin("P0", pyb.Pin.OUT_PP)

Nama yang ditentukan pengguna dapat ditambahkan dengan Pin.dict()

MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)

dan dapat diquery kembali:

pin = pyb.Pin("LeftMotorDir")

Selain itu, fungsi pemetaan kustom dapat dipasang dengan Pin.mapper()

def MyMapper(pin_name):
    if pin_name == "LeftMotorDir":
        return pyb.Pin.cpu.A0

pyb.Pin.mapper(MyMapper)

sehingga panggilan ke pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) meneruskan "LeftMotorDir" langsung ke mapper.

Urutan berikut menentukan bagaimana sebuah nama dipetakan ke pin fisik:

  1. Objek Pin diteruskan langsung.

  2. Fungsi mapper yang disediakan pengguna mengembalikan sebuah pin.

  3. Kamus yang disediakan pengguna memiliki kunci yang cocok.

  4. String cocok dengan nama pin board (P0, P1, ...).

  5. String cocok dengan nama port/pin CPU (A0, B7, ...).

Panggil pyb.Pin.debug(True) untuk mencetak informasi diagnostik tentang bagaimana setiap objek dipetakan ke sebuah pin.

Konstruktor

class pyb.Pin(id: str | Pin, *args, **kwargs)

Membuat objek Pin baru yang terkait dengan id yang diberikan. Jika argumen tambahan diberikan, argumen tersebut diteruskan ke Pin.init() untuk mengonfigurasi pin.

Metode kelas

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

Mendapatkan atau menetapkan status debugging (True atau False untuk aktif atau nonaktif).

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

Mendapatkan atau menetapkan kamus pin mapper.

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

Mendapatkan atau menetapkan fungsi pin mapper.

Metode

init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None

Menginisialisasi pin:

  • mode dapat berupa salah satu dari:

    • Pin.IN - mengonfigurasi pin untuk input;

    • Pin.OUT_PP - mengonfigurasi pin untuk output, dengan kontrol push-pull;

    • Pin.OUT_OD - mengonfigurasi pin untuk output, dengan kontrol open-drain;

    • Pin.ALT - mengonfigurasi pin untuk fungsi alternatif, input atau output;

    • Pin.AF_PP - mengonfigurasi pin untuk fungsi alternatif, push-pull;

    • Pin.AF_OD - mengonfigurasi pin untuk fungsi alternatif, open-drain;

    • Pin.ANALOG - mengonfigurasi pin untuk analog.

  • pull dapat berupa salah satu dari:

    • Pin.PULL_NONE - tidak ada resistor pull-up atau pull-down;

    • Pin.PULL_UP - mengaktifkan resistor pull-up;

    • Pin.PULL_DOWN - mengaktifkan resistor pull-down.

    Ketika sebuah pin memiliki mode pull Pin.PULL_UP atau Pin.PULL_DOWN yang diaktifkan, pin tersebut ditarik ke 3V3 atau GND masing-masing melalui resistor internal (biasanya puluhan kOhm -- lihat karakteristik listrik dalam datasheet STM32 untuk OpenMV Cam yang digunakan).

  • value jika tidak None akan menetapkan nilai output port sebelum mengaktifkan pin.

  • alt dapat digunakan ketika mode adalah Pin.ALT, Pin.AF_PP atau Pin.AF_OD untuk menetapkan indeks atau nama salah satu fungsi alternatif yang terkait dengan pin. Argumen ini sebelumnya disebut af yang masih dapat digunakan jika diperlukan.

value(value: Any | None = None) int | None

Mendapatkan atau menetapkan level logika digital dari pin:

  • Tanpa argumen, mengembalikan 0 atau 1 tergantung pada level logika pin.

  • Dengan value yang diberikan, menetapkan level logika pin. value dapat berupa apa saja yang dapat dikonversi ke boolean. Jika dikonversi ke True, pin ditetapkan tinggi, jika tidak maka ditetapkan rendah.

__str__() str

Mengembalikan string yang mendeskripsikan objek pin.

af() int

Mengembalikan fungsi alternatif yang sedang dikonfigurasi untuk pin. Integer yang dikembalikan akan cocok dengan salah satu konstanta yang diizinkan untuk argumen af ke fungsi init.

af_list() List[PinAF]

Mengembalikan array fungsi alternatif yang tersedia untuk pin ini.

gpio() int

Mengembalikan alamat dasar dari blok GPIO yang terkait dengan pin ini.

mode() int

Mengembalikan mode yang sedang dikonfigurasi untuk pin. Integer yang dikembalikan akan cocok dengan salah satu konstanta yang diizinkan untuk argumen mode ke fungsi init.

name() str

Mendapatkan nama pin.

names() List[str]

Mengembalikan nama cpu dan board untuk pin ini.

pin() int

Mendapatkan nomor pin.

port() int

Mendapatkan port pin.

pull() int

Mengembalikan pull yang sedang dikonfigurasi untuk pin. Integer yang dikembalikan akan cocok dengan salah satu konstanta yang diizinkan untuk argumen pull ke fungsi init.

Konstanta

IN: int

Mengonfigurasi pin sebagai input digital (impedansi tinggi).

OUT_PP: int

Mengonfigurasi pin sebagai output digital dengan driver push-pull.

OUT_OD: int

Mengonfigurasi pin sebagai output digital dengan driver open-drain.

ANALOG: int

Mengonfigurasi pin sebagai input analog (misalnya untuk digunakan dengan ADC).

ALT: int

Mengonfigurasi pin sebagai fungsi alternatif (input atau output).

AF_PP: int

Mengonfigurasi pin sebagai fungsi alternatif dengan driver push-pull.

AF_OD: int

Mengonfigurasi pin sebagai fungsi alternatif dengan driver open-drain.

PULL_NONE: int

Menonaktifkan resistor pull-up dan pull-down pada pin.

PULL_UP: int

Mengaktifkan resistor pull-up internal pada pin.

PULL_DOWN: int

Mengaktifkan resistor pull-down internal pada pin.