★つれづれ出張所♪

プログラム開発情報(主にAndroidと組み込み系)を発信していま~す。(*^_^*)

マイコン

GIGABYTEマザーのサスペンド点滅しない件の対策だよ!

夏ころにPCを自作して1台新調していました。

まえにGIGABYTE製のGTX1080搭載グラフィックカードを購入して使っていた感じから結構イイじゃん!と思い、新調したPCにはGIGABYTEマザーH370 HD3を調達してサブマシーンとして使っておりました。(ものすごい久しぶりにGIGABYTE製のマザーを購入しました。486系PC以来かもしれませんw)

 

で、、、特に問題もなく使えてはいたのですが、1点だけ不満点がありました。

それは、サスペンドすると電源ランプが消灯してしまう問題!

 

その他に持っているPC(HP, ASUS, ASRock, MSI)ですとサスペンドすると電源ランプが点滅してサスペンド中であることが分かるのですが、こいつは分かりません。

 

設定の問題か?と調べたりすると、どうやらGIGABYTEマザーだけは伝統的?に点滅しないみたいです。

マジかよ!って感じです。(;´Д`)

 

んで、電源ランプ以外は特に問題なかったのでサブから開発用のメインへ昇格させたのですが、日常的にサスペンドを使っている身からするとメインマシーンでこの状況は辛くなってきました。

 

さてどうしたもんか?と無い知恵を絞ってひらめいたのが、サスペンド中でもUSBからの電源が供給されている。電源を切る(シャットダウン)とUSBの電源は落ちる。

って、事は、USBになにかデバイスを付けるLED点滅ユニットを作ればイケるんじゃね?って思いつきました。

 

ただのLED点滅だけのブツなので、とにかく安く仕上げるのに調べました。

stm32
STM32
F103を積んだこのモジュールだと数百円で買えます。しかもUSBモジュールとしても動作するみたい。早速入手!

STM32系の開発は多少慣れているのでさくーっとファームウェアを作ります。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ちょっと前からなのですが、STM32の開発環境が無償で使えるようになりました。

https://atollic.com/

ユーザー登録のみでSTM32の統合環境(日本語も対応しているよ)が揃えられます!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

で、、、これだけだとWIndowsがサスペンドしたのか?シャットダウンしたのか?がデバイス側で分からないので、デバイスへ通知する常駐ソフト(ドライバー?)も開発。

 

あと例によって3Dプリンターでケースも作成!

 DSCN7732a

出来ました♪

ちょっと粗削りなところがありますが、目的が達成されたので満足です!(;´∀`)

STM32のPWM機能を使ってじゅわ~っとLEDを点滅させているので自己満に浸っていますw

 

一式おいておきますネ。以下のセットがZIP圧縮して入っています♪

 ①STM32のファーム

 ②Windows10用の常駐ソフト

 ③ケースの3Dモデルデータ

https://yahoo.jp/box/09udvy

 

DSCN7733a
STM32F103C8T6モジュールの「
A3ピン」に砲弾型LED(5V 5mm)のアノード(+)、「GNDピン」にLEDのカソード(ー)を繋げて下さい。

必要に応じて抵抗も必要です。自分は面倒なので秋月電子の抵抗付きLEDを使っています。

http://akizukidenshi.com/catalog/c/cregled/

 

 

【①STM32のファーム】

STM32F103のファームを書き込むには、ST-LINK V2(書き込み装置)とSTM32 ST-LINK Utility(Win用ソフト)が必要です。

 

書き込み装置は、パチモンが安く売っているようです。特に問題なく使えるらしい?です。

自分はパチモンが出る前にクソ高い純正品を買っていたので、そちらを使いました。(^_^;)

 

ソフトは、以下からダウンロードできます。ユーザー登録が必要です。

https://www.st.com/ja/development-tools/stsw-link004.html

 

接続はこんな感じにします。

DSCN7734a
DSCN7735a
また、自分の場合は認識させるのにUSBからの電源供給も同時に行いリセットボタンを押さないとダメでした。

キャプチャ
モジュールのリセットボタンを押した直後(素早く)にST-LINKUtilityの
[Connect]ボタンを押します。(※↑この画像では、表示設定を8bitに変更してあります)

キャプチャ2
認識されたらあとはゆっくりとメニューから
[Target][Program &Verify...]を選んでファーム"Stm32F103_LedUnit.hex"を書き込み(Download / Start)ます。

 

USB機器として認識させるWindows用のドライバー(STM32 Virtual COM PortDriver)は、次の場所からダウンロードできます。

https://www.st.com/ja/development-tools/stsw-stm32102.html

 

 

【②Windows10の常駐ソフト】

どこでも良いので任意の場所にSleepLedDriver.exeを保存します。

初回のみPC起動時に自動実行させるためのレジストリを書き換えるので「右クリック」して『管理者として実行』で起動します。

タスクトレイに出ますので、右クリックして「SETTING」を選びます。
cap01

AUTO RUNの項目にある[Enable]ボタンを押すと自動実行のレジストリを書き換えます。

 ※[Disable]を押すとレジストリを削除します。アンインストール時に押してください

 

なんと見ての通り、LEDの発光パターンを3種類も切り替え出来ます!

大した違いはありませんが・・・(笑)

 

内部的には、30秒間隔でLEDデバイスに状態を通知するプログラムになっています。

Windowsのメイン処理に負荷をかけない作りにしています。
あとついでにBIOSのErP項目も変更しておいてください。シャットダウンしてもUSBに常に電機が入りっパになるとLEDが点滅しちゃいますので・・・w

 

 

【③ケースの3Dモデルデータ】

おなじみのFusion360で作っています。ケースの上(ふた)と下(本体)の2つのパーツに分かれています。

 ※ふたを止めるネジだけは、ホームセンター等でM3サイズのを確保してください


LEDの穴は、ギリギリのサイズにしてあります。LEDが入らない場合は、中くらいの+ドライバー(大体のものは
5mmサイズなはず!?)を差し込んで「くりくり」して、調整しながら穴を大きくしてください。

3Dプリンターを持っている人は、そのまま印刷を・・・。

持っていない人は、Win10Paint 3Dアプリからオンラインで注文ができるみたいです。

ただし見積りでクソ高いです。見積金額『ふた\1639+『本体\1923』と出ています・・・。

こんなのだれが頼むのでしょうか!?(;´Д`)

cap3d

ここからは余談ですが、3Dプリンターって、なんでも簡単に出来る!って思う人が多いですが実際には結構シビアです。小さいですが今回のケースを全部プリントアウトするにも3時間ほどかかります。

また、先のケース画像をよく見てもらえば分かると思うのですが、バリや平面が波打っていたりします。

これをきちんと3Dプリント出来る装置は民生用ではありません。

自分は妥協してそのまま使用しちゃいますが、本当に綺麗にしたい場合など最終的にはパテを盛って削ったり塗装し直すなどの手作業が存在します。大元となる3Dデーターを作るのも大変ですしね。

なんでも簡単に出来ちゃうと思われる3Dプリントですが、結構、手間暇(経験も!)が掛かります。

何で報道とかはきちんとしてくれないのでしょうか?ちょっと調べれば分かる事なのに…技術立国日本と叫んでいる割には実情は情けないですw

 

以上です。

GIGABYTEマザーでサスペンドしても電源ランプが点滅しなくて寂しい人は、試してみる価値があるかも!?自分は大満足です!!!(;´∀`)

 

【補足1】

多少のラグが存在します。マザー本体の機能ではないのであくまでも疑似的?なサスペンド点滅処理になっています。この点を理解の上、使ってみたい方はトライしてみてください。

 

【補足2】

個人の作成なのでUSB IDSTMicro社製の開発用IDのままとなっています。

これで特に問題ないとは思いますが、ほかに同じ様な作りのUSB機器があった場合、USB IDが重複して使えなくなる可能性があります。

これの対策には、高いお金を払ってUSB機器の認証等を行わないといけないので、個人ではとても無理です。ハイ!


  

STM32 HALドライバで使うFreeRTOSの罠・・・?



どうもです。
STM32F7の紹介をだいぶ前に行いましたが、開発を続ける上で一つだけ引っかかっている部分がありました。
現在、OBD2機器の開発を遊びで行っているのですが、リアルタイムOSを組み込むと意図としない動作が起こってしまう事でした。
プログラムを実行して、大体30分~2時間くらいでハングアップしてしまうのです!(涙)。

全然原因が分からないので、しばらく放置しておりました・・・w

で、最近やっとどうにかなったのでここに書き出しておきます。

まず、STM提供のHALドライバを使うと一緒にFreeRTOSが付いてきます。(STM32F7は、強制的にHALドライバの使用が勧められています)
ちなみにFreeRTOSは、組み込み系で使えるフリーウェアのリアルタイムOSです。
 ※詳しくは→http://www.freertos.org/

今までもSTM32F4などで、FreeRTOSは使っていたので、それと同じだろう!とプログラム記述していました。

が、、、、それが悪かったようです。orz


最近、STM提供のサンプルプログラムを眺めていたらFreeRTOSを呼び出す関数が違う!?
そう、HALドライバで使用するには、使い方が違ったのです!(;´Д`)

まず、通常であればヘッダーを以下の様にリンクします。
 #include "FreeRTOS.h"
 #include "task.h"
 #include "queue.h"
 #include "portmacro.h"

ですが、HALからは次の様にリンクします。

 #include "cmsis_os.h"
1ファイルのみです。(内部では通常のヘッダーをリンクしていますが・・・)

もう、ここからして怪しさ爆発です!

例としてタスクを生成する関数ですが、、、通常のFreeRTOSでは次の通り・・・。
 xTaskCreate(prvTaskLCD,   (signed portCHAR *)"LCD",   0x400, NULL, 1, NULL);
 xTaskCreate(prvTaskSensor,(signed portCHAR *)"SENSOR",0x200, NULL, 1, NULL);
 xTaskCreate(prvTaskKLINE, (signed portCHAR *)"KLINE", 0x400, NULL, 1, NULL);
 vTaskStartScheduler();

HALからは、次の通り・・・。
 osThreadDef(taskLCD, prvTaskLCD, osPriorityNormal, 0, 0x400);
 taskHandleLCD = osThreadCreate(osThread(taskLCD), NULL);
 osThreadDef(taskSensor, prvTaskSensor, osPriorityNormal, 0, 0x200);
 taskHandleSensor = osThreadCreate(osThread(taskSensor), NULL);
 osThreadDef(taskKLINE, prvTaskKLINE, osPriorityHigh, 0, 0x400);
 taskHandleKLINE = osThreadCreate(osThread(taskKLINE), NULL);
 osKernelStart();

もうねぇ、関数が全然違いますがな・・・。(´・ω・`)

でもこれらHAL側の関数は、マクロになっていて最終的には、FreeRTOSの関数が呼ばれます。
これで今までと同じようにプログラム記述してても動作しちゃって居た訳・・・(汗)。

そんで、最終的にはFreeRTOSの関数が呼ばれても実際には、なにやら色々とHALドライバの方では制御しとるのですよ。
詳しく書くと長くなりすぎるので割愛しますが、FreeRTOSと言っても似て非なるものです。
(大雑把に言うとタイマーの制御に小細工を入れている感じデス)

これだったらHALドライバの解説でFreeRTOSって書かないでほしい!
せめて互換品と書いといてくれ~~~~

ちゅう事で、関数を全てHALドライバのFreeRTOSに置き換えて実行すると5時間以上連続始動させても無事動作するようになりました♪
これで、次のステップに進めます!(;´∀`)

なお、HALドライバのFreeRTOSについてはリファイレンスマニュアルが無い?(見つからなかった)ので、ヘッダーファイル cmsis_os.h から代替え関数を突きとめてプログラムを修正した次第です。辛かった・・・w

それにしてもHALドライバよ、オメ~はいらない子だ!
STMも通常の(今まで通りの)ドライバーを提供してくれ~~~~~~~~!!!!!!!!!!!!!!

おしまい



マイコン開発でOBD2(車両)を制御しましょ。まずは基板づくり!

まえにSTM32F7-DISCOVERYの開発環境構築等をお伝えしました。
現在は、ちょっと時間が無く停滞気味なのですが、その後の仕上がり具合をお伝えしておきます。

ただ単に開発環境を整えるだけで遊ぶのではツマラナイですので、うちの開発らしく?車両制御(情報取得)を行いたいと思っています。
まずは、この写真のようにブレッドボードとワイヤーを使って、既存のセンサーモジュール等をつなげて動作確認を取りました。

0001
繋いでいるモジュールは、以下の通り・・・。 ※スミマセン!正式なサイトが無いのでamazonへリンクしています

1)MCP2515 CAN制御モジュールx2
  ※前に掲載した要のモジュールですよ! マイコンとはSPI接続です

2)DS1307 クロックモジュールx1
  ※電源を落とすと時刻が保持できないのでその対策用 マイコンとはI2C接続です

3)WS2812 5050 RGB LEDモジュールx2
  ※フルカラー制御できるLEDです マイコンとは、GPIO直結です

4)ADXL345 3軸加速度センサーモジュールx1
  ※そのまんま加速度を計測できるブツです マイコンとはI2C接続です

いずれも、そこそこ手に入りやすく、なるべく安い物をピックアップしたつもりです。

さらに温度センサー、ブザー、電圧計測用およびK-LINE対応回路を考えております。
STM32F7-DISCOVERYは、ARDUINO互換で外部接続ピンが少ないのもあり以上が取り付けられる物の限界です。
とは言え、車載機器として楽しそうなものは全部付けたつもりなので大丈夫?かなと思っています。(;´Д`)


とりあえず、プログラムしての動作確認は出来たので、これらのモジュールやSTM32F7-DISCOボードを繋ぐ専用基板を起こしてみました。
 ※1行で書いていますが、じつはこの動作確認がもの凄く大変でしたw

最近は、個人で基板を作るのも大変安く気軽に作れるようになりました!
まずは、KiCadと言うソフト(フリーです!)を使い回路図の設計。その後、基板の設計をしてポチっと中国の製造(今回はErecrowと言う所です)へ投げます。

■これは、回路図の設計画面
0020

■これは、基板回路の設計画面
0030

■出来上がりイメージを3Dで表示することも出来ます!
0040

ちなみに基板の設計は、プログラムの数百倍「楽!」です。
日本の大メーカー(大手?)は、いまだにハード主義な感じがありますが、ソフトを作るのに比べればハード設計など楽なもんです。
今回もブレッドボードとワイヤーを使った動作確認のプログラムをする方が、もの凄く時間が掛かっています。
その後の基板設計などそれに比べれば、あっという間ですw
よって、本当にプログラム出来る人であれば、ハード設計などすぐに覚えられますので、KiCadと一緒に覚えましょう!世界が広がりますよ。( ̄▽ ̄)


と言う事で、届いた基板はこちらになります!(いわゆるElecrowガチャは5→7でした)
 ※特に急いでないので安便で発注しました。それでも10日ほどで届きます
0045
しかし、、、、本当はこの前にもう一つあった(発注していた)のですが、凡ミスをしてしまい再度修正して発注し、届いたものになります(汗。
 ※日本の製造会社に出すよりはるかに安いのでミスしてもダメージ少ないですねぇ~。いい時代になりましたw

なお、Elecrowでは基板のカラーも製造発注時に選べます。
自分は今まで赤、青、黒しか指定したことありませんでしたが、今回おまけで新色のパープルを使った基板「ものさし」が入っていましたのでご覧くだされ!0050
今のところパープルは、別料金になるので自分は遠慮しておきたいと思いますがw、良い感じです。セレブな人はアリ!だと思います。
ついでにと言っては何ですが、黒は非常にカッコイイです。
ですが基板回路上の配線が見ずらいので、ジャンパーする時に困ります。よって完全に完成した場合に黒を選択する方が良いと思います。
それと定番の『緑』を発注したことが無いのは、日本の製造へ出すと標準価格のカラーだからです。
それ以外のカラーは、別料金になるので、貧乏性な自分はどうしても『緑』以外のカラーを選んでしまっています。(;^ω^)


完成基板は、4月中旬には届いていたので5月の連休中に組み立てていじろうと思っていましたが、時間がなく断念!?
その前に本家OBD2アプリの改良を施すのに手間がかかり過ぎたと言う事情がります。。。(汗)


と言う事で、唐突にここでお知らせ。
OBD2アプリ(Android版になります)、久しぶりにバージョンアップします。
現在最後の確認中ですので、今しばらくお待ちください。ウヒヒ♪


マイコンOBD2開発については、進捗があり次第ブログに掲載します。
こちらについては、回路図等も含めすべて公開する気であります。何時になるかは知りませんが・・・(^_^;)
お楽しみに・・・!



電子部品・工具の専門店!!

STM32F746G-DISCOでARMマイコン開発。最初からプロジェクトを作成する方法!

ここでは『SW4STM32 - System Workbench for STM32』を使って最初からプロジェクトを作成する方法を示します。

SW4STM32を起動すると毎度のことながらworkspaceの場所を聞かれますので、今まで通り .\Ac6\workspace で進めてください。

起動したらメニューから [File] → [New] → [C++ Project] を選択するとダイアログが開きます。
ここでは、Project Nameを "test" としておきます。
また、Project Typeを Executable → Ac6 STM32 MCU Projectを選びToolchainsが、"Ac6 STM332 MCU GCC"とします。
そして[Next]ボタンで次に行きます。
キャプチャ10

ここでは、特に何もせず[Next]ボタンで次に行きます。
キャプチャ11

MCU Configuration ダイアログが出るので、Seriesから"STM32F7"を選んで、、、Boardから"STM32F746G-DISCO"を選びます。
これは、SW4STM32があらかじめ今回のターゲットボード設定が登録されています。楽ですね!
と言う事で、またまた[Next]ボタンで次に行きます。
キャプチャ12

Project Firmware Configuration ダイアログが表示されます。
ここでは、No firmware か Hardware Abstraction Layer (Cube HAL)が選べますので、Cube HALを選んでください。
 ※Standard Peripheral Library (StdPeriph)は、選べませんが・・・(理由は後述)
そして初回だと必要ファイルのダウンロードが必要なので、[Download target firmware]ボタンを押します。
キャプチャ13

ライセンスの確認ダイアログが出るので、了解 (I accept the agureement.) して[Ok]ボタンを押します。キャプチャ14

ダウンロードが開始されます。茶でもすすりながら待ちま~す♪
キャプチャ15



ここで、先ほどちょろっと出てきたCubeHALの説明です。
これは、STマイクロ社が自社のSTM32シリーズで使えるライブラリー提供しておりその名称になります。
 ①Standard Peripheral Library (StdPeriph)
 ②Hardware Abstraction Layer (Cube HAL)
上記2つが、存在していて①が初期の頃からあるハードウェア寄りの基本的なライブラリーです。
対してCube HALは、近年登場してきたマイコン間の差異を吸収するように出来ているリッチなライブラリーです。
最新のSTM32マイコン(高性能版)は、StdPeriphがサポートさずにCubeHALに移行してきています。
今回使っているSTM32F746G-DISCOボードに搭載されているSTM32F746NGH6マイコンは、高性能版ですのでCube HALのみサポートされていて、先ほどのインストールダイアログでStdPeriphが選択できなかったのは、このような事情からです。
 ※なお、StdPeriphを使う場合は、CooCox IDEを使っていたりします。
 ※今のことろ自分はこっちの方が使いやすいです。詳しくは勝手に調べてくださいw(;´∀`)


はい、ダウンロードが完了したら色んな項目が選択出来るようになりました!
ここでは、初期状態のまま[Finish]ボタンで終了させます。
キャプチャ16
なお、その他項目の意味は以下のような感じです。
①Extract all firmware in separate folder はライブラリファイル(ファーム及びドライバー)をworkspace内にダウンロード保存します。
②Add low level diver in the project は、プロジェクトに先ほどダウンロードしたライブラリ(ファーム及びドライバー)をリンクする設定です。
 ※As sources in the application project ... ロジェクト内に必要ファイルをコピーする
 ※As static external libraries ... コピーせず必要ファイルを参照する
③Additional drivers / Additional utilities and third-party utilies は、各種ライブラリーをプロジェクトに取り込みます。
 ※前にサンプルを実行する例を示しましたが、これらに組み込まれているライブラリー(リアルタイムOSやFATファイルシステム等)を自動で個別追加できます。


やっとプログラムを作るうえでのひな形(プロジェクト)が出来上がりました。
左側のProject Explorerに今回作成した test が加わります。
 ※ダウンロードした stm32f746g-disco_hal_lib も追加されています。

test → src → main.c を選んでファイルをオープンしてください。
画面で示したように main(){ ... } 関数内に記述しましょう!
これは、ボードに搭載されているLEDを500ミリ秒周期で点滅させるプログラムコードになります。
キャプチャ17
コードを記載したらメニューから[Project] → [Build All] ビルド(コンパイル)しましょう!
しばらくするとビルドが終了します。
 ※Build Finished ってコンソールに表示されます
キャプチャ18

前のエントリーで示した通り、左側のProject Explorerにある test プロジェクトを左クリックしてメニューを出し、[Debug As] → [1 Ac6 STM33 C/C++ Application]を選ぶとボードに書き込みを行いデバッガーを実行します。
あとは、デバッガーが一旦停止するので[F8]キーを押して実行(スタート)させます。

どうですか?ボード裏面の緑色LEDが点滅しましたか?
IMG_20170106_021558
こんな感じで新規のプロジェクトを作っていきます。
ぜひ、沢山あるサンプルコードを参考にしていろんなものを作ってみて下さい♪(^^)/


Yahoo!ショッピングでSTM32F7を検索

STM32F746G-DISCOでARMマイコン開発。開発環境を整えサンプルをコンパイル実行する!

STM32系の開発環境(IDE)は、主に以下のものがあります。

①EWARM - Embedded Workbench for ARM
https://www.iar.com/jp/iar-embedded-workbench/
※有償。本家、STマイクロ社が標準で使っていると思われるほぼ純正開発環境

②Keil MDK-ARM - Microcontroller Development Kit for ARM
http://www2.yokogawa-digital.com/product/product_detail/mdkarm1_2.html
※有償。様々なマイコンに対応している老舗の開発環境

③True Studio
http://atollic.com/truestudio/
 日本の代理店のページ:http://www.aicp.co.jp/products/atollic.shtml
※有償&無償。eclipseベースの開発環境。日本語対応。

④ColIDE (CooCox)
http://www.coocox.org/
※無償。アジア圏の有志が作っているeclipseベースの開発環境。最近更新が滞っているか?

⑤SW4STM32 - System Workbench for STM32
http://www.openstm32.org/HomePage
※無償。フランスac6と言う所が作っているeclipseベースの開発環境。

この中から何を選べばいいか?
一番良いのは、「①EWARM」です。でも個人で買うにはとてつもなく躊躇する値段です。50万円以上ですw
次点として「②MDK-ARM」も良いのですが、こちらも同じく50万円以上しますw
 ※いずれにせよ、セレブな人は①もしくは②を購入してください。以降見る必要はありません!(^_^;
「③TrueStudio」も日本語に対応していて素晴らしいのですが、STマイクロ社が提供するサンプルプログラムが対応していません。無念。(無償版だど起動時にpro版へのお誘い画面が出て毎回ウザいですが・・・w)
「④ColIDE」ですが、最近まで使っていました。使いやすいのですが、これまたSTマイクロ社が提供するサンプルプログラムが対応していません。また最近更新がされておらず、最新マイコンの対応がされていません。
それで、最後に登場の「⑤SW4STM32」です。なんと無償版で唯一、STマイクロ社が提供するサンプルプログラムに対応しています!素晴らしい。(^^)/



と言う事で、今後は「SW4STM32」を使って開発を進めます。

今すぐにサイトに行って、ユーザー登録(必須)して開発環境をダウンロードしてください。
http://www.openstm32.org/HomePage
 ※サイトにあるLog InからRegisterを押してユーザー登録します
login
 ※折り返し1~2分でメールが戻るので、そこから確定させてからログインしてください

次の画面に示すページまで頑張って移動してくださいw
download
自分の開発環境(Windows OS)に合わせて、32bit or 64bit 実行ファイル(.exe)をダウンロードしてください。
 ※現時点では、v1.8が最新版です。これを使って説明していきます


ダウンロードした実行ファイルを何も考えず、デフォルトのままインストールしてください。
 ※インストール先を変更した場合は、以後その環境に合わせて読み替えて進んでください


無事インストールが完了したら、SW4STM32を実行しましょう!
 ※eclipseベースなので、Java SE Development Kit(8u112)が必要になります。インストールされてない場合はインストールしておいてください。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
 ※これも自分の開発環境(Windows OS)に合わせて、32bit(x86) or 64bit(x64)を正しく選んでインストールしてください


そうするとすぐにeclipseでは、お馴染みの workspace フォルダーを指定するダイアログが表示されます。
ここでは、そのまま .\Ac6\workspace で進めてください。
キャプチャ1

そして、、、、

前にダウンロードしておいた『STM32F7 Cube』からいくつかのファイルをコピーします。
①workspaceフォルダ配下に2階層分以下のフォルダを作ります。
 .\STM32CubeF7\Project
 最終的には、以下の通りになります。
 C:\Ac6\workspace\STM32CubeF7\Project

②.\STM32Cube_FW_F7_V1.5.0\Projects\ にある \STM32746G-Discovery フォルダを丸ごと『①』で作ったフォルダ内にコピーします。

③ .\STM32Cube_FW_F7_V1.5.0 にある次に示す3つのフォルダ内容を、、、
 \Drivers
 \Middlewares
 \Utilities
全て C:\Ac6\workspace\STM32CubeF7 フォルダにコピーします。

【注意!】
このコピーは非常に重要です。間違わない様に指定フォルダーにコピーしてください。
また、いずれもコピー時に READ属性(読み取り専用)が付く場合があるので、読み書きできるようにOFFにしておいてください。


ここで再びSW4STM32に戻ります。
サンプルプログラムをworkspaceに登録していきます。

①初期ファーム(デモ・ソフト)を登録する
メニューから [File] → [Import] を選び "Existing Projects into Workspace" を選択します。
キャプチャ2
その後、"Select root directory"に次に示すフォルダーを選択して[Finish]します。
 C:\Ac6\workspace\STM32CubeF7\Project\STM32746G-Discovery\Demonstration\SW4STM32
キャプチャ3

②SD画像表示デモを登録する
メニューから [File] → [Import] を選び "Existing Projects into Workspace" を選択します。
キャプチャ2
その後、"Select root directory"に次に示すフォルダーを選択して[Finish]します。
 C:\Ac6\workspace\STM32CubeF7\Project\STM32746G-Discovery\Applications\Display\LTDC_PicturesFromSDCard\SW4STM32
キャプチャ4

これで2つのプログラム(プロジェクト)が、workspaceに登録されました。
メニューから[Project] → [Build All] ですべてビルド(コンパイル)しましょう!
しばらくするとビルドが終了します。

次のフォルダ内に実行ファイル .bin または .hex が出来ありがります。
①C:\Ac6\workspace\STM32CubeF7\Project\STM32746G-Discovery\Demonstration\SW4STM32\STM32F7-DISCO\Debug\STM32F7-DISCO.hex
②C:\Ac6\workspace\STM32CubeF7\Project\STM32746G-Discovery\Applications\Display\LTDC_PicturesFromSDCard\SW4STM32\STM32746G-DISCOVERY\Debug\STM32746G-DISCOVERY.bin

この出来上がったファイルを前に説明した『STM32 ST-LINK Utility』を使えばボード上のファームが書き換えできます。


ですが、、、

面倒ですのでSW4STM32から実行する方法を示します。

今回は『②SD画像表示デモを登録する』を実行してみましょう。
①miniSDカードに『STM32F7 Cube』から画像ファイルをコピーしておきます。
 \Media フォルダーを作り、その中に、、、
 .\STM32Cube_FW_F7_V1.5.0\Utilities\Media\Pictures\BMP_480x272 にある3つのファイルをコピーしておきます。
②USBケーブルをSTM32F746G-DISCOボードに接続しておきます。
③左側のプロジェクト(STM32746G-DISCOVERY)を左クリックしてメニューを出し、[Debug As] → [1 Ac6 STM33 C/C++ Application]を選ぶとボードに書き込みを行いデバッガーを実行します。
IMG_20170108_022854
 ※画面キャプチャーが出来なくてカメラで撮りました。見辛くてスミマセン!

④デバッガーが一旦停止するので[F8]キーを押して実行(スタート)させます。
⑤書き込んだプログラムが、SDカードから画像ファイルを読み込んで実行します!
 ※ボード裏面にあるユーザーキー(青いボタン)を押すと次々にファイルを折り返し表示します

DSCN4909
無事実行できましたか?(^^)/

これでサンプルプログラムをコンパイルして実行する方法が分かったと思います。
ソースをいじって色々と遊んでみてください。

次は、最初からプログラムを作る方法をお教えします。お楽しみに・・・

【補足】
自分の環境だと『①初期ファーム(デモ・ソフト)を登録する』で、きちんとコンパイル出来ずに表示される画像がおかしくなりました。実行そのものは正しく行えています。面倒なので原因は追究していませんw


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Raspberry Pi Raspberry PI3 B ELEMENT14パッケージ【RASPBERRYPI3MODELB】
価格:5280円(税込、送料別) (2017/1/8時点)





STM32F746G-DISCOボードでARMマイコン開発。とりあえず試そう♪

開発環境を構築する前に、初期ファーム(デモ・ソフト?)で遊ぶ方法をお教えしておきます。
b02
まず、OTG-USBケーブルを使ってUSBメモリを接続します。
 ※接続先のUSBポートは、2つどちらでも構いません。デモ・ソフトから選べます

またそのUSBメモリには、お試し用の動画や音声ファイルをコピーしておきます。
お試しファイルは、前回お教えした『STM32F7 Cube』内の次のフォルダー内に入っています。
 .\STM32Cube_FW_F7_V1.5.0\Utilities\Media
この中にある次の3つのフォルダーをそのままUSBメモリにコピーします。
 .\Audio
 .\Pictures
 .\Video

b01
これで、audio Player と vodeo player の再生が可能になります。
audio recorder は、接続されたUSBメモリに録音生成されます。

b03
緑色のピンジャックにヘッドホン等を接続すると音声(ステレオ)が出ます。
結構いい音で再生できます。
 ※CIRRUS LOGIC社製のAudio Codec ICが積まれていました
https://www.cirrus.com/jp/products/pro/detail/P1325.html

なお、初期ファーム(デモ・ソフト)では、SDカードは使いません。
多分、権利的に使っていないと推測されます。SD対応を公言するとライセンス使用料が・・・w
 ※詳しくは、こちらの方のブログを・・・
http://nemuisan.blog.bai.ne.jp/?eid=220698

その他、ツールがありますが自分は興味が無いので、説明を省略させて頂きますw
 ※LAN接続のサーバー(vnc server)とかもあるみたいだヨ!

と言う事で、次回につづく・・・




STM32F746G-DISCOボードでARMマイコン開発。ファームを更新しましょう!

00a
まず電源投入して標準ファームのバージョンを確認してみましょう。
 ※購入後は、Version 1.0.0 です
USBポートは、3つありますが、、、そのうちの1つ(Mini Type B)左側にあるUSBポートがデバッグおよび電源供給(*1)用です。
 ※(*1)標準状態。設定で変更できます

PCからUSBケーブルを繋げば、標準で入っているデモ・ファームウェアが動作します。
 ※最初USB ACアダプタから繋いだら起動しませんでした。注意!

無事起動しましたか?
[Sstem Info]を押す(タッチ)とバージョンの確認が出来ます。


では、標準ファームウェアを最新にしてみましょう!

いくつかのファイルをダウンロードしてください。(;´Д`)
 ※ダウンロードには、登録が必要です。

1)STM32 ST-LINK Utility
  http://www.st.com/content/st_com/ja/products/embedded-software/development-tool-software/stsw-link004.html
2)STM32F7 Cube
  http://www.st.com/content/st_com/ja/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-embedded-software/stm32cubef7.html

いずれも、下のほうにある「ソフトウェア入手」ボタンを押してダウンロードします。
その他ドキュメント類(PDF)も目を通しておくと宜しいかと思います。英語ですが・・・w


1)STM32 ST-LINK Utility
これは、STM32マイコンへの書き込みツールです。インストールしてください。

2)STM32F7 Cube
これは、STM32F7系マイコンのサンプルプログラム等が山盛り入っています。
zipファイルなのでを解凍しておいておいてください。

下記のフォルダ内に最新ファーム関連のデータ(ソースプログラム込み!)があります。
 .\STM32Cube_FW_F7_V1.5.0\Projects\STM32746G-Discovery\Demonstration
readme.txt にファームの更新方法が載っていますので目を通しておいてください。

次に順番通りに説明します。

①STM32 ST-LINK Utilityを起動する
②メニュー [External Loader] → [Add External Loader]を選ぶ。
0001
③"N25Q128A_STM32F746G-DISCO" をチェックして、[Validate]を押す。
0002
④メニュー [Target] → [Program & Veryfi...]を選ぶ。
0003
⑤ボードにアクセスされダイアログが開く。File Pathから次のファイルを選ぶ。
 .\STM32Cube_FW_F7_V1.5.0\Projects\STM32746G-Discovery\Demonstration\Binaries\STM32746G-DISCO_Demo_V1.2.0.hex

あとは、[Start]ボタンを押すと最新ファーム(2017/01/07時点でV1.2.0)が書き込まれます。1分少々待ちましょう。しばらくすると再起動されます。

無事最新バージョンになりましたか?

00b
では、次回は開発環境の構築方法を記載する予定です。お楽しみに・・・


【補足】
正しく動作しない場合は、ボードに搭載されているST-LINK/V2のファームウェアをアップデートしてみましょう。
 ①STM32 ST-LINK Utilityを起動する
 ②メニュー [ST-LINK]→[Farmware Update]を選ぶ。
0004
 ③ダイアログが開くので[Device Connect]ボタンを押してから、必要であれば[Yes>>>>]ボタンを押すとアップデートが開始される

0005
ちなみにこのブログを記載時点(2017/01/07)での最新バージョンはこの通り。

以上で~す!

STM32F746G-DISCOボードでARMマイコン開発。購入しましょう!

0000
だいぶ前に売っているのを知っていたのですが、自分でほしい機能が付いていないのでスルーしていました。
欲しい機能とは、自動車の通信規格で使われているCAN通信ポート。
搭載されているマイコンSTM32F746G自体には、CANが贅沢に2ポート用意されているのですが、このSTM32F746G-DISCOボードには、ピンが出ていない為に使えません。残念!(>_<)


ですが、、、前のブログで記載した通りCAN通信モジュールが出ているのを知り、俄然興味が湧いてきましたw

SPI通信ピンは、出ているので例のCAN通信モジュールを組み合わせれば使えるのでは?と思った次第。(;´∀`)

と言う事で、新年早々ポチりしました。(壊すのも想定して2つゲットw)

0000b
思っていたよりも重く重厚感のあるボードです。液晶も値段を考えれば大きく綺麗に表示されるものが載っています。
更にマルチタッチ対応の液晶です。

なおこのボードは、STマイクロ社が搭載マイコンの宣伝・販促を目的として作られているため、普通にパーツを集めただけでばこの販売価格にはなりません。あくまでもサンプル品です。激安です。またいつ市場から無くなるかも分かりません。よって、欲しい人は早めに手に入れましょう!

■秋月電子
http://akizukidenshi.com/catalog/g/gM-09880/
■SWITCH SCIENCE
https://www.switch-science.com/catalog/2372/
■Strawberry Linux
https://strawberry-linux.com/catalog/items?code=32114


【ボード機能】
STM32F746NGH6搭載 フラッシュROM1MB, RAM340KB
オンボードST-LINK/V2搭載
Mbed開発環境に対応
USBはストレージと仮想COMポート両方で動作
4.3inch 480x272カラーTFT液晶 タッチセンサー付き
SAIオーディオコーデック搭載
オーディオのライン入力とライン出力用ジャック搭載
ステレオでスピーカ出力可能
MEMSステレオマイクロフォン搭載
SPDIF出力のRCAコネクタ搭載
ユーザーx1、リセットx1のプッシュSWICTH
128Mbit SPIフラッシュメモリ
128Mbit 外部SDRAM
micro SDコネクタ搭載
USB-OTG HS,FSに対応。Micro-ABタイプコネクタ搭載
EtherNetコネクタ搭載
など

スペックとしては、STマイクロ社のSTM32シリーズのハイスペックバージョン STM32F746NGH6 が搭載されています。
マイコンとは言え、機能が山盛り搭載されています。(↓STマイクロ社のHPからコピペ)
【Circuit Diagram】
en_bd_stm32f746xg_1mb

なお、このSTM32F746G-DISCOボードを購入すれば、ほぼそのままで無償環境を構築して遊べます!(開発出来ます)
 ※手持ちであると思いますが、下記のケーブル等が必要です
 ①USBケーブル(Mini Type B)必須
 ②USB OTGケーブルがあるとUSBメモリとして使えて便利。サンプルファームの実行で必須
 ③microSDスロットもあるので対応SDカードもあると便利(大容量SDは却って不便です)

とりあえず、数回にわたり最新(2017/01/07現在~)の開発環境の構築方法などを記していきたいと思っとります。(*´Д`)
 ※ネットにはいくつか情報を掲載している有難い方々が居るのですが、最新はちょっと違っていました



久しぶりに車載関連(なのかな?)CANモジュールで通信ですよ!

この写真にあるモジュールってわかりますか?
IMG_20161222_150030
車両で主に使われているCAN通信を行えるモジュールです。
これを見つけた時に唖然としました。だって凄い安いんです(驚)!

日本でパーツ単位で調達しようとすると、とんでもない価格になってしまうのに中華パーツでの通販だと数百円・・・。(^_^;)
しかもすぐに使えるようにモジュール化(基板化)されていて物の価値が良く分からなくなってしまうブツですw

で、CAN通信ですが、普通であればCAN通信をサポートしているマイコン(*1)を使うのが普通なのですが、
このモジュールには、様々なマイコンでサポートされているSPI通信からCAN通信を制御できるチップ(MCP2515)が搭載されていて非常に応用範囲が広いと言いますか、汎用性のあるCANモジュールになっています。

ただし、、、ひとつだけの問題を除いて・・・!?

このCANモジュール安いので、使ってやろう!とお取り寄せして色々といじり倒していたのですが、、、Arduinoから制御すると問題なく動作するのです!
が、他のマイコン(STM32F103など)ボードからは、一切制御できませんでした。(>_<)

原因を探ると、今回のCANモジュールが5V専用みたいだったのです。
データシートを見るとMCP2515は、3Vも対応しているのですが、その周辺チップには5Vを供給してやらないとダメみたいで、今回のCANモジュールが5V専用品だったみたいです(汗)。

古い設計?のArduinoは、IO電圧が5Vなので問題なく動作しますが、他のマイコンはIO電圧が3Vが多いので盲点でした・・・。

とは言え、それぞれのチップに適切な電圧を入れてやれば良い訳でして、CANモジュールの回路を調べると非常に簡単に改修できるのが分かりました!
 ※IOレベル変換ICを通せは良いとも言われそうですが、それはそれで面倒ですし・・・今回は割愛しますw

では、3V IOマイコン機器で使う方法を以下に示します!
IMG_20161222_150044
①CANモジュール裏側のパターン(写真の赤線の部分)をカットします。
②カットしたパターン右側のライン部分を軽く削り、そこに配線を追加して5Vを入力します。
③通常PINのVCCには、3Vを入力します。

たったこれだけで、3V IOのマイコン機器から制御できます!(^^)/


これにより非常に安価にCAN通信が出来るようになります。
それこそ今流行りのRaspberry PIからでもCAN制御できる様になります。
 ※Raspberry PIのCAN通信(MCP2515)設定は、この方のサイトが参考になります
 http://qiita.com/mt08/items/535ab4690eecbcf5375d

これを使ってクルマの通信をのぞき見(*2)してみるのも楽しいですよ♪

なお、CANモジュールを改造せずに使えるArduinoを使った通信は、Arduino自身が遅いのであまりお勧めしません。(;´Д`)


【補足(*1)】
マイコンでは、主にUART, I2C, SPI通信がサポートされています。
CAN通信がサポートされているマイコンは少ないです。
マイクロチップ社製のdsPICシリーズの一部やSTマイクロエレクトロニクス社製のSTM32F1xxシリーズなどです。
更にそれだけではCAN通信は出来ません。CANレシーバーなる周辺チップ(MCP2551など)も必要になります。
ちなみに今回紹介したモジュールには、それらも含まれていてNXP社(最近QUALCOMM社に買収されました)のTJA1050が搭載されていました。

【補足(*2)】
最近の車両であれば、OBD2ポートのCAN High(Pin6), CAN Low(Pin14)端子からワイヤーを使って、CANモジュールのJ2 H, Lにそれぞれ2本を接続すればのぞき見出来まする!
ただし、K-LINE対応車両はCAN通信ではないので無理です。諦めてくださいw


  

aitendoの安売り3.2インチTFT-LCDモジュールは、厄介者!? でも使える♪

最近、Android端末のレビューばっかりやっているんで(汗)、もう少し開発らしい!?記事を書こうかと思います。。。(;´∀`)

秋葉原にある電子パーツを売るaitendoって知っていますか?
http://www.aitendo.com/
ふつうは有名どころの秋月電子などに行くと思うのですが、aitendoには秋月にないマニアックなパーツを売っているので寄っていきます。(場所は、秋葉というよりは、広末町の方なので遠いですが・・・)

で、最近大安売りしているのがこちらのTFT-LCD(LCD032-2P)モジュールです!
http://www.aitendo.com/product/13748
0001
 ※正式名称は、基板に印刷されている M032C1289TP かと思います

3.2インチで、タッチセンサおよびSDスロット付き。
通常¥2980+税で売っていましたが、在庫一掃セールで半額の50%オフで売っています。(お店だといくらでも買えますが、通販だと一人1つまでです)
これはイイ!っと思い飛びついて、色々と遊んでいました。

結構前から売っているのですが(なぜかすぐに商品が補充される。いつ無くなるんだ?w)、最初はフル結線してあるモジュールだったのですが、最近のは自分ではんだ付けしないと駄目なものに切り替わっています。

で、つい先日都内に出る用事が出来たので、追加購入してきました。
安く買えたのは良いのですが、ものの見事に配線は自分で、はんだしないとダメなやつでした。


根性で極細の配線をはんだしました。
0002
素人には辛いっす!

そんで操作確認をすると画像データ通信は問題なく動作するのですが、タッチデータの取得(SPI接続)がイマイチ変です。
 ※画像データ通信は、16bitモードにしてSTM32FxにあるFSMCと言う高速通信で行いました

テスターで調べてもきちんと配線されているし、、、

でももう一回、はんだし直すか?とやること数回・・・・

動作しました。どうもタッチ部分の配線は滅茶苦茶シビアみたいです。
これからチャレンジする人は、気をつけてください!


更に・・・

実は、このTFT-LCDモジュールですが、結構購入しています(爆)!
0003
写真は3つですが、、、全部で4つも買っています。(;´∀`)
 ※液晶には、簡単な保護フィルムが張られているので写真写り悪いですw

このモジュール電圧が非常~~~~にシビアである?と思われます。
aitendoのホームページにある商品説明には『動作電源:3~3.3V』と書いてあるのに3V位だと動作しない物があります!
しかも中途半端に動作したりするから厄介です。プログラムが間違っているのではないかと無駄な時間を過ごすことになります・・・(´・ω・`)

まぁ、動作しないのがあったから4つも増えてしまったと言うのがありますが・・・w

と言う事で、、、
 動作しないよぉ~!
 タッチが変だよぉ~
って方は、電圧及び配線にご注意ください。( `ー´)ノ

うまく行けば、、、
0005
こんな感じにきちんと高速で表示できま~す♪
 ※写真はSTM32F4DISCOVERYボード等を使って接続しています
 ※なお、値段相応の液晶です。バックライトにはムラがありますし視野角も狭いですw


PS.
実は同じような仕様のモジュール(ピン位置やLCDコントローターも今回のaitendoのとコンパチ)を安いので中華通販して手に入れたのですが、、、、そっちは全く動作しなく(涙)
0010
やけくそになって2つ目も購入してチャレンジもNG!
という事から、、、aitendoのTFT-LCDモジュールに行き着いた次第ですw
値段が50%オフになったので、中華通販とほぼ変わらない値段になったのでaitendoをお勧めします。