STM32 Value Line Discovery(STM32VLDISCOVERY)をいろいろ使う
CQ出版より"世界の定番"との触れ込みで大々的に宣伝されたSTM32ディスカバリ本
が発売されました。これはSTM32F100RBT6が使用されたSTM32ValueLineDiscovery
基板を扱い初心者向けに解説されたものであります。
ちなみにSTM32なんちゃらディスカバリな基板はVL&L&F4と3種類あって、
"STM32ディスカバリ"と書かれてしまうとどれを指すのか非常にややこしい
のですがまぁそれは置いておいて…
以前からSTM32VLDiscovery基板については私も秋月さんからひっそりと販売されて
以来ちょこちょこと触れてきましたがこの基板に関する質問のメールをちらほらと
頂くようになったので改めて単独の記事として紹介したいと思います。
ちなみに便乗ではない!!
●FatFsとTFT-LCD表示のデモプログラム
私のブログでいうところのいつもののことですが、STM32を扱う中でごく基本的な
要素を抑えてあります。私の他の物と同じくChaN氏のLPC2388向けのFatFsの
プログラムをベースにしていますが、移植しやすいよう抽象度を上げています。
・フリーのコンパイラを使ったコマンドラインビルドに対応
・基板上のLED操作
・基板上のSW入力(外部4+1方向SWはオプションで)
・printf系標準関数がリターゲット可能なUART
(サイズ節約のためChaN氏のxprintfを割り振ってます)
・sprintf/malloc系標準関数のサポート
・systickとタイマを利用したAVR-Libcと同じ感覚で使えるDelay関数
・STM32間のポートの移植性を容易にしたFatFsのデバイス依存部
・容易に移植が可能なTFTLCD/OLED表示用ライブラリ
SPI-LCDを使った時のブロック転送はDMA化可能。
ほかのマイコンからSTM32というかARMマイコンを始めた人が真っ先に
引っかかるのはsprintf/printf系標準関数がうまく動作しない点だとおもいます。
今となってはFAQレベルの事なのでここを熟読したり私のUARTへリターゲットしてる
部分のコードを読んでうまいこと動作させられるようにしてください。
上記のプログラムについては各ペリフェラルに対しポートの割り振りは
以下のようにしています。特筆すべき点は、後述するSWD接続のVersaloonを
使いデバッグすることに限定してSWDでは使用しないJTAGポートの一部を
SDカードアクセス用に割り振り、使用可能なI/Oをさらに確保したところでしょうか。
※1:STM32VL-Discoveryデータシートより引用・加筆。
※2:単にポート振っただけでSW入力や8bitLCD等実際使用してない個所あり。
定番のSPI接続のTFT-LCD(128x160)を動かしてみたところ。
ChaN氏のTJPegDecでjpeg画像を表示している最中です。
次回紹介予定の2.5元のi2c液晶モジュールも。素晴らしい掘り出し物です!
●STM32VL Discoveryに仕込まれてるSTLinkをVersaloon化
最早これも定番でしょう。STマイクロの**ディスカバリー系な基板にSTLinkとして
仕込まれているSTM32F103C8T6は各基板ごとに微妙にポートの配置が異なっていて
同じVersaloonのバイナリは使いまわしはできませんが、すでにVersaloon本家
ではSTM32VLDiscovery向けのファームウエアがサポートされています。
さて、肝心のVersaloon化の方法ですが本家ではDFU等のブートローダを
仕込まずに直接Versaloonのバイナリを書きこむようになっていますが、
私はアップデートを容易にするためにいつも通りのDFUを仕込むように
しました。以下に私が行った手順を示します。
DFU仕込まない場合は"1."の書き込み時にいきなり本家の方のSTM32VL
Discovery用のバイナリを書きこんでください
(この場合別途ビルドする必要あり)。
1.DFUを仕込む
こちらにSTM32VLDiscovery用DFUブートローダのバイナリを用意しました。
(Versaloon_DFU_Bootloader_for_STM32VLDiscovery_.zip) 最初に
書いてください。
書きこむ方法はSTLink等のフラッシュを書きこむ手段が別に用意
されてる場合はそちらを使ってください。
Jim氏のTakenApartの記事にSTLinkをつかった手順が示されていますので
そちらの記事をもとにDFUブートローダを書きこんでください。
また、STM32はこの基板が初めてでフラッシュを書きこむ手段を他に
持ってない人は、UARTブートローダーを使う方法を、こちらの改造手順2〜8を
参照して書きこんでください。
UARTブートローダを有効にするためのジャンパの引きまわしは
STM32VLDiscovery基板上では以下の写真の通りとなります。
この基板上では足あげ等の加工も水晶の付け替えも必要なく0.5mmピッチの
足からリードを引き出すだけなのでまぁ楽勝ですね。
DFUを書き込んだ後はもちろんジャンパをはずすのを忘れないで
ください!
2.DFUを起動
さて、DFUを書きこんだらPCに接続するわけですがSTM32VLDiscovery基板
上では下画像のリセットボタンがDFUの起動キーとなります。
リセットボタンを押しながらUSBケーブルでPCと接続してください。
USBデバイスとしてDFUが認識されたら成功です。
そうだね画像使いまわしだね。言い忘れてましたがDFUseをインストールした時に
DFUドライバがインストールされますので忘れずにインストールして
おいてください。
3.Versaloonを書き込み/起動
STM32VLDsicovery用のVersaloonのDFUファイルはこちらに。書き込み方は
ここの"14."を参考にしてください。でも向こうにあるDFUファイルは別物だから
使っちゃだめです!
書き終わったら基板を一度PCと切り離し、再度接続します。この時に
Vesaloonとして認識されたら成功です。VersaloonはLibUSBが使用されて
いますが、LibUSBのドライバはZadigでインストールした方が確実です。
20120105追:
以前はSWDのジャンパはあべこべになっていましたが、現在では
差し替え無しでそのまま使用できます。
4.Versaloon化したSTM32VLDiscovery基板上でターゲットのSTM32F100RBT6を
デバッグ冒頭で述べたプログラムをビルド・書きこみを行うわけですが、
用意するものはSTM32マイコンをビルドする環境のほかにVersaloonに対応
した特別なOpenOCDが必要です。
おもな手順はこちらとこちらですでに紹介しています。
てわけで丸投げしまくりのやっけつ手順になってしまいましたが簡単に改造
可能なので(自己責任の上で)お勧めします。
しかも今のVersaloonはUSB-CDCが同時に使用できる複合デバイス構成になって
いるため、これを利用してこの基板上でUARTの通信手段を完結させることが
できます♥
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (80)
- STM8 (2)
- Wirelessなアレ (16)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (7)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.