2018年11月24日

HALとCubeMxを使ったSTM32Fxxxの受信割り込み

HALとCubeMxを使ったSTM32Fxxxの受信割り込みの備忘録

33517.jpg

STM32Fをある仕事で使ってみたら慣れてくるととても使い易いのとマイコンの単価も比較的安いの他の仕事にも使おうかと評価してます。
ここで嵌ってしまったのが、受信割込のコード記述で、CubeMxで自動生成されたコードにHALライブラリを使ってどうするのか、Web上では情報がまだ少なく四苦八苦。

ちょっとメモでポイントをまとめてみた。

開発環境は、Atollic TrueSTUDIOレジスタードマーク for STM32 ver9
マイコンは、STM32F303を搭載したNucleo-144
基本的には、UARTの差ぐらいでどれを使ってもあまり変わらないみたい。

1.CubeMxを起動して新しいプロジェクトを作ると、マイコンまたはボード選択の画面になるので使用する使っているボードを選ぶ。
2.始めに144pinのマイコン画面(Pinout)がでるけど、既に自動設定されているのでそのまま。
3.次にConfigrationタブを選んで、有効になっているUART3(UART2のもある)をクリックして詳細の設定
4.ParameterSettingsで通信速度とか設定、NVICで割込をイネーブルにしておく。(重要)
5.最後にProject>Settingでプロジェクトネームを入力、Toolchain/IDEは"TrueSTUDIO"(←忘れる)にしておく。
6.最後にProject>Genarate Codeを実行すれば初期化のコードが全て自動生成される。

次に自動生成されたコートに受信割込処理を追加するが、念のため追加前に一回ビルドしてみる。(大抵は正常にビルドできてhexファイルが生成される)
CubeMxを使うとハードウェアの設定を変える時に、自分で追加したコードが勝手に上書きされないように作法(user codeのエリア)に従って書かねばならない。

1.割込待ち状態にする関数
割込を受け付けられるようにmain関数のイニシャル時(USER CODE BEGIN 2)にHALの割込処理を入れる。
HALライブラリの送信の確認のために、イニシャル時には5バイトだけ送信の記述も追加。

  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_IT(&huart3, &RxData, 1);//1バイト受信割込待ちの準備
  HAL_UART_Transmit(&huart3,TData, 5, 1);
  /* USER CODE END 2 */

2.コールバック関数の追加
昔誰かが作ったソースには、作成者がコールバック関数のプロトタイプ宣言を自ら記述していたが、既に自動生成されていた。

コールバック関数は取りあえずmain.cなかのUSER CODE BEGIN 4に入れてみて実験。(後で他に移す予定)
取りあえず使わないが送信割込も記述した。

/* USER CODE BEGIN 4 */
/*--- Interrupt ---*/
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *UartHandle){}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle){
  HAL_UART_Receive_IT(&huart3, &RxData, 1);//次の割込待ち準備
}
/* USER CODE END 4 */

以上のコードを追加してビルド、デバッグモードに切り替えてRUNさせる。
UART3はデバッグインターフェースでも使っているが、仮想UARTがIDE上で使えるので便利です。Open a terminalでIDE上の認識されているComportを開けばそのまま送受信できる。

私が嵌ったのは1.割込待ち状態にする関数を書かなかったので、コールバック関数内にブレークポイントをかけて走らせ、ターミナルウィンドウから文字を送ってもまったくプレークポイントで引っかからなかった。
よくよく考えると自分で全て書いているときは、割込許可は当然なのでした。

【調査・研究の最新記事】
posted by Soki at 12:02| Comment(0) | 調査・研究

2018年05月23日

アナログの電流/電圧計

アナログの電流/電圧計(YOKOGAWA:2012型)を手に入れました。

23864.jpg


ちょっとクラシカルと言われそうですがはやり直感的な計測にはアナログのほうが使いやすいです。

請負仕事の1/3程度が電源とか駆動系に関連していてそれなりに大きな電流を監視する時に使います。
デジタル式ですと、数字がパラパラ動いて計測できなくなるとOVERと表示するだけなので瞬間的に目で見て判断、停止するまでの時間のちょっとの差で大事な基板や装置を壊したり・・・

今までは3A程度のアナログ電流計しかありませんでしたが、30Aまで計れるのでこれでちょと安心。(0.5級なので精度も満足)

posted by Soki at 11:15| Comment(0) | 設備

2018年05月22日

卓上パンチプレスを購入

今まで苦労していた角穴開けがこれで楽になります。

新しく購入したGOIGOI(卓上パンチプレス)で下穴無しでアルミ板に角穴を開けてみる。
もちろん切断も出来るわけで、今まで苦労してた下穴(10mm径)とハンドニブラによる肉体労働から解放されました。


posted by Soki at 16:57| Comment(0) | 設備

卓上ペインティングブース

卓上ペインティングブースで作業環境の改善です。


23822.jpg


今までは、フラックスの除去剤やその他の溶剤系のスプレーは窓を開けて換気をしながらの作業でした。

春から秋まではそれでも窓を開けられますが冬はちょと厳しく作業効率も低下。
そこでプラモデル用ではありますがテーブルの上にのせて換気のできるペインティングブースを購入。


持ち運びも容易なので半田ポッドやリフロートースターの換気にも役立ちそうです。

posted by Soki at 16:48| Comment(0) | 保有設備・部品

2018年05月20日

3Dプリンタを購入

いままで余り必要もなかったので導入を先延ばしにしていましたがついに購入。

加工精度や仕上げの良いプリントは専門の業者に出せば良いので以下目安で決めました。


選定の目安としては、
@ABSとPLAの両方が出力できること(ホットプレート必須)
A口コミ評価が良く、サポートがしっかりしていること。
B最後にコスパに優れている。(不要・壊れても惜しくない程度)
C組立を必要をするモデルでないこと。
Dネットでの使用記事が色々収集できそうなもの。

色々調べていたらこのプリンターにたどり着きました。
ほんとうは信頼性の高い日本製にしようかとも考えましたが、なにしろ初めての3Dプリンタで壊す恐れもあるので海外製ののユーザー評価の高いこのプリンタにしました。


23796.jpg


今日からは情報収集をしてから設置準備とテスト印刷から入ります。


posted by Soki at 00:00| Comment(0) | 設備

2018年01月21日

CANの通信の実験(Arduino)

受注している仕事でCANを使うので確認実験しています。

18130.jpg

取りあえず購入したサンプルボードにテストプログラムを書き込んで送受信のテスト。
CAN規格のピンアサインと車両のメンテで使うOBD-Uではピンアサインが違うのですね・・・要注意です。

RSで買ったマイクロチップのCAN-BUS-ANALYZERも期の的には少々不満足ですけどちゃんと動いています。
こうやって簡単に動いてしまうとなんだかつまらないですね・・・。開発という仕事、なにか謎が多くて色々試行錯誤しているほうが楽しいです。

ベースの回路はサンプルボードをお手本にしますからあとは時間が空いたときに一気に設計と作り込みを始めます。
posted by Soki at 15:01| Comment(0) | 作業諸々

2017年11月10日

グラフィックLCDモジュールの評価

このところグラフィックLCDを使う開発案件の打診が増えてきたので汎用的な128×64ドットのLCDコントローラの調査をしています。

有名どころは同じような仕様のST7567、UC1701などが、使いやすいのか安価なモジュールでよく見かけます。
値段も大きさによって変わりますが、バラ購入で¥300〜900程度を安くて気軽に使えるのがありがたい。

arduinoで使うにはu8blibを使うのが手っ取り早いです。私もちょっとArduino-Ideにライブラリーを組み込んで使ってみましたが、豊富な関数で痒いところにすぐ手が届きました。


13614.jpg


ただし、コンパクトに作りたいとか、オリジナルのフォントデータを使いたいとかとなるとちょっと色々勉強することが多くなるので自分で作ったほうが早いかな・・・とも思います。

自分で作るライブラリは、まずは全画面をクリアすることと、必要な座標に1ドットのピクセルを描く関数さえできてしまえば、あとは必要に応じて作るのも楽でしょう。

わたしもピクセル描画関数をつくった後は、汎用文字描画、ライン、ボックス・・・関数を作るのが癖になりそうすがこの先どう役立つかわからないのでこのへんで遊びは終了です。


13699.jpg



そのほか、グラフィックLCD用の簡易フォント生成ツールも作ってみました。
このツールを組み合わせてエクセルのテキスト出力(エクスポート)すれば、フォントテーブル配列を自動生成するのも楽になるでしょう。


font作成ツール.jpg

posted by Soki at 00:00| Comment(0) | 実験と考察

2017年08月15日

ケーブルインダクタンスによる共振

ケーブル及び基板パターンの浮遊インダクタンスに関する考察とシミュレーション。

普段設計している一版的にな電子回路基板の動作電圧は大抵は30V以下で動作していますが、時に比較的高い電圧(50V以上)で動作する電源を設計し動作確認をしていると予想外のトラブルが出会うことがあります。

この考察はデータシートの定格を超えない範囲で設計し動作してる回路がなぜか時々、破損してしまう現象が目にとまったので色々その原因を考えてみました。
なんとなく気になっていたケーブるインダクタンスによる影響がどれくらいあるのかというものであるが、実際に確認したことはなかった。

そこで今後の為にも理論的確証も抑えておけば将来の設計とトラブル防止にも役立つので、ワイヤーのインダクタンス、パターンのインダクタンスを想定し、LTSpiceで等価回路を描いてシミュレーションしてみた。

シミュレーションでも、定格なら数十ボルトの電圧しかないはずのポイントが、組み合わせ条件によっては数百ボルトから1500ボルトまで上昇している。
ある組み合わせでピークになるのでおそらくリードインダクタンスによる共振でここまで電圧が上昇しているのだろう。

であれば、共振回路のQを下げたり共振しないようにCを抱かせてあげたりすれば良さそう。
色々、条件を変えてみてシミュレーションをし相関がつかめたので、このような問題が出たときはスマートに片づきそうだ。

あとでわかったことでが、メーカーのデータシートにも同様のトラブル事例が多くあったらしく、詳細に解説されているpdfが既に発表されていた。


Image_Sim_100n_100n_10m.jpg

シミュレーションでも、定格なら数十ボルトの電圧しかないはずのポイントが、組み合わせ条件によっては数百ボルトから1500ボルトまで上昇している。

Image_Sim_1u_200n_10m.jpg

ある組み合わせでピークになるのでおそらくリードインダクタンスによる共振でここまで電圧が上昇しているのだろう。

であれば、抵抗で共振回路のQを下げたり、Cを抱かせて共振点を発振しにくい所までずらしてあげれば良さそう。

Image_Sim_1u_200n_2000m.jpg



posted by Soki at 18:44| Comment(0) | 実験と考察

2017年06月02日

リフロー半田オーブン製品試作版

リフローハンダオーブンに使用する汎用精密温度コントローラ基板です。

18881918_1511456742260733_6959413514528288554_n.jpg

ボード上にはPCと直結できるUSBブリッジ、熱電対コンバータ、SSR制御出力、ブザーオプション機能入出力を備えて実用性と拡張性に余裕を持たせました。

まずは、プロトタイプ試作で使ったリフローオーブンのコントローラと入れ替えての動作試験をしてほぼ問題なく動作しています。このまま問題なければ、先に紹介した筐体に入れて完成。

18767812_1512404615499279_925863959898221455_n.jpg

今後はソフトのブラッシュアップで以下の機能追加と改善を行います。

18838991_1514710501935357_1177096086890114316_n.jpg
@PCより温度テーブルのダウンロード機能
Aダウンロードテーブルの保存と選択実行
B温度データ&タイムスタンプ機能の整理(現在は簡易型)
CPID制御の実装(現状はリフローオーブンでは不要)
D終了時の冷却スイッチ(要ハード:ドアオープン&冷却ファン)

@〜Bまでは時間さえあれば直ぐにでも実装予定です。

posted by Soki at 00:00| Comment(0) | 日記

2017年05月30日

RC用PPM制御リレーボード

試作していたオリジナル製品のRCコントロールリレーボードがほぼ完成に域に達しました。

18740239_1509074262498981_3023162681805569180_n.jpg

基板を見て戴ければ極簡単な回路でたいしたものじゃありませんが・・・、要はソフト次第でどうにでもなるリレー(最大10A)のついたATTINYマイコン基板です。

それでも、あえて新しく作ればそれなりに時間を費用がかかるわけでそれなら出来合いのもので済ませたいという個人・会社向けです。
キットは¥2000台で半完成品で領布販売し、企業向けには量産カスタマイズ&使用権取得費を戴く予定です。

現行のソフトの仕様は汎用のラジコン受信機の仕様にあわせたPPM(パルス信号)を受け取ってリレーのON/OFFのほかにちょっと賢い動きができるようになる予定です。

どちらかというと広告・営業的要素が主であまり儲けようと思ってないという主旨の製品です。

posted by Soki at 00:00| Comment(0) | 自社製品の開発