Raspberry Pi Pico 2W リリース

Raspberry Pi Ltdは11月25日、Raspberry Pi Pico 2Wをリリースしました。

https://www.raspberrypi.com/news/raspberry-pi-pico-2-w-on-sale-now

Raspberry Pi Pico 2Wは、8月にリリースされたRaspberry Pi Pico 2の無線機能搭載バージョンです。

Pico 2と同様に、RP2350A マイクロコントローラーを搭載しており、QSPIもPico 2と同じく4MBを搭載します。

また、GPIOピン、ソフトウェアの互換性、無線コントローラー(CYW43439 2.4GHz無線LAN / Bluetooth 5.2)は、Raspberry Pi Pico Wと同様となります。

Raspberry Pi Pico 2Wの価格は7ドルで(参考: Pico 2は5ドル、Pico Wは6ドル)、Raspberry Pi認定リセーラーを通じて発売されます。

なお、日本での販売については、技術基準適合証明の取得が完了していないため、取得が確認されて、日本のリセーラーによる販売が開始するのを待つ必要があります。

記事の中では、すでにPimoroniでいくつかの製品に採用・販売がされているものの、まだ正式にはリリースされていないRaspberry PiのRM2無線モジュールについても、近日中に発売予定と言及されています。

RP2040とネットワークチップが合体! WIZnet W55RP20-EVB-PICO レポート

はじめに

こんにちは、tnishinagaです。

今回はWiznetの新製品W55RP20-EVB-PICOをいただいたので、遊んでみようと思います。

要約

  • W55RP20はW5500とRP2040とFlashが1パッケージになったもの
  • メリット
    • チップ面積が減るので基板をつくる人にはサイズメリットがあるかも
  • デメリット
    • W5500とRP2040間の通信にPIOが必要
      • 代わりにSPI0は不要。一長一短。

W55RP20

W5500は韓国のWIZnet社で作られているマイコン向けのネットワークチップです。
TCP/IPの通信の大部分をハードウェアが行ってくれるので、プログラムサイズや処理コストなどを抑えつつ外部とのネットワーク通信が行えるようになります。
たとえば、有線LANに繋がるIoTデバイスをマイコンで作りたい場合などに重宝するでしょう。

W55RP20はこのネットワークチップW5500と、Raspebrry Pi Picoに載っているRP2040とFlashを1パッケージにまとめた製品です。
1パッケージにまとめるメリットとしては、中身のW5500とRP2040とFlashを別々に基板に乗せる場合に比べてチップ1枚分の面積が減らせて基板を小型化できたり、配線をシンプルにできるなどがあります。私は趣味でRP2040の基板設計制作もしているので、個人的にも1パッケージになって面積や配線のコストが減るのは大変嬉しいです。

EVB-PICOの比較

(EVB-PICOの比較画像。3チップが1パッケージになって回路がだいぶスッキリしている。USB端子がType-Cになったのも地味に嬉しいポイント)

サンプルの動作

W5500-EVB-PICO向けのコードそのままでは動かない

W55RP20向けのサンプルコードは、2024/10/09現在以下の環境向けに提供されています(W55RP20-EVB-PICOページ より引用)

  • C/C++
    • Ethernet Examples
    • AWS Examples
    • Azure Examples
    • LwIP Examples
    • FreeRTOS Examples
  • MicroPython Examples
    • Ethernet Examples

私は普段embassy-rsというRust用のライブラリを使って開発をしているので、紹介されているサンプルではなくembassyのW5500-EVB-PICO用サンプルを試すことにしました。
W55RP20はW5500とRP2040がパッケージ内で接続されているだけなので、W5500とRP2040が使われているW5500-EVB-PICO用のサンプルはちょっと手直しするだけで動くだろうと思って試してみたのですが、うまく動きませんでした。なぜでしょうか?

W55RP20のW5500とRP2040の接続

W5500-EVB-PICO用のサンプルがW55RP20で動かない原因を探るため、W5500とRP2040の接続を公式サイトのsystem overviewより調べます。

W55RP20

(画像はW55RP20プロダクトページより引用)

この図によると、RP2040のGPIO20から25がW5500のSPIインターフェイスに繋がれているようです。
次にRP2040のGPIO20-25を見ていきます。

RP2040GPIO20-25

(rp2040のデータシートpp.237より引用)

データシートによるとRP2040のGPIO20-25にはSPI0の割当ができるので、SPIペリフェラル経由でW5500を制御できると思っていたのですが、うまく動きません。
結論を先にいうと、W55RP20でW5500を制御するためにはPIOでSPI通信する必要があります。

SPI0で通信できない理由

SPI0を使って制御できない理由はW5500とRP2040のピン配線にあります。
通常SPI通信を行うためには、マイコンとデバイス間のIO方向があうように接続が必要です。
しかし、W55RP20のサンプルコードよりSPIピン配置を調べてみると、RP2040のデータシートに記されたピン配置とまったく合いません。

(W55RP20のサンプルコード更新履歴より引用)

RP2040のSPI0を使う前提で図示したらこんな感じでばらばらになっています。どういうことでしょう?

ここでW55RP20のsystem overviewを見直してみると、SPI接続部に「PIO SPI」と書かれていました。

(画像はW55RP20プロダクトページより引用)

また、W55RP20対応時の差分を見直してみると、PIOのアセンブリが追加されていました。
つまり、どうやらRP2040のSPI0はピンの接続があわなくて使えないので、PIOを使ってピンを入れ替えてW5500を制御する必要があるようです。

サンプルコード作成と動作確認

制御のためにPIOのプログラムが必要とわかったので、早速作って動かしてみました。

とりあえず動かすことを目的にSPI MODE0のみ対応かつクロックもテキトーなPIOのコードを書いて、emabssyのwiznet driverで使えるようにSpiBus traitを実装してSPIデバイス部を差し替えています。
抽象レイヤーをちゃんとつかって作られているライブラリは、こういう入れ替えが簡単にできて嬉しいです。

ベースにしたembassyのtcp_serverのサンプルコードは、入力をechobackするだけの簡単なTCPサーバーを立ち上げるだけです。
動作の様子はこんな感じです。

サンプルコードは以下で公開しています。

https://github.com/tnishinaga/w55rp20_tcp_server_example

感想

実際に触ってみての感想です。

  • チップ面積が減るのは基板をつくる人的には大変嬉しい
  • ライブラリが充実してくるまでは使いづらいチップかも
    • W5500制御のためにPIOでSPI制御プログラムを作るのはちょっと大変
      • デバッグ時に疑うところが増えるのも大変
    • 逆に考えればPRチャンスでもある
  • SPIの代わりにPIOが1つ使えなくなるのは一長一短
    • RP2350ならPIOが3つ付いてるので欠点にならないかも?
    • チップリビジョン変更時にSPI0でも制御できるようになると嬉しい

どこで買えるの?

公式通販サイトではcomming soonとなっていますが、digikeyではすでに買えそうでした。

チップ単体はまだ買えませんが、WIZnetさんが以下のような投稿をしているので近いうちに買えるようになると思います。楽しみですね。

Raspberry Pi Pico 2およびRP2350がリリース

Raspberry Pi Ltdは2024年8月8日に、Raspberry Pi Pico 2 およびRP2350を発表しました。

https://www.raspberrypi.com/news/raspberry-pi-pico-2-our-new-5-microcontroller-board-on-sale-now

Raspberry Pi Pico 2は、RP2350を搭載した新しいマイクロコントローラー開発ボードで、外形やピン配置はPicoと互換性がありますが、RP2350の搭載によって、よりパワフルなボードになりました。価格は5ドルです。

RP2350は、RP2040の機能を強化した新しいマイクロコントローラーチップです。CPUはPicoで採用されていたデュアルArm Cortex-M0+@133MHzから、浮動小数点およびDSPをサポートするDual Arm Cortex-M33@150MhzもしくはDual RISC-V Hazard3@150Mhzに強化され、ArmコアかRISC-Vコアかのどちらかを選んで使えるようになりました。SRAMは264KBから520KBとほぼ倍になり、QSPI Flashも2MBから4MBと倍に増量しています。PIO state machinesは8から12に強化されています。

また、RP2350は60-QFNのRP2350Aと、80-QFNのRP2350Bの2種類が展開されており、RP2350Bの場合はGPIOが48個提供されます。さらに、2MBのQSPI フラッシュを内蔵したRP2354A / RP2354Bも展開されます。なお、Pico 2にはRP2350Aが搭載されます。

RP2350は、2024年末頃までに量産の開始が予定されています。今後RP2040の用にRP2350が入手可能になることで、サードパーティベンダーからRP2350を搭載した様々なボードが販売されたり、開発者は自分のボードに組み込んだりすることが可能です。

Raspberry Pi Pico 2は今後各認定リセーラーを通じて販売が開始されます。

KSY: https://raspberry-pi.ksyic.com/main/index/pdp.id/1094/pdp.open/1094
スイッチサイエンス: https://www.switch-science.com/products/9809