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

JosephHalfmoon

前回ようやくFeaturesに入りました。今回はFeaturesだけでなく、適宜後方におかれているFunctional overviewについても参照しながら読み進めたいと思います。まあ、いろいろ書いてありますが、最初は、

電源、クロック、リセット

でしょうかね。CPUコアとか目立つ大きな部分はありますが、なんと言っても、電源、クロック、リセットなければチップは動きません。その上この3つは関係が深い。どのMCUもそうですが、ここが安定していないとトラブルの元です。地味だけれど大事な部分。

「データシートを読む」投稿順 index はこちら

まずは、電源とクロックとリセットについて簡単にまとめてしまえば

    1. 電源こなけりゃ何も動かない(クロックもね)
    2. クロック動かなけりゃ、大体の回路は動かない
    3. 電源やクロックが中途半端な状態のとき、回路が勝手に動かないように抑えているのがリセット

リセットというと初期化、「リセットボタン」を押せば初期状態から再起動する、みたいな機能ばかりが目立ちますが、地味に大事なのが、パワーオンやパワーオフのときに、回路が変な動作をしないように固定しておく、という機能です。電源が所定の電圧で安定し、クロック信号も所定の周波数で安定したところで、リセットが解除される、これが肝要です。ただ、モダンなMCUの場合、電源も何系統もあるし、クロック源も複数あって切り替えできたりもし、また、リセット信号にもいくつかあったりします。だから、データシートを良く読まないと何だか分からないわけであります。

それでは表紙のFeaturesの

Clock, reset and supply management

の項目から読んでみます。電源電圧書いてある次の行を見ます。

POR, PDR, PVD and BOR

なんじゃらほい的な略語が列挙されています。通例スペースが無いので略語を使うのが普通ですが、こいつらは省略しなければ結構分かり易いものどもです。

    • POR=Power On Reset
    • PDR=Power Down Reset
    • PVD=Programmable voltage detector
    • BOR=BrownOut Reset

PORはその名の通り、電源投入されたときにかかるRESETです。それに対してPDRは電源が落ちるときにかかるRESETなのですが、こちらはあまり一般的ではありません。このMCUの場合「特定のパッケージ」でのみ使用できます。全てのパッケージで使えるわけじゃないようです。それじゃパワーオフのときに誤動作するじゃないかといえば、そうではなく、普通、PORはパワーオフのときにも働いて回路の誤動作を押さえてくれるのです。なんで別にPDRがあるかと言えば、PORとは異なる電圧条件などで止めたい、といった要求がある場合向けだと思います。

上の2つに対してBORは、パワーオン、オフみたいに、電源が0Vになっちゃうみたいな状態ではなく、しばらく低電圧にして休んでおれ、とか、電源が完全に落ち切らない「ブラウンアウト」な状態を検出して、回路に初期状態に戻って止まれと指令するためのものです。私は英語苦手なので、なんでブラウンなのかは知りません。停電のブラックアウトに至る手前だからなのかな~。誰か知っていたらお教えください。

ここまでの3つは回路を初期状態に戻して押さえつけるRESET信号だったですが、PVDはちょっと違います。特定の電圧まで電源電圧が落ちたらソフトウエアに割り込みかけて、安全な状態に移行させるための機能です。RESETは突然全てを止めてしまいますが、ちょっと何かソフトウエアで後始末をしてからにしてほしい、みたいな時には役に立ちそうです。

その次の4行はクロックを作る元になる回路、オシレータです。複数あります。最初は、4から26MHzの(外付け)水晶振動子(が接続できる)、その次は、内蔵の16MHzのRCです。RCのRは抵抗、Cはキャパシタ(コンデンサ)です。内蔵のRC発振回路が入っておるぞよ、と。そしてそれは

factory-trimmed

と形容されています。元々RCオシレータ、そんなに精度の高いものではありません。その上、半導体チップの表面に形成されるRとかCとかの絶対値は結構バラつくので素のままでは残念な特性かもしれません。そこで「工場で調整済」のやつでっせ、とアピール。しかし、もっと高精度のクロックが欲しいという場合には、外付けで水晶振動子を接続し、それに切り替えることができますよ、と言っているわけです。当然ながら、外付けの水晶振動子は「別売」ですからコストがあがります。でもMCUが制御する対象の多くは正確なタイミングが必要なものが多いので精度の悪いRCではマズイかも。その辺勘案して内蔵RCだけで良いのか、外付け使うのか考えると。

なお、CPUの動作速度、84MHzと書いてあるのに、そのものずばりのクロック源が無いです。なぜかといえば、PLL(フェーズ・ロックド・ループ)回路が内蔵されているから。低い周波数の元クロックのあるきまった倍率のクロックをPLLが生成できるからです。

そして、もう一つのクロックの系統が、32kHzのオシレータです。こちらは「実時間」時計、RTC(リアル・タイム・クロック)に使える低い周波数のもの。時計なので通常CPUが「死んでいる」ときにも動かしづづけたいものです。時計以外の監視機能にも使われる筈。メイン電源切った後もバックアップ用のバッテリ電源でもあればダラダラ動かしたい。よって、電源も別系統になっているのが普通です。そしてこのチップの場合、こちらも内蔵RCの32kHzと外付けの32kHzのどちらかを選択可能です。本当に時計機能を持たせるのであれば外付け水晶でしょうが、単にダラダラ低い周波数で監視機能などを動かすだけならRCでもいいかも。この辺ほじくるとまだまだ色々あるのだな~

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

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