Open3
Raspberry Pi Pico WでのRustについて
無線チップのドライバはEmbassyという非同期プログラミングフレームワークで実装されている:https://github.com/embassy-rs/cyw43/
- Embassyを使うにはnightly Rust toolchainが必要?
- Embassyのcrateはcrates.ioにないものも多いため、Cargo.tomlでGitリポジトリを指定する必要がある(参考:https://github.com/apollolabsdev/stm32-nucleo-f401re/blob/main/Embassy/gpio/Cargo.toml )
- いろいろfeatureを指定する必要がある。
- 参考:https://github.com/embassy-rs/embassy/blob/master/examples/rp/Cargo.toml
-
embassy_executor::mainを使うにはarch-cortex-m, nightly, executor-threadのfeatureが必要。 -
embassy_time::Timerを使うには、embassy_executorにintegrated-timers、embassy-rpにtime-driver, critical-section-implのfeatureが必要。これがないとリンクエラー
- 無線チップ(CYW43439)を動かすには、ファームウェアとCountry Locale Matrix (CLM)という2種類のbinary blobを送る必要がある。
- RP2040側のプログラムに配列として埋め込んで、初期化関数に渡す
- Wi-Fiの接続管理やLEDの制御など、無線チップ自体の制御は
cyw43::Controlを通して行う。-
gpio_set(pin_num, value)でLEDなどのGPIOを制御。LEDはピン番号0 -
join_open(ssid)/join_wpa2(ssid, pass)でWi-Fiネットワークに接続
-