Raspberry Pi Picoの仕様書を読んでみる(1)


ラズベリーパイ財団からRaspberry Pi Picoが発表されました。

このRaspberry Pi Picoは、RP2040というマイコンを使ったボードになっています。CPUがマイコンという意味では、これまでのRaspberry Pi シリーズとは全く違うボードです。STMicroのSTM32シリーズに対するNucleoやDiscoveryなどのボードが出ているのと同じように、RP2040に対する評価ボードとして Raspberry Pi Picoが用意されているという風に考えると良いかと思います。

このRaspberry Pi Picoの一つの特徴が、ドキュメントが大変整備されているということです。RP2040のドキュメントは600ページ以上のものが公開されています。Raspberry PiのチップであるBCM2835のドキュメントは200ページ余りで、しかもバグだらけでしたから、ずいぶん違います。

で、そのRP2040を使ったボードがRaspberry Pi Picoで、こちらはドキュメントとして28ページのデータシートが公開されていますので、今日はこのRaspberry Pi Picoのデータシートを見ていきたいと思います。

ハードウェアは、RP2040と2MBの外付けのフラッシュメモリが載っています。それからマイクロ USB のポートが付いており、ここで電源の供給とフラッシュへの書き込みができるようになっています。
ピンは40ピンで、普通の2.54mm ピッチの配置になっており、20ピン×2列ですから普通にブレッドボードに挿して使うことができます。それ以外に3ピンのSWDのポートがついています。Blue Pillに近い形状です。
電源は、USB以外にもリチウムイオン電池や乾電池など、多様な電源を用いることを想定した設計になっているそうです。

ここで、RP2040というチップの機能に触れます。
まず、CPUはCoretex-M0+のデュアルコアで、クロックが133MHzです。Static RAMが264KB載っています。
内蔵フラッシュメモリはありません。外付けフラッシュメモリを接続するためのQuad SPIと、USB 1.1インタフェースがあります。USBはデバイスモードとホストモードの両方を備えています。
他にはGPIOが30本、そのうち最大4本をADCに使えます。ADCは12 bit の500K SPSです。UART、I2C、SPIは2つずつ。それにPWM が16チャンネルと書かれています。これでサーボの制御などができると思われます。

タイマーは1つだけで、4 alarmsとあるので、一つのタイマーだけれど任意の4つのタイミングで割り込みなどをかけることができると思われます。他にCPUコアごとにカウンタが一つあり、時間計測に使えそうです。この辺はRaspberry Pi(BCM2835)とちょっと似ているように思います。また、時計(カレンダー)機能が内蔵されています。これはRaspberry Piに欠けていた機能です。

一番興味深いのが、「プログラマブルI/Oブロック(PIO)」というものです。これはRP2040のデータシートのほうをあとでちゃんと見ていきたいと思いますが、このPIOを使って、SDカードを接続したりI2Sを接続したり、あるいはVGA の信号を出すこともできるようです。

Raspberry Pi Picoに戻りますと、Picoは基本的にはこのRP2040を使った評価ボード的な構成になっていますが、30本のGPIOの内、4本はPicoのために使われています。その内容は(1)LED、(2)オンボードの電源チップの制御、(3)システムの電圧の測定、だそうです。

プログラミングは、前述のようにフラッシュに書き込むのはUSB経由です。あるいはSWDでもプログラミングやデバッグができます。
ボードをPCのUSBポートに接続すると、Mbedと同じようにマスストレージデバイスとして認識され、USBドライブに拡張子.UF2のファイルをドラッグ&ドロップでコピーすることによって、フラッシュをプログラミングできるようになっています。
STMのNucleoなどでは、ボード上にST-Linkの専用CPUがメインのCPUとは別に載っていて、その専用CPUがドラッグ&ドロップによるプログラミングを実現していますが、Raspberry Pi Picoの場合は、ドラッグ&ドロップでフラッシュをプログラムするためのコードがROMに書き込まれており、これは間違って消してしまったりすることはないようです。
フラッシュにプログラムするときは、Picoに電源を入れる時に、BOOTSELボタンを押しながら電源を入れると書き込みモードになるようです。

駆け足で見てきましたが、このボードが4ドルとなると、教育目的では最強のように思います(というか、明らかにそこをターゲットに開発されていますね)。大学などでベアメタルプログラミングを教えたり、MicroPythonで組み込みシステムを開発したりできます。micro:bitの上位バージョンあるいは置き換えと考えると腑に落ちます。

また、PicoでPicoをデバッグする(一方をJ-Linkのようなデバッグプローブとして使う)ことができるので、開発環境を非常に安価で済ませることができます。ですので、注文するときはとりあえずデバッグ用も一緒に「2枚セット」で買うのが良いかと思われます。

コメント