2015年7月1日水曜日

EFM32 Giant Geckoを触ってみた

 ちょっと触らせて頂く機会があったのでいろいろやってみました。

青マーカーが付いているように見えますが、保護フィルムです。剥がしません。

下側のmicroUSBポートはUSBHost/Device用で、左下の電源選択のスライドスイッチをDBG、左側のminiUSBポートに刺すことで電源が入ります。

初期のファームはタッチセンサのデモ。触れると数値が変化します。

環境構築から。
いきなりオンラインIDEでソース書いてバイナリ作ってD&D、かと思いきや初期状態ではできないのでファームウェアをバージョンアップする必要がありました。
そのために純正IDEの「Simplicity Studio」をダウンロードします。アップデータのダウンロードやらでそこそこ時間かかりました。詳細は↓
https://developer.mbed.org/teams/SiliconLabs/wiki/Silicon-Labs-Firmware

で、mbed化もできたところで色々試してみました。
まずはLチカ。これは難なく作成できました。ついでに拙作の「mbed AutoTransfer」も試しましたが、うまく動いてくれました。
ちなみにLEDですがGPIOのPE2,PE3に当たっています。ヘッダにも出ている上、UART1とも被っているので要注意です。というか他のポートでもよかったのでは。。。


次にLCD。サンプル見ればーと思いきや、

この通り書いても動かないんですが(´・ω・`)
他のサンプルソース見て対処しますた。

その他光センサも乗っかってたので、これの値をADで読むのかなーと思いきや普通のポートだったりしたので、それをGPIOで読んだり。
テスタの値は光センサの出力電圧

光センサの電圧が高くなったので、読んでるGPIOもH判定、それに合わせて液晶下の右側LEDを点灯させてます

LCセンサはうまく使えなかったのでスルーしたり。。。

PCとシリアル通信させてみたり。これが一番悩まされました。
mbedとして見えてるドライブの中のReadMeの中身が↓
Silicon Labs J-Link MSD volume.

Copying a binary file here will flash it to the MCU.
Supported binary file formats:
 - Intel Hex (.hex)
 - Motorola s-records (.mot)
 - Binary (.bin/.par/.crd)

Known limitations:
 - Virtual COM port speed is currently fixed at 115200 bps
 - Using other kit functionality such as energy profiling or debugger while flashing is not supported.
   Workaround: Pause any energy profiling and disconnect any connected debug sessions before flashing.
ほうほう、hexだけでなく、mot、bin、までとはなんでもござれっすなあと思った次の段。
ふむ、デフォルトのCOMポートは1115200bpsで固定されてるのね、と。

そしてシリアル通信テストのmbedソフトをボーレート指定せず書いてみるも、PCに通信が来ない。
もしかしてと思い、mbedソフトのボーレートを115200bpsに指定してみるも何も表示されない。
丁度ヘッダにもピンが出ているのでそこをUSB-UARTで覗いてみれば表示される。
ジャンパ飛ばさないといけないのかと色々調べてみると・・・

https://developer.mbed.org/teams/SiliconLabs/wiki/Using-stdio-on-Silicon-Labs-platforms

Board Controller Enable Signal

えぇー・・・('A`;)
ヘッダが出ているPE0とPE1とJ-LinkのUARTが共有になっているので、
J-Linkのチップ保護のためのEnable信号(PF7)・・・ということかなあ。。。
PCと通信させるときはPF7をHにしてからにしましょう。
あとmbedのボーレート指定も115200bpsで。これ以外はmbedチップが通せんぼします。


LCDのパーツがいろいろあったので表示させてみたり。


最後に、mbedチップのバージョンアップ来ませんかね。。。バイナリ転送するたびにシリアル再接続しないといけないし、ボーレートも固定だし、正直、易しくないボードだなあと思いました。
ただボタン電池1コで駆動するのは、小さい機器への組み込みに魅力的ですね。

Simplicity Studioを使ってサンプルを書き込んでみたりしましたが、LPCXpresssoと同じくmsys-1.0問題(勝手に呼んでる)が発生しました。
msys\1.0\bin\make.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
↑のメッセージがLPCXpressoでも見たので同じように改善版をダウンロード↓
http://www.support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull
置き換えすることで解消しました。

最後になんだかんだ試したソースを置いておきます。
参考になれば幸いです。
https://developer.mbed.org/users/nameless129/code/blinky_EFM32_Giant/


 参考資料など

EFM32GG-STK3700 Giant Gecko スターター・キット・ユーザ・ガイド
http://www.silabs.com/Support%20Documents/TechnicalDocs/efm32gg-stk3700-ug.pdf

アプリケーションノート一覧
http://www.silabs.com/products/mcu/Pages/32-bit-mcu-application-notes.aspx

回路図
http://www.silabs.com/Support%20Documents/TechnicalDocs/BRD2200A_A03.pdf

0 件のコメント :