ページへ戻る

− Links

 印刷 

BTC097 Digitus STM32F3 :: Besttechnology

knowledge:BTC097 Digitus STM32F3

ページ内コンテンツ
    • Digitusシリーズの特徴
    • 概要
    • 基本仕様
      • 外観
      • 回路図
      • 配置・外形
      • コネクタ・端子・スイッチ等
        • CN1, CN2
        • CN3
        • CN4
        • LED1
        • PB1
        • USER RAND
    • 各機能の詳細
      • 電源
      • ブートローダ
      • USB
      • プッシュボタン(PB1)
      • Boot mode
    • 開発環境
      • GCC Developer Lite
        • ターゲットファイル
        • SIMPLE TERMとブートローダ
        • FLASH WRITER
          • FLASH WRITERとOpenOCD
    • JTAG I/F
    • STM32F3用ライブラリ
    • サンプルプログラム
    • その他

ショップページへ[1]

Digitusシリーズの特徴 anchor.png[2]

  • 小指サイズの汎用マイコンボードシリーズ
  • USBコネクタを装備しバスパワー駆動サポート
  • ブレッドボード等で扱いやすい40ピンDIPパッケージサイズ
  • 専用ブートローダを搭載し自作したプログラムをUSBを介して転送
  • チップに搭載された機能をできる限り外部端子へ接続
Page Top

概要 anchor.png[3]

Digitus STM32F3はSTMicroelectronics社[4]製STM32F373(cortex-M4Fコア)を搭載し、USBケーブルを接続すればバスパワーで駆動でき、PCに割り当てられたCOMポートを介してプログラムの書き換えやプログラムのデバッグができます。また、外部端子にはマイコンのほぼ全ての端子が割り当てられており、ブレッドボードでのテストなどを簡便に行うことができます。

Page Top

基本仕様 anchor.png[5]

商品番号BTC097
PCBリビジョンE108 (2層)
CPUST STM32F373CC[6]
メモリフラッシュROM: 256kbyte
SRAM: 32kbyte
クロック外部オシレータ:8MHz (内部はPLLによりプログラマブル)
通信機能USB
動作温度0~+50℃
動作電圧USBバスパワー:DC5V
ボード内:DC3.3V
消費電流35mA (MAX)
寸法約19×52mm
コネクタ等1x20ピンランド×2, microUSB×1, プッシュボタン×1, 電源モニタLED
付属品
環境配慮RoHS準拠, 鉛フリー半田

Page Top

外観 anchor.png[7]

Page Top

配置・外形 anchor.png[12]

Page Top

コネクタ・端子・スイッチ等 anchor.png[14]

Page Top
CN1, CN2 anchor.png[15]
  • 2.54mmピッチ1列 20ピン×2
  • ランド穴径 0.9mm
  • *の記述がある端子は基板内で使用されていたり、パーツの未実装により配線が完結していない事を意味する。詳細は()中のコメントと回路図を参照の事。
    CN1CN2
    No.端子名称No.端子名称
    1GND40PB9
    23.3V39PB8
    3*PC13 (R10でプルアップ)38*BOOT0 (R5でプルダウン)
    4PC1437PB7
    5PC1536PB6
    6*NRST (R1でプルアップ・PB1に接続)35PB5
    7PA034PB4
    8PA133PB3
    9PA232PA15
    10PA331PA14
    11PA430PF7
    12PA529PF6
    13PA628PA13
    14PB027*PA12 (R6を介しCN3に接続)
    15PB126*PA11 (R7を介しCN3に接続)
    16PB225PA10
    17PE824PA9
    18PE923PA8
    19*VREFSD+
    (L2/C7を介し3.3Vに接続,
    70kHz程度のカットオフ周波数)
    22PD8
    20PB1421PB15
Page Top
CN3 anchor.png[16]
  • USB-MicroBレセプタクル
  • 直列抵抗を介してSTM32F373のPA11とPA12へ接続
  • USBバスパワーをボード上の電源として供給
  • NRSTとPC13端子の論理積でUSB DP端子に設けられたプルアップ抵抗のON/OFFを制御。
Page Top
CN4 anchor.png[17]
  • 1.27mmピッチ7ピンランド
  • JTAG/SWD用
    No.端子名称
    1TCK/PA14
    2GND
    3TMS/PA13
    43.3V
    5TDO/PB3
    6NRST
    7TDI/PA15
Page Top
LED1 anchor.png[18]
  • LED
  • 色:赤
  • 電源の印加で点灯
Page Top
PB1 anchor.png[19]
  • プッシュボタン
  • 押下でマイコンのNRST端子をGNDへ短絡し、USB DP端子のプルアップがOFF
Page Top
USER RAND anchor.png[20]
  • 基板端に設けられたフリー(緑色の囲み)なランド
  • GNDと3.3Vとある2つのランド(赤色の囲み)は電源に接続済
E108_USERLAND.png
Page Top

各機能の詳細 anchor.png[21]

Page Top

電源 anchor.png[22]

    • USB BUS Power
      CN3にUSBケーブルを接続するとPCから約5Vの電源(バスパワー)が供給され、ボード内のLDOにて3.3Vが作られます。
      CN1-2(3.3V)端子とCN1-1(GND)端子間から外部機器へ3.3Vが供給できます。
      buspower.png
    • Self Power
      CN1-2(3.3V)端子とCN1-1(GND)間に安定した3.3Vの外部電源を接続します。
      CN1-1,2に外部電源(3.3V)を供給した状態でUSBケーブル(5V)を接続すると、ボード内で3.3Vの電源が並列に供給される状態となります。ボード内には電流制限付き整流回路が備わっているため、外部電源の電流がUSBポートを介してPCへ逆流することはありません。しかし外部電源の電圧がボード内のLDOで生成される3.3Vより低くなると、その電位差をLDOがまかなおうとします。LDOが供給する電流が500mAを超える場合は、LDOによるボード外部への3.3V供給をあきらめ、本ボードへの電源供給ラインに整流回路を設けます。
      selfpower.png
Page Top

ブートローダ anchor.png[23]

出荷時にはフラッシュROMに弊社オリジナルのブートローダが書き込まれています。
PCとUSBケーブルで接続すると本プログラムが起動し、USBを仮想シリアルポートとして初期化します。専用のデバイスドライバを適用する事でPCからはCOMポートとして見え、シリアルターミナルプログラム等を使って簡単なコミュニケーションができます。
ブートローダの詳細はこちら[24]

Page Top

USB anchor.png[25]

CN3にはUSBケーブルを接続します。主に電源供給と、ブートローダを介したプログラムの転送やデバッグに使用します。
仮想シリアルポートとして使用する場合のWindows用のデバイスドライバはGCC Developer Liteと一緒にインストールされますが、ST社から提供されるデバイスドライバ[26]と同一となります。Linux等の場合はCDCデバイスとして認識されます。
なお、NRST及びPC13端子と連動してUSBのDP端子に設けられたプルアップ抵抗を制御する回路が設けられているため、PC13端子をユーザプログラム等で不用意に操作するとUSBの活性状態に影響します。

Page Top

プッシュボタン(PB1) anchor.png[27]

PB1を押下するとNRST端子がGNDに接続され、放すとブートローダはハードリセットを検出してコマンドモードに遷移します。
また、NRST端子と連動してUSBのDP端子に設けられたプルアップ抵抗を制御しています。ハードリセット以外のリセット要因(ソフトウェア・WDT等)によってもNRST端子から短時間(数十ms以下)ですがLOWが出力され、その間USBが非活性状態になります。

Page Top

Boot mode anchor.png[28]

STM32F373のBoot modeはBOOT0端子で決定されます。BOOT0端子はGNDへプルダウンされているため、電源投入直後はフラッシュROMに書き込まれているブートローダが実行されます。
BOOT端子を3.3Vに接続して電源を投入するとシステムメモリから起動し、STが予め搭載させているブートローダ(弊社のブートローダとは異なる)が実行されます。その場合はST[4]から提供されるDfuSe[29]といったツールを使用してラッシュROMのプログラムを書き換える事が可能です。

Page Top

開発環境 anchor.png[30]

紹介する開発環境に含まれるツールの連携を次図に示します。おおまかには2つのパスをサポートします。

Page Top

GCC Developer Lite anchor.png[32]

GCC Developer Liteの詳細についてはこちら[33]で紹介しています。「基本パック」と「ARMパック」をダウンロード[34]してインストールしてください。なおARMパックインストールの際に表示されるコンポーネントの選択画面では「STM32F3シリーズでのみ使用」を選択してください。

ArmPacSTMF3.png

STM32F3で使用される主要なコンポーネントを簡単に示します。

  • GCC Developer Lite[35]

    ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。

  • FLASH WRITER[37]

    ターゲットへコンパイルされたプログラムをOpenOCDやCOMポートを介して転送する。
    USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。

  • SIMPLE TERM[39]

    汎用シリアルターミナル。簡易的なTELNETクライアントとしても機能する。
    USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
    なお、Digitusシリーズで提供される仮想COMポートはプログラムの実行状況によって動的に活性/非活性になるが、SIMPLE TERMはそれと連動して自動的にポートのオープン/クローズ処理を行ってくれるのが一般のシリアルターミナルと異なる点。

  • ARMGCC

    ARMコア向けGCC(GNU Compiler Collection)。GCC Developer Liteより適宜呼び出され、ユーザソースのコンパイル・ライブラリ等とリンク・ファイルフォーマット変換等を行う。

  • デバイスドライバ

    USBを使用した仮想シリアルポートドライバを提供。ソースはUSB CDCエミュレーションドライバ[26]

  • OpenOCD[41]

    TINY JTAG-ICE2の制御を行うデーモン。JTAGを使用する場合は全て本デーモンを仲介する。

  • ターゲットファイル

    STM32F3の内蔵ペリフェラルを定義したヘッダファイルやUARTを簡便に使うためのAPI、USBをシリアルポートとして使用するためのAPI、スタートアップルーチン、それらをコンパイルしてアーカイブしたライブラリファイル、GDBにてデバッグする際に使用する初期化ファイル、目的別に異なるメモリマップを定義したリンカスクリプトファイルを含む。

Page Top
ターゲットファイル anchor.png[42]

GCC Developer LiteではDigitus STM32F3用の設定を複数備えています。
例えば、ARMコアの学習・組み込み向けCコンパイラの習熟・内蔵ペリフェラルの機能を試すといった段階ではJTAGを使ってRAM上でデバッグし、慣れてきたらブートローダを経由してprintfデバッグ、最終的に製品等としてリリースして完成させる時はフラッシュROMに、といった段階を踏む場合でもGCC Developer Liteのコンパイルオプションの設定リストから選択し直すだけで設定が完了します。

GDL_CompileOption_TargetList.png

以下に設定リストの一覧とその設定における主な機能を紹介します。

  • STM32F373 (Bootloader)

    Digitus STM32F3のブートローダ[24]を使用してフラッシュROM上へ転送して実行するファイルを生成。

    生成ファイルの拡張子.bin (バイナリ)
    スタートアドレス0x08004000 (フラッシュROM)
    転送ツールSIMPLE TERM[39]
    ブートローダ必要
  • STM32F373 (RAM)

    OpenOCDを使用してSRAM上へ転送して実行するファイルを生成。

    生成ファイルの拡張子.bin (バイナリ)
    スタートアドレス0x20000000 (RAM)
    転送ツールFLASH WRITER[37] & OpenOCD[41]
    ブートローダ不要
  • STM32F373 (Flash)

    OpenOCDを使用してフラッシュROMへ転送して実行するファイルを生成。

    生成ファイルの拡張子.bin (バイナリ)
    スタートアドレス0x08000000 (フラッシュROM)
    転送ツールFLASH WRITER[37] & OpenOCD[41]
    ブートローダ不要
Page Top
SIMPLE TERMとブートローダ anchor.png[43]

ブートローダを使用する事ではJTAGやその他の特殊なI/Fを使用せずとも、USBケーブルで接続した環境だけでプログラムの書き換えが出来ます。
ブートローダを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムを転送したとしても正常に動作しません。

  • STM32F373 (Bootloader)

USB接続した際に仮想シリアルポートとして認識させるためのPC用デバイスドライバは、GCC Developer Lite[33]をインストールした際に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
STM32_BL_COM.png

先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)の起動を促されます。「OK」を押してSIMPLE TERMを起動すると、以下の条件でSIMPLE TERMが起動します。

  • 既にSIMPLE TERMが実行中であれば2重に起動しない。
  • コンパイル済み.binファイルの情報が渡る(ステータスバーにて確認可)。
  • ユーザプログラムを転送する際の手順を記述したスクリプトファイルが使用できる様になる。
sterm_script.png

DIgitus STM32F3のブートローダがコマンドモードであれば、「スクリプト実行[STERM_STM32F3]」をクリックするだけでプログラムの書き換えにかかる処理(転送ファイルの選択・フラッシュROMの消去・転送)が全て自動的に行われます。

[添付]
Page Top
FLASH WRITER anchor.png[44]

様々なターゲットに対応した転送ツールです。 FLASH WRITERを使用する設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムをFLASH WRITERで転送しても動作しません。

  • STM32F373 (RAM)

    OpenOCD[41]を経由してSRAMに転送実行。

  • STM32F373 (Flash)

    OpenOCD[41]を経由してフラッシュROMに転送実行。

Page Top
FLASH WRITERとOpenOCD anchor.png[45]

TINY JTAG-ICE2とCN4を接続し、OpenOCD[41]を仲介してフラッシュROMないしRAMの書き換えを行います。
OpenOCD[41]が起動している状態でFLASH WRITERのScanをクリックし、PORTのリストに現れる「OpenOCD (TELNET)」を選択します。

STM32F3_OCD_TELNET.png

Write Script Fileはデバイス及び書き込むメモリの種類に応じて複数のスクリプトファイルが存在します。ファイル名の先頭にstm32f3xx_が付加されているものがDigitus STM32F3用のスクリプトファイルとなります。
これらスクリプトファイルはFLASH WRITERを自動起動させる設定がなされたコンパイラオプションにて予め指定されるので、通常はユーザが選択する必要はありません。

  • stm32f3xx_bin_flash.script

    .binファイルをフラッシュROMの先頭から書き込んだ後、デバイスをを再起動

  • stm32f3xx_bin_ram.script

    .binファイルをRAMの先頭から書き込んだ後、SRAMの先頭アドレスから実行

Page Top

JTAG I/F anchor.png[46]

JTAG ICEでホストと接続する事でCPUコアの制御やメモリの操作を行う事ができます。
20ピンタイプのARM系JTAG ICEの場合は、以下の様に接続します。

STM32F3_JTAG_CONNECTION.png
Page Top

STM32F3用ライブラリ anchor.png[47]

GCC Developer Lite[33]ではターゲットファイルと称して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 (ブートローダ[24]を介して実行させるリンカスクリプト)

  • 内蔵ペリフェラルのレジスタ名定義ヘッダファイル

    内蔵ペリフェラルが持つレジスタは、決められたメモリ上のアドレスに配置されています。それらレジスタをアドレスではなくレジスタ毎に決められた名称を使い、変数のようにアクセスするためのマクロ定義が記述されています。また、ST社から提供される標準ライブラリのヘッダファイルのインクルードも含まれます。
    stm32f37x.h (レジスタのマクロ定義とビット情報)

  • UART API

    複数のシリアルポートが備わっており制御方法も多種多様なため、それに応じてライブラリとして個別に提供しています。
    us.h (APIのプロトタイプ宣言を含むヘッダファイル)
    usart1_*.c (USART1ポートを割り込みで使用するAPIのソース群)
    usart2_*.c (USART2ポートを割り込みで使用するAPIのソース群)
    usart3_*.c (USART3ポートを割り込みで使用するAPIのソース群)
    usb_*.c (USBポートでシリアルエミュレーションを行うAPI群)
    .\libusb (USBポートでシリアルエミュレーションを行うドライバソース)

  • PIO初期化API

    煩雑な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で作成されるライブラリファイル)

Page Top

サンプルプログラム anchor.png[48]

Page Top

その他 anchor.png[49]


Last-modified: 2022-02-13 (日) 11:59:07 (JST) (796d) by takaboo