電子回路設計からプリント基板設計まで(4)
評価ボードのデバッグ開始です。行方不明だった、レギュレータICも無事、見つかりました。
まずは、3種類の電源、+15V,-15V,+5Vを接続し、「燃えないか?」のチェック。
燃えませんでした(笑)。
電源系がショートしているとかだったら、単に実験用電源がシャットダウンするから良いのですが(良くはないけど)、回路が間違っていたり、部品が間違っていると、モクモク~(煙)、または、チンチン~(熱)となり、いくつかの部品が壊れてしまいますので、緊張する瞬間です。
次はアナログ系のテスト、これは、アンプモジュールに供給する差動信号を作る部分です。信号発生器から微小信号を入れ、差動出力を確認します。今回の試験対象は[KHz]オーダーの信号なので、ローノイズOPアンプで差動信号を作成しています。
これも、パス。
ここまでくると、組み込みCPU(STM32F405)のソフトを作り出します。と言っても、今回は検査用の基板なので、それほど複雑なことはありません。PCからのコマンドで各種ファンクションを実行するためのファームウエアです。
開発環境はSTマイクロ社のCPUを使用していますので、”STM32CubeMX”で初期化ルーチンを作り、"SW4STM32"でソフトウエアを書いていきます。
まずは、回路図を見ながら、CubeMXでピンのアサイン。ピン名称は回路図上の信号名と同一の名前を付けています。クロック系は25[MHz]の水晶振動から内部PLLでクロック168[MHz]を作るように設定します。
IOピン以外では、二つのUSARTとI2Cを一つ使用するだけなので、これらのアサインや割り込みベクタの設定などを行います。これで、プロジェクトを保存し、初期化コードを発生させます。なんとも、便利なものです。過去のマイコン開発においては、こういった初期設定コードを書くために、分厚いマニュアルを読まなければならなかったのですが。
で、ここからソフトウエアの開発環境、SW4STM32での作業が始まります。
初期化コードをコンパイルし、エラーがないことを確認。私の場合は、main.cファイル以外に、グローバル変数や構造体などを定義したヘッダーファイルをプロジェクトに追加します。
また、USARTやSystickタイマーの割り込みハンドラをオーバーライドしていきます。で、J-TAGデバッガ(ST-LINK)を接続し、デバッグ可能かどうかをテストします。問題なくコードが書き込めて、ステップ動作が確認できればOKです。ここも緊張の一瞬です。今回は64ピンのCPU(0.5mmピッチ)ですが、半田ブリッジなどがあると(よくある)、デバッガがうまく接続できません。
これも、パス。
次は、クロック系が設定どおりなっているかを確認します。というのは、自分では外部クリスタルを使用しているつもりでも、実は、内部のCR発振器で動いていた、なんていうことも過去にはあったので。
ここでは、簡単なループ(IOピンの上げ下げ)でパルスを発生させ、おおよそ思った通りの周期となっているかを確認します。また。1[ms]周期でSystick割り込みが発生している(ハズ)なので、これも、割り込みごとにIOピン出力を反転させて1[ms]周期を確認します。
大丈夫そうでした。
この手のファームウエアではこういったテストがパスすれば、基本的に書いていく関数は、
・コマンドディスパッチ(コマンドによって処理を分岐させる)
・USART,I2Cドライバ
・ハードウエアの制御用関数(USART,I2C,ポートなどの制御)
などとなります。特に、PCからコマンドで制御する場合は、そのコマンド体系を作っていきます。私の場合は通常、固定長バイナリパケット、チェックサム試験、という感じです。USARTで受信したパケットを、パケットごとにチェックサムなどを確認し、コマンドディスパッチ関数に送ります。返信が必要なコマンドに対してはアクノーレッジパケットを送出します。
ここからは、VisualStudioでPC側の制御ソフトを作っていきます。