Raspberry Pi Pico Wの解析

2023/04/16に公開
3

■ Raspberry Pi Pico W が国内で手に入る!

やっと技適が取得されて国内で販売が開始されました。
早速買ってきました。

https://akizukidenshi.com/catalog/g/gM-17947/
秋月電子さんで売られています。お店にも在庫ありますが、店員に声かけてねになってます。

さて、早速楽しみたい所ですが、楽しむ前にWになってWiFi+BLE機能が追加された形ですので、
何が増えたのか見てきたいと思います。

早速、分解。

チョット部品とか外れてしまったんですが、ニッパーでパチパチして剥がしました。
剥がした後は絶対に電源を入れないでください。電波法違反になる場合があります

このシールドは無線環境の保護用(なんと言うか名前知らない)なので、剥がした後に電源を入れると想定外の放射があったりしますので、剥がした基板は観賞用とします。

さて、剥がした写真から、テカっている部品があると思いますが、これがWiFi-BLE処理を行うCYW43439です。通常のIC(黒っぽくて足が生えてる)タイプとは随分違いますね。

https://www.infineon.com/cms/en/product/wireless-connectivity/airoc-wi-fi-plus-bluetooth-combos/wi-fi-4-802.11n/cyw43439/

CYと始まっていますのでCypressだと思われますが、買収されて現在はInfineonが販売しています。
データーシートが見つからなかったので別の販売サイトにありました。
https://www.mouser.jp/datasheet/2/196/Infineon_CYW43439_DataSheet_v03_00_EN-3074791.pdf

成程ね。SDIO(SDカードの規格団体が追加で企画した規格)やSPIが書かれていますね

では、実際にRaspberry Pi Pico Wの回路図は一体どうなっているんでしょうか。

https://datasheets.raspberrypi.com/picow/pico-w-datasheet.pdf

Appendix Bに回路図がありますね。

回路図があるならシールド剥がす必要なかったんじゃね??

いえいえ、まぁどんな部品が実装されているのかは気になりましたので汗

さて、対象チップのデーターシートと実際の回路図情報が整いました。

早速見ていきましょう。その前にSDIOについて

■ SDIOって何?

丁度社内研究でSDIOへのアクセスは考えていました。

何故SDIOに興味を持ったかと言いますと、マイコン向けのWiFiモジュールが軒並みSDIOに対応していたのです。不思議に思うじゃないですか。

簡単にSDIOについて説明すると
SDカードの端子を使った別の仕組みへのアクセス です。
名前にもSDとあるので、SDカードの規格団体が管理しております。

え?ESP32じゃないの?ESP32はWiFiやBLEは自身のマイコンで行っているじゃないですか。

ESP32は2コアで、その1コアを使ってWiFiやBLE機能を実現してます。

え?ESP32と同じじゃないの?SDIOって何??

最初自分も同じ疑問から調べに行きました。

どうもESP32とは違う考え方のようでした。

え~っと、何処から話せばいいかな。

皆様、SDカードにWiFiが載ったカード、覚えています??

FlashAirが一番有名かもしれません(FlashAirがSDIOだったかは分かりませんが)

SDカードを使ったWiFiは何社か出していましたよね。
ただ何社も生き残らず、アレは歴史に葬られる話だった様に思えたんですが・・・生きています。

何と!! SDカード規格団体が、正式にSDIOとしてWiFiをサポートしたんです!(順番逆かもですが)

https://www.sdcard.org/downloads/pls/
Part E1 Simplified にSDIOについて資料があり、Part E7 SimplifiedにWiFiの資料があります。

SDIOは簡単に説明すると、
SDカードへのアクセスで使用したコマンドを拡張しSDIOレジスタへアクセスできるようにした

って所でしょうか。資料にはステートマシンが書かれてあり、コマンド(CMD)によって動作が変わる様です。 へ~~

■ CYW43439について

やっと最初の話と繋がった汗

Raspberry Pi Pico Wに搭載されたWiFiは、SDIO対応のWiFiモジュールと分かった訳です。
BLEに関しては、CYW43439は他の規格にも対応していましたが、Pico WではSDIOでWiFiとBLEにアクセスしているようです。

前項で説明したように、SDIO対応のWiFiモジュールはWiFi機能がAPIとして提供されている状態です。
その為、Picoのプログラム処理は非常に楽になり、ESP32の様な苦労が格段と減ると思われます。
ただ、一般的でない使い方(深く調べてないですがPtoPの通信やメッシュとか?)を行う際はSDIO-WiFiのコマンドに無い場合があります。 そこは注意してください。

まさかね、SDカード型のWiFiモジュールがこんな形で再び出会うとはね、しかもとても便利な形でね。なんかちょっと感動してしまいました。

※とは言えMMCカードがeMMCとして復活した経緯を考えると、SD規格はライセンスが厳しく色々苦労していると思ったりもしてる

って事で、SDIOでアクセスすればWiFi(BLEもAPIがあります)が使えるって事が分かりました。

■ Raspberry Pi Pico W と CYW43439について

さて、では普通に考えれば、Pico WとCYW43439はSDIOで繋がっていると思いますよね。

CYW43439の資料では、上記3種類の接続方法が記載されています。

SD 4-bit,SD 1-bitは通常のSDカードへアクセスする際の方法ですね。
4-bitは高速で1-bitは簡易と言った所です。
その後にgSPIと言うのがあり、この方法でSPI通信でアクセスも出来ます。

って事は、多分Raspberry Pi PicoはSPIで繋がってるんだろうなぁ・・・・

あ~ ん?????? SPI????じゃ、無くね???

ここがTwittewrで盛り上がった話です。
問題の回路の部分を拡大します。

SDIO端子に対して WL_CLK,WL_D,WL_CS の三本しかない!!

SPIって通常4本なんですよ? CLK,MISO,MOSI,CS の4本ですよ??

何で3本に?WL_Dって何??

そうなんです、WL_DはMISOとMOSIの兼用を行っているようです。

端子で言うと、CMD->DI、DATA0->DOですので、この2本が一つのWL_Dに抵抗を介して繋がっています。

え?信号がぶつかったり誤動作しないの??

CYW43439にタイムチャート図があったので見てみます。

綺麗にMOSIとMISOが分かれていますね。

た、確かにMOSIとMISOを直結させて、WL_Dで出力/入力を切り返せば理論上上手く行く話ではるが・・・・

普通、メーカーの方式に合わせない??

国内で量産向けやグローバル向けの開発設計を行っていると、メーカー標準の方式を使えと口を酸っぱく言われますが、どうもRaspberry Pi Pico Wに関してはメーカー標準よりピン数を削った方法使おうぜ! だったようで、中々興味深い基板になっていました。

確かに、Raspberry Pi Picoはピン数が少なく、SDIOで4本使うとなんか勿体ない気がします。(いや、全くしないが汗)
その為、理論上省略が可能なMOSIとMISOを連結させ、SDIOへ3本でアクセスする事にしたようです。
(いや、全く理解が出来ないんだが)

正直、これで本当に動いているのかとても不安になります。

が、Raspberry Pi Pico Wは正式に販売されています。皆様の手元にも届くと思います。
勿論公式も色んな評価をしていると思います。勿論動いている話だと思います。
成る程、そういう手で攻めてくるのか。勉強になります(真似をするとは言っていない)

今回のSDIOを3本で通信する方法は、WL_Dが入力と出力の切り替えをPIOで行っている事で実現したようにも思えます。通常のIOで入力出力の切り替えは時間がかかったりしますので、高速なPIOで切り替えを行っているのでしょう。そう言う所のテクニックはとても素晴らしいと思います。

が、応用が利かない。全く何を学んだのか分からない・・・

■ 自分なりのPico Wとの向き合い方

さて、そんな凄いRaspberry Pi Pico Wですが、どうやって向き合ったら良いでしょうか。

普通にWiFiで遊ぶのも良いと思います。が、ESP32で行った事の二番煎じかもしれません。

自分は、先に話した通り、SDIOを用いたWiFiモジュールの評価基板としてありかなと思いました。技適取れた基板は中々手に入らなかったので、大変重宝してます。

一般的なSPIを使っていない点がとても残念ですが、SPIの後にあるWiFI-APIへのアクセスは中々面白い気がしてます。また業務でも同様なSDIOを用いたWiFiについて触れておきたく(ESP32が使えない場面等も考えて)これは中々良い基板なのではと思いました。

逆に、Pico WではSDIOで規格化されたWiFi機能しかない為、実験や研究で発展した仕組みに関しては試すことが難しい気もしてます。その辺はESP32が良いかもですね。

また、まさか無いと思いますが、CYW43439が規格に反した動きやエラッタがあった際は、諸にダメージを受けます。ESP32でプログラムを間違えたって話ではなく、チップ自体に欠陥があった事になってしまうので大変メンドクサイ話になります。まさか無いと思いますが、世界中で利用されると発見されたりするので、その辺も注意が必要かと思ってます(BLEの開発が遅れたのもそういった罠があったんじゃないかと勝手に予想してます)

まぁそんな何が起こるか分からないって言うのも開発していて楽しい点ですので(実務では使わないかな汗)今後の発展に期待したいと思います!

長々となりましたが、勢いに任せて初Zenn記事になります。
今後も無料、有料含めて記事が書ければと思っています。

それでは、次の記事でまた!

今後ともよろしくお願いいたします。

https://artifactnoise.com/

ArtifactNoise合同会社
代表:北神雄太
Twitter:@nonNoise

■ 追加調査内容

ふむ、一か所調べて無かった部分があったので追記します。
結果として一か所間違いがありました。
SDIOの規格にあったWiFiの設定内容、本当に使ってる? と言う点です。


https://community.infineon.com/t5/Knowledge-Base-Articles/Mbed-OSで提供されるサイプレス-ファームウェア-KBA228252-Community-Translated-JA/ta-p/250560

結果的には、SDIOの規格APIは使用していなかった。

どうもCypress独自のAPIがある様で、mbed OS版に対応して入る様です

https://github.com/Infineon/wifi-host-driver

で、mbed OSに対応していると、Raspberry Pi Pico Wはmbed OSを元にArduino化しますので、結果的にWiFi.hが使用できるようです。

ん~この辺沼が多そうだ。ソフトでの連結調査をまた時間ある際に行いたいと思います。

■ 追加調査内容2

SDIOから先が何をやっているのか全く分からず、仮にPicoを使わずにCYW43439だけ買ってきたら自分も試せるのかどうか、色々調べていたんだが・・・

え?ブロック図見て、WiFi側にCortex-M3? え? BLE側にCortex-M4??
何?この無線モジュール、CPU2個(しかもコア違い)が載ってるの??
ってか、PicoはCortex-M0+なんだけど??
何ともまぁアンバランスな仕組みですが(と言うか割高感あるのに1200円なんだ)
要するにRAMが小さいCPUが載っていて、起動時か何かでコンフィグバイナリを転送するみたいです。
開発環境とかもあるみたいで、なんか想像と違うなぁ とか思いつつ、PicoWでCYW43439の開発が出来る気がしているのも確か。(SDIOから全部行うみたいなので)

一旦この話はここまで。また気になったら調べていきたいと思います!!

Discussion

北神雄太北神雄太

P.S.全然関係なかったけど、USBの配線がPicoの時より細くなっているの、何とも言えない顔してる。
Picoの頃はしっかりインピーダンスを合わせる目的で太めだったんだが、Wになって流石に細くなった様な。
この辺難しい話だけど、自分も細い方を支持したいなぁ(インピーダンス要求的には悪い方に寄った気がするけど)

strvsnstrvsn

Pico Wは無線機能の追加でRF回路のパターンを引く必要があり、
多層基板を採用しているのでインピーダンス整合観点でUSBの配線幅も細くできます。
無印はおそらくコストメリットを重視して両面基板を使っているので、
インピーダンス整合させる必要のあるUSBのトレースだけは配線を太くして対応しています。
どちらもインピーダンス整合を考慮して設計されていると見受けます。

北神雄太北神雄太

わわわ!ありがとうございます!確かに、Wは多層基板になっていますね!その点見逃していました。
そうなると細く合点が行きました。そうですね、そりゃそうですよね汗。
考えられている点、確かにそうだと思います。ありがとうございます!!