Digitus STM32F3はSTMicroelectronics社製STM32F373(cortex-M4Fコア)を搭載し、USBケーブルを接続すればバスパワーで駆動でき、PCに割り当てられたCOMポートを介してプログラムの書き換えやプログラムのデバッグができます。また、外部端子にはマイコンのほぼ全ての端子が割り当てられており、ブレッドボードでのテストなどを簡便に行うことができます。
商品番号 | BTC097 |
PCBリビジョン | E108 (2層) |
CPU | ST STM32F373CC |
メモリ | フラッシュROM: 256kbyte SRAM: 32kbyte |
クロック | 外部オシレータ:8MHz (内部はPLLによりプログラマブル) |
通信機能 | USB |
動作温度 | 0~+50℃ |
動作電圧 | USBバスパワー:DC5V ボード内:DC3.3V |
消費電流 | 35mA (MAX) |
寸法 | 約19×52mm |
コネクタ等 | 1x20ピンランド×2, microUSB×1, プッシュボタン×1, 電源モニタLED |
付属品 | |
環境配慮 | RoHS準拠, 鉛フリー半田 |
top |
3D pdf |
CN1 | CN2 | ||
No. | 端子名称 | No. | 端子名称 |
1 | GND | 40 | PB9 |
2 | 3.3V | 39 | PB8 |
3 | *PC13 (R10でプルアップ) | 38 | *BOOT0 (R5でプルダウン) |
4 | PC14 | 37 | PB7 |
5 | PC15 | 36 | PB6 |
6 | *NRST (R1でプルアップ・PB1に接続) | 35 | PB5 |
7 | PA0 | 34 | PB4 |
8 | PA1 | 33 | PB3 |
9 | PA2 | 32 | PA15 |
10 | PA3 | 31 | PA14 |
11 | PA4 | 30 | PF7 |
12 | PA5 | 29 | PF6 |
13 | PA6 | 28 | PA13 |
14 | PB0 | 27 | *PA12 (R6を介しCN3に接続) |
15 | PB1 | 26 | *PA11 (R7を介しCN3に接続) |
16 | PB2 | 25 | PA10 |
17 | PE8 | 24 | PA9 |
18 | PE9 | 23 | PA8 |
19 | *VREFSD+ (L2/C7を介し3.3Vに接続, 70kHz程度のカットオフ周波数) | 22 | PD8 |
20 | PB14 | 21 | PB15 |
出荷時にはフラッシュROMに弊社オリジナルのブートローダが書き込まれています。
PCとUSBケーブルで接続すると本プログラムが起動し、USBを仮想シリアルポートとして初期化します。専用のデバイスドライバを適用する事でPCからはCOMポートとして見え、シリアルターミナルプログラム等を使って簡単なコミュニケーションができます。
ブートローダの詳細はこちら。
CN3にはUSBケーブルを接続します。主に電源供給と、ブートローダを介したプログラムの転送やデバッグに使用します。
仮想シリアルポートとして使用する場合のWindows用のデバイスドライバはGCC Developer Liteと一緒にインストールされますが、ST社から提供されるデバイスドライバと同一となります。Linux等の場合はCDCデバイスとして認識されます。
なお、NRST及びPC13端子と連動してUSBのDP端子に設けられたプルアップ抵抗を制御する回路が設けられているため、PC13端子をユーザプログラム等で不用意に操作するとUSBの活性状態に影響します。
PB1を押下するとNRST端子がGNDに接続され、放すとブートローダはハードリセットを検出してコマンドモードに遷移します。
また、NRST端子と連動してUSBのDP端子に設けられたプルアップ抵抗を制御しています。ハードリセット以外のリセット要因(ソフトウェア・WDT等)によってもNRST端子から短時間(数十ms以下)ですがLOWが出力され、その間USBが非活性状態になります。
STM32F373のBoot modeはBOOT0端子で決定されます。BOOT0端子はGNDへプルダウンされているため、電源投入直後はフラッシュROMに書き込まれているブートローダが実行されます。
BOOT端子を3.3Vに接続して電源を投入するとシステムメモリから起動し、STが予め搭載させているブートローダ(弊社のブートローダとは異なる)が実行されます。その場合はSTから提供されるDfuSeといったツールを使用してラッシュROMのプログラムを書き換える事が可能です。
GCC Developer Liteの詳細についてはこちらで紹介しています。「基本パック」と「ARMパック」をダウンロードしてインストールしてください。なおARMパックインストールの際に表示されるコンポーネントの選択画面では「STM32F3シリーズでのみ使用」を選択してください。
STM32F3で使用される主要なコンポーネントを簡単に示します。
ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。
ターゲットへコンパイルされたプログラムをOpenOCDやCOMポートを介して転送する。
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
汎用シリアルターミナル。簡易的なTELNETクライアントとしても機能する。
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
なお、Digitusシリーズで提供される仮想COMポートはプログラムの実行状況によって動的に活性/非活性になるが、SIMPLE TERMはそれと連動して自動的にポートのオープン/クローズ処理を行ってくれるのが一般のシリアルターミナルと異なる点。
ARMコア向けGCC(GNU Compiler Collection)。GCC Developer Liteより適宜呼び出され、ユーザソースのコンパイル・ライブラリ等とリンク・ファイルフォーマット変換等を行う。
USBを使用した仮想シリアルポートドライバを提供。ソースはUSB CDCエミュレーションドライバ。
TINY JTAG-ICE2の制御を行うデーモン。JTAGを使用する場合は全て本デーモンを仲介する。
STM32F3の内蔵ペリフェラルを定義したヘッダファイルやUARTを簡便に使うためのAPI、USBをシリアルポートとして使用するためのAPI、スタートアップルーチン、それらをコンパイルしてアーカイブしたライブラリファイル、GDBにてデバッグする際に使用する初期化ファイル、目的別に異なるメモリマップを定義したリンカスクリプトファイルを含む。
GCC Developer LiteではDigitus STM32F3用の設定を複数備えています。
例えば、ARMコアの学習・組み込み向けCコンパイラの習熟・内蔵ペリフェラルの機能を試すといった段階ではJTAGを使ってRAM上でデバッグし、慣れてきたらブートローダを経由してprintfデバッグ、最終的に製品等としてリリースして完成させる時はフラッシュROMに、といった段階を踏む場合でもGCC Developer Liteのコンパイルオプションの設定リストから選択し直すだけで設定が完了します。
以下に設定リストの一覧とその設定における主な機能を紹介します。
Digitus STM32F3のブートローダを使用してフラッシュROM上へ転送して実行するファイルを生成。
生成ファイルの拡張子 | .bin (バイナリ) |
スタートアドレス | 0x08004000 (フラッシュROM) |
転送ツール | SIMPLE TERM |
ブートローダ | 必要 |
OpenOCDを使用してSRAM上へ転送して実行するファイルを生成。
生成ファイルの拡張子 | .bin (バイナリ) |
スタートアドレス | 0x20000000 (RAM) |
転送ツール | FLASH WRITER & OpenOCD |
ブートローダ | 不要 |
OpenOCDを使用してフラッシュROMへ転送して実行するファイルを生成。
生成ファイルの拡張子 | .bin (バイナリ) |
スタートアドレス | 0x08000000 (フラッシュROM) |
転送ツール | FLASH WRITER & OpenOCD |
ブートローダ | 不要 |
ブートローダを使用する事ではJTAGやその他の特殊なI/Fを使用せずとも、USBケーブルで接続した環境だけでプログラムの書き換えが出来ます。
ブートローダを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムを転送したとしても正常に動作しません。
USB接続した際に仮想シリアルポートとして認識させるためのPC用デバイスドライバは、GCC Developer Liteをインストールした際にWindowsのシステムフォルダにコピーされます。USBケーブルでマイコンボードとPCを接続するとデバイスドライバを要求されますが、自動検索させる事で自動的にインストールが行われます。
デバイスドライバのインストール後、新しいCOMポートがWindowsのデバイスとして追加され、SIMPLE TERMから該当するCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「STMicroelectronics Virtual COM Port (COMxxx)」が表示されたポートを選択)しオープンするとブートローダの各種コマンドが使用可能となります。SIMPLE TERMのポートの設定は以下の通りです。
Baudrate:ここでは意味を持たないので何でも構わない Databits:8 Stopbits:1 Parity:Non Flow Control:Non Protocol:Xmodem
先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)の起動を促されます。「OK」を押してSIMPLE TERMを起動すると、以下の条件でSIMPLE TERMが起動します。
DIgitus STM32F3のブートローダがコマンドモードであれば、「スクリプト実行[STERM_STM32F3]」をクリックするだけでプログラムの書き換えにかかる処理(転送ファイルの選択・フラッシュROMの消去・転送)が全て自動的に行われます。
様々なターゲットに対応した転送ツールです。 FLASH WRITERを使用する設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムをFLASH WRITERで転送しても動作しません。
TINY JTAG-ICE2とCN4を接続し、OpenOCDを仲介してフラッシュROMないしRAMの書き換えを行います。
OpenOCDが起動している状態でFLASH WRITERのScanをクリックし、PORTのリストに現れる「OpenOCD (TELNET)」を選択します。
Write Script Fileはデバイス及び書き込むメモリの種類に応じて複数のスクリプトファイルが存在します。ファイル名の先頭にstm32f3xx_が付加されているものがDigitus STM32F3用のスクリプトファイルとなります。
これらスクリプトファイルはFLASH WRITERを自動起動させる設定がなされたコンパイラオプションにて予め指定されるので、通常はユーザが選択する必要はありません。
.binファイルをフラッシュROMの先頭から書き込んだ後、デバイスをを再起動
.binファイルをRAMの先頭から書き込んだ後、SRAMの先頭アドレスから実行
GCC Developer Liteではターゲットファイルと称してDigitus STM32F3用の様々なファイルが提供されています。
GCC Developer Liteを標準的な環境のPCへインストールすると、「C:\Program Files\BestTech\GCC Developer Lite\TARGET\STM32F3」フォルダに必要なファイルがコピーされますので、必要に応じて本フォルダを参照できますしユーザがソースを修正しライブラリを再構築する事も可能です。
C言語で作成するユーザプログラムを実行させるために、C言語で記述された必要最低限の初期化処理プログラムです。
exceptions.c (スタートアップルーチン本体のソースファイル)
lowlevel.c (低レベルな初期化処理ルーチンのソースファイル)
実行条件に応じたメモリの割り当てを記述したファイルです。ビルド時にリンカが参照しコードの最終的な配置が決定されます。
stm32f373_ram.x (SRAM上で実行させるリンカスクリプト)
stm32f373_rom.x (フラッシュROM上で実行させるリンカスクリプト)
stm32f373_rom_term.x (ブートローダを介して実行させるリンカスクリプト)
内蔵ペリフェラルが持つレジスタは、決められたメモリ上のアドレスに配置されています。それらレジスタをアドレスではなくレジスタ毎に決められた名称を使い、変数のようにアクセスするためのマクロ定義が記述されています。また、ST社から提供される標準ライブラリのヘッダファイルのインクルードも含まれます。
stm32f37x.h (レジスタのマクロ定義とビット情報)
複数のシリアルポートが備わっており制御方法も多種多様なため、それに応じてライブラリとして個別に提供しています。
us.h (APIのプロトタイプ宣言を含むヘッダファイル)
usart1_*.c (USART1ポートを割り込みで使用するAPIのソース群)
usart2_*.c (USART2ポートを割り込みで使用するAPIのソース群)
usart3_*.c (USART3ポートを割り込みで使用するAPIのソース群)
usb_*.c (USBポートでシリアルエミュレーションを行うAPI群)
.\libusb (USBポートでシリアルエミュレーションを行うドライバソース)
煩雑なPIOの初期化を簡便に行うためのAPIです。
piocfg.h (APIのプロトタイプ宣言を含むヘッダファイル)
piocfg.c (APIのソースファイル)
上記各APIをコンパイルし、1つのライブラリファイルにアーカイブして提供します。
makelib.bat (APIをコンパイルし、アーカイブするバッチ)
libstm32f37x_basic.a (makelib.batで作成されるライブラリファイル)
ST社から提供されるライブラリをアーカイブして提供します。
./libstd/makelib.bat (APIをコンパイルし、アーカイブするバッチ)
./libstd/libstm32f37x_std.a (makelib.batで作成されるライブラリファイル)