« RTC | トップページ | FlashMagic »

2012年6月24日 (日)

STM32L15x電源

最近は、blogに書けないようなネタばかりやっている。

------

STM32L15xをいじっているだけれど、メイン電源とバックアップ電源の切り替えについて悩む。
F103はVbat端子があって、ここにバックアップバッテリを接続すると、うまく内部で切り替えてくれる。

L15xでは、この端子が廃止されていて、通常の電源端子にバックアップ電源を供給しなけりゃいけない。
バッテリでの連続動作を念頭に置いているってことなのかな。

設定しているバックアップ用の電池は非常に小さく10mAhくらいしかないので、CPUをディープスリープモードに切り替えてから、主電源を落としたいのだが...時間差で主電源を切れるようなハードウエアが要るのか?

電源切り替えは、昔よく使っていた、SRAMバックアップ機能のついたリセットICみたいなものを使うのだろうか。昔の定番だとMAX690とか。

CPU内部のRTCとバックアップレジスタを保持したいんだけれど、そのために外付けの回路が色々要るのはうっとうしいなあ。スマートじゃない。
基本電池駆動のものでも、メインの電池交換のときにもRTCを保持したいって要望はあると思うんだけど、そういう時はどうやるべきなのかな。
F103なら簡単なのだが。

------

そもそもの消費電流を何とかしたい話では、ハードウエアUARTに移行する以前に、処理内容を見直し整理すると、大幅に処理が軽くなった。

そこでメインクロックを64MHzから16MHzに。
TIM1は燃費が悪いらしいので、SYSTICKに一本化。TIM1のクロックを止めるだけで、数mA違うようだ。
TIM1は見るからに回路規模が大きそうだけれど、SYSTICKはそもそも24ビットしかないし、レジスタの類も少ない。

いろいろやって、当初30mAくらいあったのが、10mAくらいまで減った。
これでも同じバッテリでの稼働時間は倍程度に延びている。

意外なことに16MHzクロックでも、60KHzインターバル割り込みは、そう大きな負担になってないようだ。
どちらかというと、I2Cのほうが負荷が高いように見える。

------

さらに8MHzでもいければ、PLLも止めてしまって、消費電流をもっと下げられそうなのだけれど、ホストとの通信スピードが出ない。(ボーレートは維持できるが)
そこで、ホストとの通信時のみ、PLLを書き換え、スピードアップをしようとするのだけれど、うまくいかない。

クロックを内部原発振に切り替えた上で、PLLとバスタイミングの設定を変えている。
クロック自体の切り替えはうまく行っているようなのだが、そこでなにか処理をするとうまく行かないようだ。
切り替え以外の処理をすると、プログラムの実行が止まる。
まだなにか間違っているのか。

こういった要望もあるはずなので、なにかやり方はあると思う。

これ以上CPUの消費電流を減らしても、他の回路分もあるので、恩恵はそんなに大きくないのだけれど。

| |

« RTC | トップページ | FlashMagic »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: STM32L15x電源:

« RTC | トップページ | FlashMagic »