2017年5月12日金曜日

みに

 遅ればせながら、やっと、ようやく、この間、STBee F4miniを買った。

 で、買ってからもジンバルとかスタートラッカとかいろいろやってたので放置してたのだけど、気分転換にF4で遊んでみた。が、泥沼の予感。

 Cubeで生成したコードを使っているが、HSEを使おうとするとハングアップする。
 これはクロックの初期化で、HSEを使う場合はHSIを使わないため、HSIを停止するわけだが、HSIを止めるのはハードウェアで行われる。一方、HSIの後にHSEを初期化するから、HSIを初期化している時点ではクロックはHSIから供給されている。HSIの初期化は、HSIが一定時間以内に停止しない場合はエラーを出してハングアップするような作りになっているので、どうやったって初期化(停止)に成功するわけがない。
 自動生成コードを書き換えてHSIの初期化をスキップすれば、うまく行けばHSEを初期化できる。
 うまく行けば、電源投入からしばらく時間を置いて、クロックの初期化が終了して、プログラムが動き始める。リセットボタンを押せばすぐにリセットされるが、一端電源が切られると再び初期化に時間を要する。

 クロック周りは、HSEを使おうとすると出てくるので、HSIのみで動作させれば全く問題ない。もちろん、PLLのソースにHSIを指定しても問題ない。
 ということで、タイミング精度が重要でないならHSIを使うべきかなーという感じ。せっかく水晶乗ってるのに使えないってのも腑に落ちないけど。

 HALも出てきてからもう何年も経ってるけど、まだうまく動かないのかなぁ。

 STBeeファミリに限って言えば、F4miniの魅力は中間的な価格でCPUが早く、RAM/ROMが多い、という点。逆に、それが必要ないならmini(F1)で良く、速度や価格よりもポート数が欲しいならSTBeeを選択する必要がある。
 F4miniは比較的小型・安価・高速・大容量で、結構バランスが取れたタイプだと思うので、しっかりとハマれば便利だと思うのだが。。
 F4miniにNETMFWが乗ってれば最強なんだろうなぁ、みたいな妄想。でもStdPeriphLib突っ込んだほうが早そう。


*追記
 泥沼から抜け出そうともがいてて忘れていましたが、F4miniにはホビーユーザーからすると微妙な点がいくつかあります。代表的なのは 1) LDOの上流に給電できない 2) BOOTセレクタスイッチが無い の2点でしょうか。
 1については、STBeeやMiniにはGNDと3.3Vの他に、5Vの端子が存在していました。この5VはLDOのINと接続されており、ここに外部電源を接続すれば、マイコンの3.3Vが生成されました(注)。しかし、F4miniは5V端子が無く、外部から給電する際は自前で3.3Vレギュを用意する必要があります。もちろんSTM32F4の動作電圧範囲であれば非安定化電源を直結しても良いわけですが、外部にセンサなどを付ける場合は結局自分で安定化電源を用意する必要があります。気軽に使える電源としてはUSBと同様の5Vがデファクトスタンダードですから、3.3Vマイコンは自前で降圧する必要があります。
 2についても、STBeeやMiniではユーザースイッチを押しながらリセットをかけることでブートローダを起動することができました。しかし、F4miniではユーザースイッチとブートモード切り替えは切り離されており、STM32F4に搭載されたUSB DFUを起動するには何らかの操作が必要になります(ストリナ推奨の方法はジャンパピンの切り替えですが、開発段階でいちいち切り替えるのも面倒でしょう)。僕は、ユーザースイッチからBOOT0端子へジャンパを飛ばすことで対応しています。

注:説明書の指示通りに使用している場合は、STBee、STBee Miniの5Vに外部から電源を供給するとPCに逆流する可能性があります。STBeeの場合はポリスイッチを除去する、ポリスイッチをコネクタで着脱できるようにする、Miniの場合はチップポリスイッチを除去するといった事が必要になります。

 他にも、細かいところでは固定用のネジがインチピッチじゃないといった点がありますが、これについてはユニ基板にピンソケットで結合している限りでは問題ないかな、と思います。
 ユーザースイッチやリセットスイッチを回路から分離できないというのもありますが、これはMiniも同様ですし、この仕様が受け入れられないというのはかなり狭い分野だと思うので。
 まぁ、全体的に見ればF4miniはいいボードだと思います。


*追記
 まだUARTも満足に実装してないのに、CubeでFreeRTOSのコードを出してみました。F1で苦労してたのが嘘みたいに、簡単に動いてしまいました。うーぬ、楽だ。。。
 やっぱりクロックは不安定なままですが、HSIでも立ち上がりが遅い時があるので、もしかしたらクロックとは違うところでも何か問題が有るのかもしれません。ちゃんとマニュアル読んでみようかなぁ(おいこら。
 とりあえずRTOSが動くと、協調的マルチタスクみたいな苦労が必要ないので、メモリとかに気をつけてればいろいろと楽ができます。数年前に缶サットを作ったときはセンサから100Hzで読み込んだり、JPEGカメラで写真を撮ったり、ソーラーパネルとLEDでLチカやったり、ぜんぶSDカードにログったり、というのを自前の協調的マルチタスクで作ってましたが、あんな苦労はもういらないんだ…ッ! あれはSTBeeでしたから、F4miniはクロックが2.3倍、Flashが2倍、RAMが3倍、という感じでしょうか。OSのデメリットを補ってなお余る感じがします。でもF4miniはGPIOが少ないので、缶サットにはちょっと厳しいかも。STBeeサイズ(フルサイズ?)で100ピンパッケージを載せたSTBee F4が待たれますねッ! やろうと思えばSTBeeからチップを外して、電源周りを変更して、F4のQFP100を載せて、ということも可能なはずですが、さすがに僕に0.5mmピッチのパターン修正は無理ゲー。。。F1/F4で共用できる、チップ未実装のフルサイズボードとかあれば…? F1のUSB DFUはいろいろ付加回路が必用っぽいので難しいかも。

0 件のコメント:

コメントを投稿