データシートを読む(2) STM32F401xD/xE その2

JosephHalfmoon
JosephHalfmoon

前回は、STマイクロエレクトロニクス社のSTM32F4ファミリのデータシートを題材に、データシートの大まかな構造から眺めてみました。今回は、各部の読み込みを進めて行きたいと思います。まずは「表紙」から。たかが表紙、されど表紙?

多くの各社に共通しますが、データシートの表紙は情報量が非常に多いです。自分がどのようなMCUを求めているのかハッキリしているならば、表紙を読むだけで、そのMCUが自分の要求を満たせそうなのか、ハシボーなのか判明します。また、候補になりそうなMCUの比較表でも作って検討しようというようなケースでは、「とりあえず表紙」に書いてあることを比べてみれば、大まかなところは達成できます。ただし、読む人に条件があります。表紙に書かれている

用語・短縮語などの意味を把握しているならば

ともかく盛沢山の仕様を1ページに書き込んであるので、用語や短縮語等の説明はここにはまずありません。「その辺理解している人」を前提に書かれていることが多いです。とは言え、そこの会社独特の用語(商標の場合もある)などの場合、MCUのプロであってもそこの会社の製品に不慣れな場合は「よくわからん」言葉が突然でてくることもあります。救いは、

どこの会社のMCUも似たり寄ったりな仕様

が8,9割方はあるものなので、どこか1社でも用語等を理解できるようになれば、大筋は他社にも展開できる点です。地道に言葉を確認していくしかありますまい。

基本的に表紙は、key : value 形式のデータベースに限りなく近いと思います。

  • key 仕様を表す用語、短縮語
  • value その数量あるいは速度など。valueが書かれていない場合は「有」

英語が不得意でも用語等把握していれば理解できないことはまずないかと思います。さて、STM32F401xD, xEのデータシートのタイトルの直下を見てみます。最初に

ARM Cortex-M4 32b MCU+FPU

と書いてあります。ハッキリいって、これだけ書いてあればCPUコアについては「分かった」だろうという感じ。そのためには背景知識が頭に無いとなりません。Arm社のCPUコアのシリーズには、Cortex-A, Cortex-R, Cortex-Mと目出度いARMの名前から1文字づつ拝領したシリーズがあり、A, R, Mの順で上位機種から下位機種、そのうちMはマイコン用のコア、その中でもM4という機種でMシリーズの中では比較的「高級機」であり、FPU(浮動小数点演算ユニット)まで搭載している。なお32bというのは、32bit CPUであることを示す(Armのコアの中には64bit機もあるため)。ここにはValueにあたる数値は書いていないので、そういうCPUコアが「有」(1個搭載)、と解釈して間違いありません。

次に進みましょう

105 DMIPS

ここのkey=DMIPS, value=105です。MIPS=一秒間に何百万命令を実行できるか、というCPUの速度を表す単位です。その前にDという文字が書かれているのでDhrystoneを表します。今時の巧妙なCPU性能測定のベンチマークからは古すぎるという批判は多いですが、とにもかくにもDMIPSは多くの皆さんの頭の中に「スピードのイメージ」が出来上がっている(年寄り)ので、いまだに廃れることはありません。(なお、歴史的には今はなきDECのVAX11/780 が1DMIPSの基準。私は現物使っていたです。)ただし整数性能だけであるので、ここではFPUについては何も言及されていません。(一応使えるけれどもその性能を云々言うようなアプリ向けじゃない、という解釈も可。)

512KB Flash

ここのkey=Flash, value=512KB。フラッシュメモリのサイズですね。MCUの場合、フラッシュメモリには、

  • プログラム
  • プログラムで使用する固定データ

を書き込んで使います。その合計容量が512KBだ、と言っているわけです。プログラムだけ考えると512KBは結構な量に思えますが、多くのMCUのアプリでは、CONSTデータが結構な分量必要になることが多いです。まずは初期段階で決めやすいデータテーブルなどの分量を確保したうえで、残りの領域でプログラムが収まるか否かといった検討が必要だと思います。似た機種で既に開発した経験があれば、過去の機種比でこのくらいという感触を持ってデータシートを読めているかもしれませんが、そういう情報が無い場合、512KBで十分なのかどうかはより詳細な吟味が必要でしょう。とくに限界ギリギリの場合は要注意。MCUによってはすべてをユーザが使えない場合もありますし、使用するツールチェーンによっても変動します。次の

96KB RAM

key=RAM, value=96KBも、同様です。MCUアプリの場合、多くはアドレス固定の大域的なデータ構造とスタックに確保されるローカルなデータの合算で必要サイズがほぼ決まります。固定データはアプリが決まればイメージわきやすいですが、ローカル分は過去機種の実績などないと読みにくいかもしれません。

Flashにせよ、RAMにせよメモリ容量のValueが気になるのは、これがコストに直結しているからです。つまり、プログラムサイズがもう少し小さければ、あるいは使用RAM量がすくなければ

もう一段お安いMCU機種にスイッチできるのに

という要求が常に存在します。ここで一つデータシートに書いてない最大のポイントを

デバイスの価格と納期

はどこの会社のデータシートにも書いていない筈。これが最大重要ポイントなのですが。このごろはサンプル価格については明朗会計でウエブ上で公開されていたりすることがありますが、量産価格や納期は「担当営業にお問合せください」の筈です(マイコン商売では、1K(1000個)、2Kは「量産」とは言わないと思います。数十K~数百Kでようやく量産数量)。データシート見て、どの機種で見積もりとるか考えましょう。

次へ行きます。

11 TIMs

key=TIM、value=11ですね。TIMsのsは複数個あるからでしょう。11チャンネル分のTIM=TIMERでしょう。MCUには必ずTIMERが積まれているという「常識」のもとでの記載。ただし、どんなタイマなのかは読み進まないと分かりません。ただ、11本もあるならば、多分、普通の目的には十分なものが用意されているに違いないであろう、と直感されるわけです。

1 ADC

key=ADC、value=1ですね。ADC=アナログ・デジタル・コンバーターです。「有」ということ。詳しい仕様はともかく、アナログ信号扱えるということは判明。1は少ないようにも見えますが、ADCは安いペリフェラルではないので、必要であれば「使える」というところが重要。

11 comm. interfaces

ここも省略していて comm.=communicationでしょう。11チャンネル(value)の通信インタフェース(key)がありと。ここもどんな通信インタフェースなのかは読み進まないと分かりませんが、タイマ同様11本もあるならば、同期式、非同期式、マイコンで使われる主要な方式はきっと用意されているに違いない、と期待できます。

さて、その下の行に小さく

Datasheet – production data

と書いてあります。ここは重要。このデータシートは量産中のマイコンに適用されるものだ、と宣言しているからです。もしここに、preliminaryとか書いてあったならば、まだ「固まっていない」数字を記載したデータシートだ、ということになります。量産時には変更される可能性があります。

最初の3行を読むだけで本日は終わってしまいました。ゆるゆると先に続けていきたいと思います。

データシートを読む(1) STM32F401xD/xE その1へ戻る

データシートを読む(3) STM32F401xD/xE その3へ進む