PSOC™ Edge 用クイックリファレンス
以下は 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 ビットのみです。
以下は将来の実装を予定していますが、まだ利用できません:
rtsctsflow
注釈
以下のパラメータは実装されていません:
txbufinvert
メソッド
- UART.init(baudrate=9600, bits=8, parity=None, stop=1, *, ...)
コンストラクタと同じパラメータを、同じ制限のもとでサポートしています。