投稿

2月, 2019の投稿を表示しています

STM32F3 Discoveryで電子コンパスを作ってみよう。

イメージ
STM32 Eclipse開発環境で実際にマイコン・プログラミングをしてみましょう。 今回は、STM32F3 Discovery を使った電子コンパスを作成します。 STM32F3 Discovery には、STマイクロ製のLSM303DLHCというセンサーが搭載されています。 この、LSM303DLHCはSTM32F3とI2Cで接続されており、3軸の地磁気と加速度を検出することができます。 また、基板上には方角を示すような8つのLEDも搭載されています。 今回は、LSM303DLHCの地磁気センサーとLEDを使って簡単な電子コンパスを作成してみようと思います。 LSM303DLHCの地磁気センサーの使い方 LSM303DLHCの地磁気センサーは、3軸に対する地磁気を検出します。 この磁気センサーは各軸と地磁気の磁束密度を検出するようにできています。 このため、各軸が北を向いたときに最大値となり、逆(南)を向いた時はマイナスの最大値となります。 3つの軸から北を知るには、XYZの3軸で検出された磁束密度の強さをベクトル合成したものが北となります。 STM32F3 Discoveryボード上のLSM303DLHCをよく見ると、1番ピンが下向きにマウントされています。 このため、ボードの上側(USB給電/デバッグポート側)を北に向けたときに、X軸がマイナス値の最大となります。 今回の実装仕様 実装を簡単にするため、XとYだけを使うこととします。 つまり、ボードを水平にした状態での北向き検出します。 この状態で”北”と判断した方角のLEDを点灯し、他は消灯します。 計算方法 LEDは8つしかありません。 従って、LED間の角度は45です。 磁気センサーは、軸が南方向を向くと取得値がマイナスとなるので、数値の正負だけで4方向が特定できます。 このため、数値の正負で4方向を特定し、取得値の絶対値でベクトルを算出してCOS値から詳細な角度を出せばよいのですが、1方向のLEDは0度と45度と90度の3つしかないので、3つのLEDの間、22.5度(0.9238795325...)と67.5度(0.3826834323...)だけ判定できればよいことになります。 I2C通信方法

EclipseによるSTM32統合開発環境構築~トラブルシューティング

イメージ
トラブルシューティング(既知の問題) 使っている中で、いくつかの問題も発生していますのでこの場を借りてシェアしたいと思います。 ・起動時にエラーが出ることがある。 上記のように、main()の先頭でデバッグ停止すれば問題無くデバッグが可能。  ただし、デバッグ停止せずプログラム停止する場合は別の問題 ・OpenOCDが接続できない、デバッグ起動できない  ・OpenOCDが起動したままになっている可能性がある。   一度、Eclipseを終了   tasklistコマンドでOpenOcd.exeのプロセスを見つける   taskkillコマンドで/F指定で強制終了させる  ・それでも接続できない   ドライバとOpenOCDの状態に不整合が生じている可能性   一度、Eclipseを終了   ST-LinkのUSBを抜き差ししてみる  ・それでも接続できない   PCを再起動する 問題が発生しやすい作業 ・プロジェクトを切り替える  STM32CubeMXでプロジェクト作成は簡単にできます。  しかし、プロジェクト・パースペクティブで切り替えると、  やはりデバッグ接続できなくなったりします。  そんなときは一度、Eclipseを再起動してみてください。 ・ボードの種類を変更する  STM32は多くの評価ボードがあります。  DiscoveryやNucleo、MPUもF0~F7など多くの種類があり、  OpenOCDのボード設定で変更できますが、   同じワークスペースで切り替えると上手くいかない ことがあります。  ボードの種類を変更する時は、ワークスペースごと切り替えたほうが安全です。 アップデート対応 Eclipseは自動的にアップデートを検出して、インストールを求めてきます。 このときは、OpenOCD関連のアップデートでしたが、外部ツールとして起動するOpenOCDをアップデート後のOpenOCDを起動するように設定を自分で変更しなければなりません。 具体的にはストリング置き換えで指定しているディレクトリを変更します。 これまで、 fr.ac6.mcu.externaltools.openocd.win32_1.21.0.201811131241

EclipseによるSTM32統合開発環境構築~目次

イメージ
EclipseによるSTM32統合開発環境構築 目次: ・ EclipseによるSTM32統合開発環境構築~その1 STM32開発環境の紹介、必要となるソフトウェア ・ EclipseによるSTM32統合開発環境構築~その2 STM32 CubeMX のインストール ・ EclipseによるSTM32統合開発環境構築~その3 Eclipseのインストール ・ EclipseによるSTM32統合開発環境構築~その4 STM32 CubeMX プラグインのインストール ・ EclipseによるSTM32統合開発環境構築~その5 SW4STM32のインストール ・ EclipseによるSTM32統合開発環境構築~その6 ST-Linkドライバ、ST-Link Utilityのインストール ・ EclipseによるSTM32統合開発環境構築~その7 実際の開発手順と必要な設定 ・ EclipseによるSTM32統合開発環境構築~トラブルシューティング 既知の問題など Lightning Brains  

EclipseによるSTM32統合開発環境構築~その7

イメージ
Eclipse環境での開発 いよいよ、このSTM32 Eclipse開発環境構築も今回が最終回です。 インストールは一通り終わりましたので、実際にプログラム作成しながら設定も行っていきたいと思います。 ここまでのドキュメントはインストールパートごとにページを作成しましたが、ココからは一気にLチカのサンプルプログラムを実装、デバッグ、動作までやってみたいと思います。 なお、このサンプルでは、STM32F3 Discoveryボードを使用して実際にLED点滅まで実装します。 ボードの情報については下記を参照してください。  → STMicroelectronicsのページ プロジェクトを作る 先ず、プロジェクトをSTM32 CubeMXで作成しますが、STM32 CubeMXをEclipseのパースペクティブとして起動します。 Eclipseのメニューから[ウインドウ] → [パースペクティブ] → [パースペクティブを開く] →[その他]を選択します。 起動可能なパースペクティブの一覧が表示されるので、 STM32CubeMXを選択して開きます。 STM32 CubeMXをパースペクティブとして開いた状態 STM32 CubeMXがEclipseのパースペクティブとして開きます。UIは単体でSTM32 CubeMXを起動したときと同様です。 閉じるには、STM32 CubeMXがパースペクティブとして開いている状態で、Eclipseメニューから[ウインドウ] → [パースペクティブ] → [パースペクティブを閉じる]を選択します。 今回使用するボードはSTM32F3 Discoveryボードなので、STM32 CubeMXのホーム画面の[ACCESS TO BOARD SELECTOR]ボタンを押してボードの選定画面を表示してください。 ボード選択のダイアログが表示されますので、下記のように使っているボードを絞り込みます。 Vendor → STMicroerectronics Board → Discovery MCU → STM32F3 選択状況でボードが絞り込まれるので、今回使うSTM32F3 Discoveryの”Mounted Device”を選択して、[STAR

EclipseによるSTM32統合開発環境構築~その6

イメージ
ST-Linkドライバのインストール USBケーブルでSTM32ボードと開発PCを接続し、ST-Linkによる接続を確立してPCからSTM32ボード上のフラッシュにプログラムファイルを書き込んだり、ソースコードデバッグを可能とするためのドライバをインストールします。 ST-LinkドライバはSTMicroelectronicsからダウンロードします。 STM32 CubeMXやそのプラグイン同様に、下記のリンクからSTMのサイトにログインしてダウンロードしてください。  → ST-Linkドライバ 圧縮されたファイル、en.stsw-link009.zipがダウンロードされるので解凍してください。 解凍されたファイル、dpinst_amd64.exeを起動してドライバをインストールしてください。 STM32 ST-LINK Utility のインストール(無くてもよい) ST-Link Utilityは必須のツールではありません。 しかし、プログラムミスなどでST-Linkでの接続ができなくなった時などに必要になるため、インストールしておくことをオススメします。 STM32ボードの動作がおかしくなった時は、とりあえずこのツールでフラッシュをイレースしてみてください。 このツールも他のSTMソフトウェアと同様にSTMのサイトにログインしてダウンロードしてください。  → ST-Link Utility ダウンロードされたen.stsw-link004.zipを解凍します。 解凍されたファイル、STM32 ST-LINK Utility v4.3.0 setup.exeを起動してダウンロードしてください。 おつかれさまでした。 やっと一通りのソフトウェアの、インストールは完了です。 しかし、設定が必要です。 もうちょっとです、がんばりましょう! 次は、いよいよ実際にサンプルコードを記述、ビルド、STM32のフラッシュに書き込んでデバッグ起動します。  → EclipseによるSTM32統合開発環境構築 ~その7 Lightning Brains  

EclipseによるSTM32統合開発環境構築~その5

イメージ
SW4STM32のインストール OpenSTM32 Community SW4STM32は OpenSTM32というコミュニティ により開発が進められているSTM32のオープンな開発ツール一式をパッケージにしたツールチェーンで、Eclipseベースでの開発を可能としています。 STMicroelectronicsのページ にもまとめられていますが、主な特徴を上げると、  ・Eclipseプラグインインターフェイス  ・GCC C/C++コンパイラ  ・GDBデバッガ  ・ST-Link経由でのOpenOCD利用 これらの機能を一まとまりとしてEclipseのプラグイン形式としてインストールすることができます。 EclipseからSW4STM32を取得する Eclipseを起動します、メニューから[ヘルプ]→[新規ソフトウェアのインストール]を選択し、インストール・ダイアログの追加ボタンを押します。 リポジトリーの追加ダイアログで、ロケーションに下記のURLを記述し、追加ボタンを押します。 http://ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.update-site-v2 Eclipseはネット経由で入力したロケーションにアクセスして、ソフトウェアを探します。 ソフトウェアが見つかると、インストール・ダイアログの名前のところに「外部ツール」と「OpenSTM32 Tools」の2つが表示されます。 この2つのチェックボックスにチェックを入れて、次に進んでください。 インストールされるソフトウェアの詳細が表示されるので「次へ」で進んでください。 Eclipse Foundation Software User Agreement が表示されるので、”使用条件の条項に同意します”を選択し「完了」で進んでください。 インストールが監視されると、Eclipseの右下にインストール状況が表示されるので100%まで待ちます。 ネットワーク環境等により時間がかかる場合があります。 途中で「セキュリティー警告」「署名なしコンテンツ。。。」と表示されますが、「インストール」で進んでください。

EclipseによるSTM32統合開発環境構築~その4

イメージ
STM32 CubeMXプラグインのインストール 本特集~その2で、STM32 CubeMXのインストールを行いましたが、今回は EclipseからパースペクティブとしてEclipseの中でSTM32 CubeMXを起動する 環境を構築します。 STM32 CubeMXのプラグインはSTMicroelectronics社のホームページからダウンロードします。STM32 CubeMXのダウンロード/インストールの時と同じようにログインして、ソフトウェアをダウンロードして入手してください。 プラグインの入手は下記のページから行ってください。  → STM32 CubeMX Plug-ins en.stsw-stm32095.zipという圧縮ファイルがダウンロードされるので、解凍してください。 Eclipseを起動して、Eclipseのメニューから、[ヘルプ] → [新規ソフトウェアのインストール] を選択すると、インストール・ダイアログが開きます。 新規ソフトウェアのインストール 追加ボタン押下すると、リポジトリーの追加ダイアログが開きます。 先程解凍したstm32095が追加したい内容なので、ローカルを指定すると、「フォルダーの選択」を求められるので、先程en.stsw-stm32095.zipを解凍した場所を指定します。 リポジトリーの追加ダイアログのロケーションに先程指定したフォルダが表示されるので確認して[追加]ボタンを押してください。 インストール・ダイアログに戻り、名前のところに「STM32CubeMX_Eclipse_Plugin」があるのを確認しチェックボックスにチェックを入れて、「次へ」で進みます。 インストールの詳細が表示されるので「次へ」で進みます。 ソフトウェア・ライセンスに同意、「完了」で進みます。 Eclipseの右下にインストール状況が表示されるので100%まで待ってください。 インストールの途中で「セキュリティー警告」「署名なしコンテンツ。。。」と表示されますが、「インストール」で進んでください。 また、インストールの途中で、Eclipseの再起動を促されるので「いますぐ再起動」してください。 再起動には、多少時間がかかります。

EclipseによるSTM32統合開発環境構築~その3

イメージ
Eclipseのインストール 今回は、統合開発環境Eclipseのインストールと設定を行います。 本特集~その1でも軽く触れましたが、Eclipseは、元々はIBMにより当時のJava開発ツールの統合を目的としてプロジェクトが開始されました。その後、このプロジェクトはオープンソース化されて多くの開発者を引き込み、ソフトウェア開発のマルチプラットフォームとして現在も成長を続けています。 今回、インストールするEclipseは、”Pleiades All in One”という日本語化されたパッケージを使います。元々Pleiadesは、日本語化のプラグインなので単体のEclipseをインストールしてそこにPleiadesを導入することで利用することもできますが、いくつかのよく利用するパッケージや設定なども自動的に行なってくれるため、本記事では”Pleiades All in One”を利用することとします。 Pleiades All in Oneのダウンロード MergeDoc Projectのサイトを開きます。 → MergeDoc Project 最新バージョンのEclipseを選択します。 (本記事執筆時のEclipse最新バージョンは、Eclipse 2018-12) Pleiades All in One Eclipse ダウンロードのページが開きます。 本記事はWindows10/64Bit環境であり、個人的にJavaも使うので、Windows 64BitのFull Editionを選択しました。 C/C++などを選択しても問題ないと思います。(試していませんが。。。) このFull Editionでは、Eclipseが動作するために必要な環境一式がすべてそろうため、ダウンロードしたファイルpleiades-2018-12-java-win-64bit-jre_20181224.zip を解凍するだけで利用することができます。 ただし、解凍するとフォルダが深くなるためにエラーを起こす可能性があると、他のサイトでもよく言われているので、念の為C:\直下に展開しました。 以降の説明は、解凍したPleiadesがC:\pleiadesにあるものとして説明を進めます。

EclipseによるSTM32統合開発環境構築~その2

イメージ
STM32 CubeMXのインストール まず、STM32 CubeMXのインストールから始めますが、STMicroelectronics社のホームページからソフトウェアのダウンロードが必要ですので下記から入手します。  → STM32 CubeMXダウンロード 上記のリンクにアクセスして、ページの下の方に「ソフトウェア入手」とあるので、そこにあるダウンロード「ソフトウェア入手」をクリックします。 ダウンロードに際しては、SLAへの同意と、ログインが必要なため、はじめてアクセスする方は名前とメールアドレス、パスワードを登録してください。 ログイン後、ダウンロードが自動的に始まります。 en.stm32cubemx.zipという圧縮ファイルがダウンロードされますので、解凍します。 ちなみに、日本語のページからダウンロードしても英語版がダウンロードされるので日本語版は無いようですね。 解凍したフォルダ内に、”SetupSTM32CubeMX-5.0.1.exe”があるので実行します。 (本記事執筆時のバージョンは5.0.1) 下記のダイアログが開きます。 インストール開始 Nextボタンで進めると、SLA(Software License Agreement)への同意(Accept)を求められるのでチェックを入れて、Nextボタンを押して進んでください。 SLA同意 今度は、プライバーポリシーを理解したか聞いてくるので、チェックを入れて進みます。 Privacy policy その後、インストール先の指定、ショートカットの作成など聞いてくるので自分の使いざまに合わせて設定してください。 すると、インストールが始まりますので終わるまで待ちます。 インストール中 JRE(Java Runime Environment)がインストールされていない環境では、途中でインストールを求められるのでJREをインストールしてください。 このSTM32 CubeMXは単体で動作できるので、インストールが完了したら起動できるか試してみてください。STM32 CubeMXは、ボード毎のファームソースを必要に応じてネットからダウンロードしてくるので、Proxyを使

EclipseによるSTM32統合開発環境構築~その1

イメージ
STM32マイコン開発 STM32は、STMicroelectronics社製のマイコンで、DescoveryやNucleoなどいくつもの種類が販売されています。 STM32マイコンボード 秋葉原の秋月電子でも取り扱っており、安価で入手しやすいハードウェアです。 しかし、便利なペリフェラルを内蔵している高性能なマイコンで、 上記写真のSTM32F429 DiscoveryではLinxを動作させることも可能です。 また、STMicroelectronicsでは、利用者のために無償で使うことができる STM32 CubeMX というコード生成ツールを配布しています。 このツールを使うことで、ピンアサインなどの初期設定のためのコードや、FreeRTOSなどを含んだスケルトンのコードを自動で生成してくれます。 また、STM32 CubeMX は統合開発環境のプロジェクトも生成してくれるため、下記のメジャーな開発環境で自動生成されたコードをスグに利用することができます。 IAR Embedded Workbench for ARM (EWARM) Keil MDK-ARM もちろん、フルスクラッチでコードを記述することも可能なので、STM32 CubeMXは必須のツールと言うわけではありません。 STM32開発プロセス では、実際にSTM32上のプログラムを開発するためのプロセスについて説明します。 まず、STM32 CubeMXでスケルトンコードとプロジェクトを生成します。 生成されたプロジェクトを統合開発環境で読み込んで、必要なコードを書き加えてビルドします。 ビルドが通ったら、プログラムをSTM32のフラッシュに書き込みますが、STMicroelectronicsのデバッグ環境であるST-Linkを通じてSTM32のボードにアクセスを行います。ST-LinkはパソコンとUSBケーブルで繋ぐだけです。パソコン側がA、STM32側がミニBで、USB給電はSTM32ボードの電源にもなっています。 ST-Link回路部分 ST-LinkのためにSTM32F103マイコンが搭載されており、 特にNucleo系のボードでは、ST-Link部分をカットしやすい 基盤構造となっている。