Pico三昧(45) ラズパイPico2:RP2350、Pico:RP2040、USB比較

Joseph Halfmoon

今回はUSBです。RP2350のUSBは大まかな機能、性能はRP2040と同等。そしてソフト的にも「上位互換」みたいです。SDK使ってプログラムを書くつもりの「よゐこ」にとっては特に気にするところもないんじゃないでしょうか。知らんけど。しかしUSBの「ハードに近いところ」で修正、改良、機能追加いろいろあるみたい。

※Pico関係投稿一覧は こちら 『Pico三昧』は一覧の末尾付近にひっそりと。

※Raspberry Pi Pico、Raspberry Pi Pico2のデータシートは、以下からダウンロードできます。

Pico-series Microcontrollers

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を使用しないという選択はなさそうですけど。

Pico三昧(44) ラズパイPico2:RP2350、Pico:RP2040、ADC比較 へ戻る

Pico三昧(46) ラズパイPico2:RP2350、Pico:RP2040、TRNG へ進む