今回はUSBです。RP2350のUSBは大まかな機能、性能はRP2040と同等。そしてソフト的にも「上位互換」みたいです。SDK使ってプログラムを書くつもりの「よゐこ」にとっては特に気にするところもないんじゃないでしょうか。知らんけど。しかしUSBの「ハードに近いところ」で修正、改良、機能追加いろいろあるみたい。
※Pico関係投稿一覧は こちら 『Pico三昧』は一覧の末尾付近にひっそりと。
※Raspberry Pi Pico、Raspberry Pi Pico2のデータシートは、以下からダウンロードできます。
Pico、Pico2のUSBの概要
PicoのRP2040、Pico2のRP2350とも、USBの機能概要的には同じです。USB素人老人がかいつまむとこんな感じ。
-
- USB 2.0規格準拠のUSBコントローラをHost、Deviceの両方を搭載。切り替えて使用可能。
- PHY(物理層インタフェース)はUSB 1.1規格の回路を搭載。LS (1.5Mb/s)、FS (12Mb/s)に対応。
- パケットの格納のために3840byteのDPSRAM(デュアルポートSRAM)を搭載(IN/OUTとも各16エンドポイントをサポート)
USB High Speed (480Mb/s) は備えていないですが、比較的ローエンドのマイクロコントローラとしては十分なスペックでないかと。
USBについても、どこそこ社のIPを使ったというような記述はないので、自前(もしくは自ら費用負担しての外注)による設計ではないかと思われます。
RP2040とRP2350の差
RP2350のUSBは、ソフトウエア的にはほぼRP2040上位互換で、同じアドレス0x50110000に置かれているのですが、細かく見るといろいろ差異があります。
-
- RP2350におけるパワードメイン導入にともない、PHYの制御のためのレジスタ、ビットなどが追加されている
RP2350のデータシートには、Offset: 0x040番地のMAIN_CTRLレジスタのPHY_ISO bitをスタートアップおよびパワーダウン時にクリアしとけ、という記述があります。RP2040にもMAIN_CTRLレジスタは存在しますが、PHY_ISOというフラグは存在しないです。このビット以外にもパワードメイン導入にともない追加されたビットがあるみたいです。とりあえずPHY_ISOをクリアしておけば、RP2040との差異は見えない?SDKならよきに計らってくれるんだろーな。
-
- LINESTATE_TUNINGレジスタがある
LINESTATE_TUNINGはRP2040には不在なレジスタです。Offset: 0x088ね。LINE=物理的なDP、DM信号という理解でよいのかな。そのチューニングのためのレジスタであるようです。関係するのはPHYからRX、TXのシリアル・エンジンと言われる部分、差動信号をデコードしてパケットにしてくれる縁の下のものどもですね。どうも「中の人」のデバッグ用みたいな感じです。通常は初期設定のままにしておけ、いじるな、と。
-
- RP2040の不具合の修正
素人老人は知らなかったですが、RP2040(複数バージョンあるみたい)のUSBには errata が複数出ていたみたいです。そこを踏んずけてしまったユーザさんは大変だったかもしれないです。知らずが仏と。ホントか?まあ、今回RP2350ではそいつらを直した、ということみたいです。5個くらいFIXしたみたいだけれど、それで全部なんだろううな。知らんけど。
RP2350における機能追加
既にGPIO関係でも書いてます。USB関連でユーザから「見える」機能追加では、以下じゃないかと思います。
-
- USB使用しない設定でDP、DM端子をGPIO化できるようになった
RP2040ではUSB用端子はあくまでUSBだったけれども、RP2350でUSB使用しないということであれば、GPIOとして使用可能だそうな。まあ、Picoボード、Pico2ボードでUSBを使用しないという選択はなさそうですけど。