このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

PSOC™ Edge 用クイックリファレンス

KIT_PSE84_AI ボード

PSOC™ Edge E84 AI キット 。

以下は PSOC™ Edge E84 ボード用のクイックリファレンスです。このポートを初めて使う場合は、このマイクロコントローラの概要を把握しておくとよいでしょう:

注釈

このポートの最新の進捗は Infineon MicroPython PSOC™ Edge フォーク で確認できます。これらの機能をこちらに取り込む作業を進めています。それまでの間は、フォーク版をインストールすれば先行して試せます。

ピンと GPIO

Pin API の完全なリファレンスは machine.Pin を参照してください。この節では、PSOC™ Edge ポートに固有の違いや特徴を中心に説明します。

コンストラクタ

コントローラのピン名は P<port>_<pin> という命名規則に従います。ここで:

  • <port> はポートを表す数値の識別子です(たとえば PSOC™ Edge E84 では 0〜21)

  • <pin> はそのポート内でのピン番号です。

利用できるピンとその位置は、それぞれのボードのピン配置図で確認してください。

これがコンストラクタに渡す必要のある id で、以下のいずれかの形式で指定します:

  • シングルクォートまたはダブルクォートで囲んだ 文字列ラベル: 'P<port>_<pin>' または "P<port>_<pin>"

  • インスタンス化済みのオブジェクト Pin.cpu.<pin> または Pin.board.<pin> 。

from machine import Pin

p_in  = Pin('P0_0', Pin.IN)
p_out = Pin("P7_0", Pin.OUT, value=False)

p = Pin(Pin.cpu.P17_1, Pin.OPEN_DRAIN)

インスタンス化済みのオブジェクトは、コンストラクタを呼び出さずにそのまま使えます。設定を変えるには init() を使ってください。

from machine import Pin

pin = Pin.cpu.P17_0
pin.init(mode=Pin.IN)

Tip

利用できるユーザーピンを調べるには、REPL インターフェースでタブ補完を使ってください:

>>> from machine import Pin
>>> Pin.cpu.P
P10_5           P10_7           P11_3           P12_3
P13_0           P13_1           P13_2           P13_3
P13_4           P13_5           P13_6           P13_7
P14_0           P14_1           P14_2           P14_3
P14_4           P14_5           P14_6           P14_7
P15_0           P15_1           P15_2           P15_3
P15_4           P15_5           P15_6           P15_7
P16_0           P16_1           P16_2           P16_3
P16_4           P16_5           P16_6           P16_7
P17_0           P17_1           P17_2           P17_3
P17_4           P17_5           P17_7           P20_3
P20_4           P20_5           P20_6           P20_7
P21_1           P21_2           P21_3           P21_4
P21_5           P21_6           P21_7           P3_0
P3_1            P6_4            P6_6            P7_0
P7_7            P8_0            P8_1            P8_5
P8_6            P9_0            P9_1            P9_2
P9_3
>>> from machine import Pin
>>> Pin.board.
AMIC1_CTB_INN   AMIC1_CTB_INP   AMIC1_CTB_OUT   AMIC1_CTB_REF
AMIC2_CTB_INN   AMIC2_CTB_INP   AMIC2_CTB_OUT   AMIC2_CTB_REF
I2C_SCL_1V8     I2C_SCL_3V3     I2C_SDA_1V8     I2C_SDA_3V3
I2S_TX_FYSYNC   I2S_TX_MCK      I2S_TX_SCK      I2S_TX_SD
I3C_SCL         I3C_SDA         IMU0_INT        IMU1_INT
MAG_INT         PDM_CLK         PDM_DATA        PRESS_SENS_INT
RADAR_INT       RADAR_RESET     RADAR_SPI_CLK   RADAR_SPI_CS
RADAR_SPI_MISO  RADAR_SPI_MOSI  SERIAL_INT0     SERIAL_INT1
SERIAL_INT2     SERIAL_INT3     USER_BUTTON     USER_LED1
USER_LED2       USER_LED_B      USER_LED_G      USER_LED_R

drive パラメータは最大 8 段階を受け付け、ピンの駆動能力を次のように設定します:

  • DRIVE_0: 1mA/2mA の駆動電流(通常速/高速 IO)

  • DRIVE_1: 2mA/4mA の駆動電流(通常速/高速 IO)

  • DRIVE_2: 3mA/6mA の駆動電流(通常速/高速 IO)

  • DRIVE_3: 4mA/8mA の駆動電流(通常速/高速 IO)

  • DRIVE_4: 5mA/10mA の駆動電流(通常速/高速 IO)

  • DRIVE_5: 6mA/12mA の駆動電流(通常速/高速 IO)

  • DRIVE_6: 7mA/14mA の駆動電流(通常速/高速 IO)

  • DRIVE_7: 8mA/16mA の駆動電流(通常速/高速 IO)

駆動能力の詳細については、PSOC™ Edge の データシート と アーキテクチャリファレンスマニュアル を確認してください。

注釈

以下のコンストラクタ引数や設定値は、このポートではサポートしていません:

  • alt: 代替機能はサポートしていません。

  • mode: Pin.ALT 、 Pin.ALT_OPEN_DRAIN 、 Pin.ANALOG の各モードはサポートしていません。

以下の mode と pull の組み合わせは、このポートではサポートしていません:

  • Pin.PULL_UP または Pin.PULL_DOWN を指定した Pin.OUT

  • Pin.PULL_DOWN を指定した Pin.OPEN_DRAIN

メソッド

Pin.irq(handler=None, trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING, priority=7)

以下のパラメータはポート固有の動作をします:

  • priority: 優先度の値は 7 (最低)から 0 (最高)までです。デフォルトは 7 です。

    注釈

    同じポートのピンはすべて同じ割り込みラインを共有します。そのため、同じポートのピン全体に対して1つの優先度しか設定できません。同じポートの複数のピンで割り込みを設定した場合は、最も高い優先度が使われます。1つのピンだけに割り込みを設定した場合は、その優先度を任意の値に設定し直せます。

注釈

irq() の以下の機能は、このポートではサポートしていません:

  • trigger: Pin.IRQ_LOW_LEVEL と Pin.IRQ_HIGH_LEVEL のトリガはサポートしていません。

  • wake: wake パラメータは現在サポートしていません。

  • hard: このパラメータは無視されます。渡すことはできますが、現在は効果がありません。

注釈

Pin API のコア以外のメソッドは、このポートでは どれも 実装されていません。

リアルタイムクロック (RTC)

machine.RTC を参照してください:

from machine import RTC
import time

irq_counter = 0

def cback(event):
    global irq_counter
    irq_counter += 1

rtc = RTC()
rtc.init((2023, 1, 1, 0, 0, 0, 0, 0)) # 特定の日付と時刻で rtc を初期化。
                                      # 例: 2023/1/1 00:00:00
rtc.datetime((2017, 8, 23, 2, 12, 48, 0, 0)) # 特定の日付と時刻を設定。
                                             # 例: 2017/8/23 1:12:48
rtc.datetime() # 日付と時刻を取得

rtc.irq(trigger=RTC.ALARM0, handler=cback)
rtc.alarm(1000, repeat=False) # ワンショットの短いアラームをミリ秒で設定
rtc.alarm_left() # アラームが切れるまでの残り時間を読み取り
time.sleep_ms(1008) # 十分な時間だけ待機
print(irq_counter) # irq のカウンタを確認

rtc.irq(trigger=RTC.ALARM0, handler=cback)
rtc.alarm(3000, repeat=True) # 周期的な短いアラームをミリ秒で設定
rtc.cancel() # アラームをキャンセル

rtc.irq(trigger=RTC.ALARM0, handler=cback)
rtc.alarm((2023, 1, 1, 0, 0, 1, 0, 0), repeat=False) # ワンショットの長めのアラームを設定

rtc.memory(b"hello") # RTC のユーザーメモリにバイト列を書き込み
rtc.memory() # RTC のユーザーメモリからバイト列を読み取り

注釈

'wday' フィールドに適当な曜日を設定しても有効にはなりません。内部のライブラリは、渡された年、日、月から常に正しい曜日を計算するように実装されています。ただし datetime() はこれに対してエラーを発生させず、最後に計算した実際の値でフィールドを書き換えます。

注釈

このポートの RTC API の動作には、以下の特徴があります:

  • RTC() はシングルトンのコンストラクタで、 id や追加のコンストラクタ引数はありません。

  • rtc.irq() はアラームトリガ 0 ( RTC.ALARM0 )を受け付けます。 wake は実装されていません。

  • rtc.alarm() は time と省略可能な repeat を受け付けます。位置引数のアラーム id は使いません。

  • datetime のタプルで入力された weekday は無視され、ハードウェアが日付のフィールドから曜日を計算します。

  • 現在の rtc.memory([data]) の最大ペイロードは、KIT_PSE84_AI では 28 バイトです。

警告

このポートの RTC アラームの時間分解能は秒単位です。ミリ秒単位のアラーム値も受け付けますが、内部で秒単位に切り上げられます。

UART

machine.UART を参照してください。

このポートには以下の特殊化があります:

コンストラクタ

class UART(id)

以下のパラメータは、限定された設定でのみサポートしています:

  • bits 。8 ビットのみです。

以下は将来の実装を予定していますが、まだ利用できません:

  • rts

  • cts

  • flow

注釈

以下のパラメータは実装されていません:

  • txbuf

  • invert

メソッド

UART.init(baudrate=9600, bits=8, parity=None, stop=1, *, ...)

コンストラクタと同じパラメータを、同じ制限のもとでサポートしています。