DIY MOREというブランドのSTM32F407VGT6ボード。1,000円切る値段を見て購入。安いのはスペック的にシンプルだからか。基本的にこの手のボードは、SDカードスロット、RTC用バッテリースロット、追加のFlashかRAMが搭載されていたりするけど、このボードはRTC用のクリスタルのみ。SWD(JLINK)とかUARTポートとかも別途出されていたりするけど、それも無し。実にシンプル。LEDが電源とユーザーの2つ、ボタンもリセットとユーザーの2つ。これはありがたい(意外とない場合もある)。ただし普通にArduino化して使おうとするとやや問題がある。
搭載MCUのSTM32F407VGT6は、よくあるVET6とほぼ同じスペックであるが、FLASHが1MBもある(VET6は512kB)。あとはどちらも、CPUクロック168MHz、SRAM、192MB。
ARM Cortex-M4ですね。
ボード裏にURLが書かれていたけどそのサイトには繋がらなかった。DIY MORE名義のモジュールはたまに見かけるけど、中国製なので本物かどうかわからん。ただし最近いろいろおもしろいボードをリリースしているのと造りは悪くないのでちょっと注目しても良いかも。回路図をなんとか入手したんだけど、そこにはCJMCUの名が。厳密にはCJMCUのTaoBaoの公式ストアのURLが書かれていて、そこには接続可能。しかしそこでこのボードの取扱はない。いまいち出自が不明。
作りとか見た目とか特に問題はない。大きさ的にはVCC-GND.COMのボードくらい。小さめ。四隅に穴があるので基板に足を付けられるので実験とかでは使いやすい。しかし、先にのべたように少し問題があるのです。まずもらった回路図を掲載しておく。
気になるのが、Boot0/Boot1のピンの扱い。ノーマル状態でプルアップで、下の写真のようにジャンパピンを挿せばGNDに落ちるようになっている。通常はGNDに落としておくことが多いように思うのでちょっと面倒かも。
一番の問題はUBS周り。USBのD-/D+がそれぞれPA11、PA12と直結されている。保護抵抗もない。実は回路としてはこれはこれで正しいようで、OTGとかホストとしても利用できるということのようです。ただ個人的にはArduinoでシリアルポートとして利用したいのでこれは困る。STM32Duinoとして利用しようとして、プログラムをST-Linkで書き込めるものの、MacにUSB接続しても電源は入るがUSBポートがシリアルポートしては認識されない。とりあえずD+を1.5kBくらいでプルアップしてやれば動くはず。また通常データラインに直列で入ってる22〜27Ωくらいの保護抵抗が無いのが怖いけどヘビーな使い方をしなかればなんとかなるだろということで、抵抗を外付けした見たのが下記写真。
※コメントでプルアップは必要ないという情報をいただいた。CubeMXでUSBのピンのプルアップを有効にしてやれば、外付けは必要ないようです。STM32GENERICコアやSTMコアだとCubeMXで設定を吐き出して自分でvariantを作成すれば使えるかもしれない。libmapleでも設定ファイルを書き換えれば良いのかな?(調べてみたけどいまいち不明)他のボードと同じものとして使うには抵抗つけるのもアリだけどオススメではないという感じかな。開発ボードによってはプルアップがスイッチになっている場合(以前紹介したGD32F103のボードとか)もあります。また F103系だとbootloader側の設定でプルアップできます。自前でボードに合わせてビルドする必要がありますが、意外と簡単です。(参考:bootloaderのビルドの仕方)
とりあえずこれでUBSポートが認識するようになりました。Arduino化してシリアルポートが見えるようになり動作することを確認しました。
UBSケーブルに保護抵抗とプルアップ抵抗を埋め込んだようなものを作ったほうがスマートだったかと思ったけど、まあ当面はこれで。
Arduino(libmapleコア)で抵抗を付けないでUSBポートを認識させる方法もある。スケッチのsetup()の一番最初にPA12のセットアップを
pinMode(PA12, OUTPUT); digitalWrite(PA12, HIGH);
としてやれば良い。パソコン側でポートが認識されるまで時間がかかる場合もあるので環境によっては後にWaitを入れたほうが良いかも。毎回これを入れるのは面倒だけど。Arduino以外でもこのボードを使いたいという場合はこの方法の方が良いだろう。
F407系は取り回して的にはVCC-GNC.COMのボードか通称Black F407が良いと思うんだけど、それよりもこのボードはシンプルで安いので、CubeMXとかSW4STMとか使って開発するなら良いのではないかと思う(たぶんmbedでも使える)。入手時は取扱いショップは少なかったのですが今は人気が出たのか取り扱っているところも増えているようです。
AliExpress.com Product – STM32F4discovery STM32F407VGT6 ARM Cortex-M4 32bit MCU Core Development Board Module With Micro USB Pin
2017-10-10 at 5:11 AM
2.2.30 Universal serial bus on-the-go full-speed (OTG_FS)
The STM32F405xx and STM32F407xx embed an USB OTG full-speed device/host/OTG
peripheral with integrated transceivers. The USB OTG FS peripheral is compliant with the
USB 2.0 specification and with the OTG 1.0 specification. It has software-configurable
endpoint setting and supports suspend/resume. The USB OTG full-speed controller
requires a dedicated 48 MHz clock that is generated by a PLL connected to the HSE
oscillator. The major features are:
• Combined Rx and Tx FIFO size of 320 × 35 bits with dynamic FIFO sizing
• Supports the session request protocol (SRP) and host negotiation protocol (HNP)
• 4 bidirectional endpoints
• 8 host channels with periodic OUT support
• HNP/SNP/IP inside (no need for any external resistor)
• For OTG/Host modes, a power switch is needed in case bus-powered devices are
connected
You do not need the external 1.5k resistor
2017-10-10 at 1:14 PM
Thanks for the comments and useful information.
I want to use USB-Serial port instead of OTG or HOST.
I want to use it with STM32 Duino.
In that case, I think that it is still necessary to pull up ….