STM32F4xxいいかも

gcc+makeでSTM32F4-Discoveryへのプログラム書き込みができるようになった。書き込みが高速で気持いい。いろいろ調べてSTM32F4xxが気に入ってきた。メモリーは多い(192KByte)だしGPIOのレジスタもすっきりした。

写真は、いろいろ実験するべくSTM32F4-Discoveryボードを秋月B基板に取り付けたところ。

STM32F4-Discovery試行中

STM32F4-Discoveryを使うべく施行中。こいつをサポートしている開発環境をダウンロードして使えばいいのだけれど、無料で手に入るのは機能や試用期間が限定されている奴しかなさそうだ。最終的には、gcc+makeで開発したいので、実験してみる。

これまで使っていたstm32f10xとバイナリーコンパチなのではないかと、LEDチカチカのコードを作ってST-Linkで書き込むが、まったく反応がない。リファレンスマニュアルで調べてみると、I/Oの番地がガラッと変わっている。なかなか面倒だ。 CMSISとかPeripheralsライブラリを使えということだろうか。

とりあえず、使うレジスタの番地だけ合わせて、コードを作り直し、再度書き込んでみるがやっぱり動かない。ST-LinkでCPUをリセット、STEP動作させながらPCの値を見ると、なんか書き込んだプログラムとぜんぜん違う動きをしている。チップのFlashRomには書き込めているようなのだが、別のプログラムが動いているようだ。動作モードが違うのか?

STM32F4-DiscoveryかSTBeeか?

次のネタの実験に使うボードをSTM32F4-DiscoveryにするかSTBeeにするかで悩む。両方とも、まだ全然使っていないので、開発環境というかプログラムの書き込み方がわからない。

続きを読む… »

基板設計

仕事で使うstm32のボードを設計。実際に使用するI/Oは限られていて、それだけなら簡単な回路なのだが、いろいろ実験できるように載せられる限りのコネクタを装着したので結構大変だった。ユニバーサル配線領域も載せてしまった。

使用する部品でRSで買うものがあったので、ついでに買うものを探したらstm32を売っていた。digikeyよりは若干高いがまぁ許す。とどいた部品をみたらstm32が1個づつ導電性スポンジ入りのプラスチックケースに入っていた。TQFP等のパッケージには、皆さん気を使われているようだ。

スイッチサイエンスからnetduino plusを購入。回路図を見たら、使われていない端子が多数ある。うーん、贅沢だ。こいつもちょっと試してみたい。

EAGLEの画面 RSのケース netduino plus入手

Bad Apple on オシロ とりあえず完成

DAへの出力の高速化ができて、音もまともになった。ノイズやチラつきの低減など課題も残っているが、いちおう完成ということにする。

本当は、アナログオシロのX-Yモードに表示させて撮影したかったのだが、適当なものがなかったので、デジタルオシロで我慢。

Bad Apple on オシロ

BadApple 影絵
on オシロ

今日もSTM32でBad Appleシリーズ。DAコンバータ経由でオシロスコープに出してみる。かなり手間取ったがなんとかオシロに動画が出るようになった。なかなか面白い。何が偉いかというと、マイコンで2GのSDmicroカードが読み出せるのが偉い。これで膨大なデータを使った動きが可能になる。世の中進むねぇ。

まだ、DAへの出力が遅くて音も遅れたり、ノイズが乗りまくりだったり、Z軸の制御がまだだったりするけど、そのへんを解決すると完成。stm32 Primer2の良い使い道ができた。

Bad Apple 影絵

STM32Primer2上でBad Apple 影絵を再生すべく、音関係の機能を調査。意外と簡単に音も再生できるようになった。あとは、音と動画を同期して再生させるだけだが、そのまえに、GPIOを使って処理時間の調査などをしようとしたところでハマってしまったが、なんとか解決。同期もうまくいった。

さて、これを人に見せても、いまどき動画を再生できる小さいハードはいくらでもあるわけで、関心してもらえそうには無い。もう1工夫したい。

STM32の練習

BadApple 影絵 on STM32Primer2

次のマウスを開発するに当たって、stm32のSDIOの能力が気になると思っていたら、stm32 Primer2はSDIO経由でmicroSDにつながっていることを思い出した。

試しに使ってみようと思っているうちに脇道へ…とりあえず、動画の表示までできた。次は音か…

e-Disp使ってみた

繋いでみた ハロー

以前購入していたe-DISPをstm32ボードに繋いでみた。TTLレベルのシリアル通信で文字コードを送るだけで普通に表示される。まだ、出してないけど日本語も表示できるらしい。

e-DISP側のヘッダーピンはL字のものがおすすめ。何も考えずにストレートのものを付けてしまったら、ケーブルが背面に飛び出て、座りが悪い。ブレッドボードに指すと使いやすい。

JTAGでプログラム書込み

JTAGで書込み ピン配置貼付

手持ちのstm32でboot loaderを使うことは諦め、JTAGでの書込みを試みることにする。

stm32+JTAGで検索するJTAGkey互換の書き込み器が流行っているようだ。作るか買うか迷っているうちに、OLIMEXARM-USB-OCD買っていたことを思い出した。JTAGkeyに手を出すのは、これを試した後でも遅くは無い。

で、ドライバーを探してインストールしたり、OpenOCDをインストールしたりして、なんとかプログラムを書込み、LEDを点滅することができた。めでたしめでたし。

ARM-USB-OCDのピン配置図を自分で描いて貼り付けた。メス-メスのジャンパワイヤと合わせて使いやすい。写真ではJTAGの信号を観測するためにメス-オスのジャンパワイヤをブレッドボードで中継させている。

基板デバッグ

発信器追加

stm32のboot loaderが返事しないのは外付けの水晶が発信していないためではなかろうかと考え、コンデンサを換えたり、水晶を換えたりするが変化が無い。いっそ発信器を付けてしまえと、手持ちの48MHzの発信器を両面テープで貼り付けて配線するがそれでも変化が無い。

一応Erattaもチェックしてみると、2.13にdateコード が 937(2009年37週)以前のSTM32F105/107xxでは、boot loaderが使う可能性がある入力ピンのなかにLowまたはHi-Zのものがあると boot loaderが使えない。64pinパッケージでは外部に出ていない入力端子があるのでboot loaderは使えないとある。チップのdateコードを見ると923!ピンゴである。

Erattaの現象に遭遇することは多いのだが、未だに基板発注前にErattaを確認したことがない。まぁ、その時点で見ても気づいたかどうか怪しいのだけどね。

ネットワーク時計

ネットワーク 時計

stm32ボードにuIPを載せて、dhcp, dns, web-server等は動いていたのだが、やっとntpも動くようになった。ネットから取得した時刻を stm32のRTCに設定してネットワーク時計の完成だ!

まだ通信遅れの補正などは行っていないが、難しくはなさそうだ。stm32のRTCには、微調整の機能もあるので、ドリフトを計算し補正もできそうだ。

時計の設定を手でやる必要が無いのと、時計が秒単位(ちゃんと補正すればもっと)合っているのは快感だ。

カラーLCDをSTM32ボートに

stm32ボードにカラーLCDをとりつけた。8x5dotのフォントでは、字が小さすぎる。読みづらい。

取り付けた Hello 色々

STM32 ファームウェア書き込み

STM32ボード

STM32用ファームウェア書き込みプログラム完成。STM32のシステムメモリに書き込まれているブートローダを使ってシリアルポート経由でファームウェアを書き込めるようになった。STM32のブートローダは、LPCのものより素直で、割と簡単にファームウェアを書き込めるようになった。

gccでコンパイルもできたので、次は、PLLの設定、割り込み処理だ。ここまでできれば、あとは普通に使えるはず。

STM32

付録STM32ボード

自作の電源をいじっていたら、AC100Vがシャーシに接触。電源は壊れなかったが、接続していたOlimexのLPC2378ボードが壊れてしまった。接続していたネットワークのラインも壊れているかも。

まぁ、LPC2378からSTM32に移行したかったので良い機会だ。でも、STM32-Primeは、なんか出来上がりすぎていて手を出しづらい。Circle-OS上で動くプログラムを作っても面白くないし、Circle-OSを壊すとどうやってファームウェアを書き込めばいいのか不安。

手持ちの在庫を調べ直したら今は無きDesignWave付録のSTM32のボードがあった。調べるとブートローダFlash-ROMに書き込まれていて、ファームウェアはUSB経由書き込めるらしい。Flash-ROMの特定領域を書き換えてしまうと書き込めなくなるが、シリアルポート経由であれば、書き込めるらしい。

いろいろ弄って、USBからの書き込み、LED点滅、シリアルポートへの出力、シリアルポートからのファームウェア書き込みまでできた。USBからのファームウェア書き込みは、ボードをリセットするたびにPCがUSB機器を再認識することになりうざいし、CPUメーカ(STMicro)提供の書き込みソフトも繰り返し使うには面倒なので、シリアルポートを使ったファームウェア書き込みプログラムを作成する予定。