May 27, 2012

デジタルオーディオプレーヤー

E2601左の写真は、一見すると、今流行りの自作ヘッドホンアンプに見えるけど、そうじゃない。
携帯型デジタルオーディオプレーヤーだ。iPod とか Walkman と同じように、音楽を鳴らすことができる。
これを完全自作した。こう言ったものを完全自作する人は少ないだろうなあ。

回路自体は以前のコンテンツSTM32応用 デジタルオーディオプレーヤー その1と、ほとんど同じだ。STM32F405に SDIO と I2S インタフェースが内蔵されているので、それを利用して、microSD に入れた音楽ファイルを、FN1242 と言う DAC に送り、ローパスフィルター(LPF)用とヘッドホンアンプ(HPA)用の二つのオペアンプを通してヘッドフォンを鳴らしているもの。

E2602この回路を元に水城徹さんにプリント基板のパターンをおこしてもらった。世界には、ネット経由でプリント基板を格安で作ってくれる業者がある。今回の基板の場合、プリント基板10枚と送料をあわせて、たった 2700円で製造してもらった。

もちろん、業者が作った基板は部品が付いたものではないので、部品は自分で買い揃えてハンダ付けする必要がある。
STM32F405RGT6 は、DigiKey で買った。今日現在の価格は 1022円だ。
その他の部品は、全て秋葉原の秋月・千石・マルツ・鈴商などで買える一般的な部品だ。実はブレッドボードでヘッドフォンアンプを作ってみるは、このデジタルオーディオプレーヤーの最終段のオペアンプを決めるための実験だった。

E2603実際に作ってみると、やはり、最初のプリント基板なので、3つほどジャンパーを飛ばさないと動作しない。
また、デジタル部とアナログ部を共通の電源にしているので、デジタル部で発生したノイズ、特にSDIOのアクセス時に発生するノイズがアナログ部に回りこむ。プリント基板上では、アナログ部とデジタル部を切り離してパターンを作っていたので、その間にインダクタとコンデンサーでノイズフィルターを入れたら、ノイズが無くなった。部品側の写真の中央に空中配線した大きなコンデンサーが、それだ。

単四電池4本で、10時間くらい連続で聞けるから、それなりに実用的だ。

まだまだ不完全なものだが、一応、何とか音楽が聞けるようになったので、今後は回路とかプログラムとかをオープンソースとして公開したいと思っている。

E2604プログラム自体は、github で公開しようと思う。現状、44.1kHz 16bit のWAVファイルしか再生できないが、MP3 のデコードライブラリをリンクしたり、96kHz 24bit や 192kHz 24bit のハイレゾ音源再生への拡張を考えているが、プログラミングの得意な人に是非協力してもらいたい。(STM32F4のマニュアルによると、96kHz 24bit はスペックの範囲なのだが、192kHz 24bit はできるかどうか、やってみないと判らない)
また、
・回路図・レイアウト図
・ガーバーデータ(パターン・シルク・ドリル)・・(EAGLE CADで作ったもの)
や、プログラム等を作る上での議論などをWikiのようなもので公開するつもりだが、無料で、こう言ったWiki等を使えるところがあったら教えて欲しい。

プリント基板に関しては、上記で公開する予定のガーバーデータで、誰でも注文できるはずだが、もうちょっと回路を良くしてからの方が良さそう。特に、私はデジタルは専門なのだが、アナログに弱いので、LPF部やHPA部は、誰か得意な人の協力を得たいところだ。今のところ、単四電池4本の4.8Vで動かしているけど、本当は、単三電池2本でやりたいのだが、2.4Vで、ちゃんと動作するLPF部やHPA部を設計できてないんだよねえ。
まあ、as is で良いなら、部品載せる前の基板をコミケで配布しちゃうのも面白いかも。

とにかく、公開する予定なので、Wiki等を公開できるサーバーとかの情報や、プログラミングやアナログ回路設計などの協力してくれる人の情報求む。

それから、当たり前だけど、回路図とか見て作った回路は自己責任で使って!
下手な配線で、高価なヘッドフォンを壊しても責任持てないので、よろしく。

| | Comments (0) | TrackBack (0)

February 19, 2012

STM32応用 デジタルオーディオプレーヤー その1

E257しばらく、ブログで、STM32関係の記事をサボっていたのは、いつまでも『入門』じゃ、しょうがないので、実際に使えるものを作ろうと試作していたからだ。
で、やっと紹介できるレベルに達したのが、写真。STM32F405を使ったデジタルオーディオプレーヤーである。

microSD から STM32F405に読み込んだ音楽データを、I2SでFN1242 と言う最高 192kHz 24bit 対応の DAC に送り、ローパスフィルター用オペアンプとヘッドフォンアンプ用のオペアンプの2つを介して、ヘッドフォンを鳴らすと言うもの。以前、同じようなものを、SH-2で作ったのだが、回路が複雑で消費電力が大きすぎて、とても携帯用に使えるものではなかったし、SH-2のパワー不足で、192kHz 24bit の音楽データの再生はできなかった。

STM32F405は、SDから高速で読み出す SDIO インターフェースと、オーディオ用 DAC との標準的なインターフェースである I2S を内蔵しているので、回路はとても簡単だ。また、消費電力も少なく、写真のように単三電池4本で、らくらく駆動できる。

とは言え、現状では 44.1kHz 16bit の音楽データがやっと一曲 再生できるようになっただけで、その上、SDを読み出す度に雑音が乗るなど、まだまだ、改良すべきところが山ほどある。とは言え、最低限の機能が確認できた。

もう少し良くなったら、プリント基板を作って、携帯用に使えるようにするつもりで、その時は、回路やプログラムを公開したいと思う。

実は、もう一つ STM32 を使った応用例を作っているのだが、そちらは未だ公開できるレベルではない。
それも、ある程度進んだら、公開するので、お楽しみに。

| | Comments (0) | TrackBack (0)

December 24, 2011

STM32入門 互換性

E255_2今回は、STM32の互換性の話。
データシートだけでは、本当のところが判らないので、実際に買って試してみた。
さすがに、全品目買うわけにはいかないので、左の写真のように適当に選んで購入して、テストしてみた。写真の上段左から STM32F100VET6B STM32F101C4T6A STM32F103RGT6 STM32F105R8T6、下段左から STM32L152C8T6 STM32F205RBT6 STM32F405RGT6 である。
結論から言うと、
・シリーズ内では、ハード/ソフト共に極めて互換性が高い
・シリーズ間では、ハード/ソフト共に、やや互換性が落ちる
である。

詳しく説明する。
まず、どのようなテストをしたかだが、全ての CPU には、最低限の外部部品を配線した。概ねパスコン及びリセット用のコンデンサーと電源としてのは単三電池2本、それとプログラム書き込み用の JTAG 端子だけである。CPU内蔵のクロックを使ったので、水晶も使っていない。
動作確認用として、全ての機種に存在する Bポートの 11ビットに抵抗を介して LED を配線している。
プログラムは、JTAGkeyクローンと ST-LINK で書き込んだ。もちろん、LEDチカチカするプログラムである。

【ハードウエア互換性】
F1シリーズ内とL1シリーズ内は、完全な上位ピンコンパチだ。
パッケージのピン数が同じなら、ピンの配置は同一だし、ピン数が増えても増えた部分は主にパッケージの四隅に集中しており、そのまま存在するピンの配置は同じようになっている。
もちろん、機種ごとに周辺機器が違うので、低位のCPUには無いピンの機能もある。例えば、F100やF101にはUSB用のピンが無いが、F102より上位のCPUにはUSBがある。上位CPUでUSBに割り当てられているピンは、下位CPUでは単純なI/Oポートになっている。これらのピンは、上位CPUでも起動時デフォルト状態では、下位CPUと同じ単純なI/Oポートとして使える設定になっている。プログラム上で、USBとして使用するように設定すれば、USBピンになる。このように、上位互換性が取れている。

同じようにF2シリーズ内とF4シリーズ内も、上位ピンコンパチだ。つまり、ピン配置的に言うと STM32は「F1シリーズとL1シリーズ」のグループと「F2シリーズとF4シリーズ」のグループの2グループに分かれていて、それぞれのグループ内では、上位コンパチブルになっている。

では、「F1/L1グループ」と「F2/F4グループ」で、全くピン配置が違うと言うとそうでも無い。
実は、違いは電源周りだけだ。「F2/F4グループ」には、VCAP/PDR_ON/REFGOFFが新設されている(PDR_ONは100ピン以上のパッケージにしかない。REFGOFFは現状持っている品種が無い)。
VCAPは、CPUに内蔵された定電圧レギュレータの平滑コンデンサー用のピンだ。あって当然というか、むしろ「F1/L1グループ」が平滑コンデンサー無しで動作している方が驚きとも言える。PDR_ONは、入力電源の下限値と動作可能温度範囲を変更するためのピンである。VCAP/PDR_ON共に「F1/L1グループ」では、VSSのピンに割り当てられている。その他、「F1/L1グループ」と「F2/F4グループ」で、VDDとVSSが逆転しているところもある。もし、「F1/L1グループ」と「F2/F4グループ」で共通して使うプリント基板を作る場合、上記のように電源周りだけは、気を付けなければならない。マニュアルにも書いてあるが、数カ所ジャンパーを設けるだけで対処できる。

【プログラムの書き込み】
最新版のファームウエアにアップデートした ST-LINK なら、全てのCPUに書き込みができる。
JTAGkey クローンの場合、OpenOCDのバージョンによって異なる。リリース版の OpenOCD 0.5.0 の場合、STM32F100VET6B と STM32L152C8T6 には書き込めなかった。GITで拾った最新ソースで構築した OpenOCD 0.6.0 だと、全ての CPU に書き込めた。この違いは、CPUのIDが OpenOCD に登録してあるかによる。
なお、STM32F405RGT6 に関しては、「F205のIDになっている」とのエラッタが出ているので、それで、古いバージョンの OpenOCD 0.5.0 でも書き込めたのかも知れない。エラッタが修正されると、OpenOCD 0.5.0 で書き込めなくなる可能性がある。

【ソフトウエア互換性】
プログラムが書き込めるからと言って、必ずしも正常に動作するわけではない。
最も下位レベルのCPUである STM32F101C4T6A (全STM32ファミリー中、価格が最も安い)に合わせて作った LED チカチカプログラムのバイナリを全てのCPUに書き込んだところ、F1シリーズは全機種、何の問題もなく動作した。しかし、L1/F2/F4シリーズは動作しなかった。
元々のプログラムはF1シリーズ用のヘッダ・ライブラリを使っていたので、これらをごっそり F4シリーズ用に交換しコンパイルしたら、F4シリーズで動作した。しかし、このバイナリを他のシリーズに書き込んでも動作しなかった。L1とF2もヘッダ・ライブラリを交換したら動作すると思うのだが、まだやっていない。
結論としては、シリーズ内は、バイナリーレベルのソフトウエア互換性がある。しかし、シリーズをまたぐと、シリーズ専用のヘッダ・ライブラリを使ってコンパイルしなおす必要があると言う事になる。

とまあ、こんなところ。
・シリーズ内は極めて互換性が高いから、シリーズ中一番低いレベルのCPUから始めてステップアップしても、一番高いCPUから始めても構わない。
・シリーズ間のハードウェア互換性は、電源周りが違うだけ。プリント基板を作るなら、数カ所のジャンパーで済むから、「F1/L1グループ」と「F2/F4グループ」で共通して使えるようにしておくと良いかも。
・シリーズ間のソフトウエア互換性は、シリーズ専用のヘッダ・ライブラリを使った再コンパイルが必要になる。これが面倒と思うか、どうかは、個人の考え。

と言うわけで、私は安いものから始めた方が良いと思うので、184円の STM32F101C4T6A から始めた。高機能高性能が良いなら、1243円のSTM32F405RGT6 から始めるのも一つの手ではある。(価格は、2011.12.24現在、Digi-key調べ)

| | Comments (0) | TrackBack (0)

December 15, 2011

STM32入門 STM32のファミリー構成

E254さて、実際にSTM32を買おうと思って、Digi-key 等を見ても、在庫しているだけで、200近い品種があるので、どれを買おうか迷ってしまうだろう。だが、STM32の型番には規則性があり、型番を見れば大体どういう中身か想像が付く。
今回は、STM32の型番の見方だ。

イラストのように型番には幾つかの要素がある。
(ア) シリーズ/ライン
シリーズ/ラインは、CPUの速度や周辺機器など、マイコンを大きく特徴付ける部分を示す。現状、STM32には F1シリーズ、L1シリーズ、F2シリーズ、F4シリーズの4つがあり、各シリーズ内では互換性が高い。

・F1シリーズ
最も古くからあるシリーズで、現在の主力。さらに細かく細分化される。(シリーズを細分化したのが、ラインなのだが、F1シリーズがデビューした当時は良く使われたが、最近はラインと言う言葉をメーカーでも使っていないようなので、無視して良いと思われる)
 F100:クロック 24MHzでUSART/SPI/I2C/ADCとタイマー。
 F101:クロック 36MHzでUSART/SPI/I2C/ADC。
 F102:クロック 48MHzでUSART/SPI/I2C/ADC/USB(クライアント)。
 F103:クロック 72MHzでF102に追加して、CAN/I2Sとタイマー。
 F105:クロック 72MHzでF103に追加して、SDIO/DAC/USB(ホスト)。
 F107:クロック 72MHzでF105に追加して、イーサネット。

・L1シリーズ
昨年出たシリーズで、低消費電力バージョン。
 L151:クロック 32MHzでUSART/SPI/I2C/ADCとタイマー。
 L152:クロック 36MHzでL151に追加して、LCDコントローラー。

・F2シリーズ
今年初めに出たシリーズで、高性能バージョン。
 F205:クロック 120MHzでUSART/SPI/I2C/ADC/USB/CAN/I2S/DAC/SDIO/タイマー。
 F207:クロック 120MHzでF205に追加して、イーサネット。

・F4シリーズ
今年秋に出たばかりのシリーズで、浮動小数点プロセッサ付きの高性能バージョン。
 F405:クロック 168MHzでUSART/SPI/I2C/ADC/USB/CAN/I2S/DAC/SDIO/タイマー。
 F407:クロック 168MHzでF405に追加して、イーサネット。

(イ)パッケージピン数
・T: 36
・C: 48
・R: 64
・V: 100
・Z: 144
・I: 176

(ウ)メモリ容量(RAMメモリの方は多少上下するので注意)
・4: ROM:16K RAM:6K程度
・6: ROM:32K RAM:10K程度
・8: ROM:64K RAM:20K程度
・B: ROM:128K RAM:20K程度
・C: ROM:256K RAM:48K程度
・D: ROM:384K RAM:64K程度
・E: ROM:512K RAM:64K程度
・F: ROM:768K RAM:96K程度
・G: ROM:1M RAM:96K 程度

(エ)パッケージ
・U:VFQFPN
・Y:WLCSP
・H:LFBGA
・T:LQFP

(オ)温度範囲
・6:-40度〜85度
・7:-40度〜105度

(カ)バージョン
・無い場合もある。
・A,B,C

と言う具合。ただし、周辺機器に付いては、数が多過ぎて網羅しきれないので、主要なものだけあげてある。また、同じシリーズでもピン数の多いものだけあるとか、メモリの多いものだけ設定のある周辺機器もあるから注意が必要だ。
また、全ての組合せがあるわけではなく、高速クロックのCPUに小容量メモリの組合せやピン数の少ないパッケージの組合せなどは無い。一般的に、高速なCPUで多機能な周辺機器なほど、メモリ容量が大きいほど、パッケージのピン数が多いほど、高価だが、多少、順番が異なっている事もあるので、購入の時には注意しよう。

では、クロック速度や周辺機器、メモリ容量やパッケージのピン数、浮動小数点プロセッサの有無が適切でさえあれば、どれでも購入して良いのか?
次に、気になるのは、互換性だ。ピン配置やプログラムに互換性があるのか?
と言うわけで、次回は、STM32ファミリー同士での互換性の話。

| | Comments (0) | TrackBack (0)

December 08, 2011

STM32入門 JTAGkey クローンを作る

E2521今回は前回に続いて、STM32にプログラムを書き込むために必要な JTAGkey クローンの話。
左の写真は、私が作ったJTAGkey クローン達。作った順に左から 1号機 2号機 3号機である。1号機は最初に作ったので、余裕をもった大きさに作っている。1号機で動作確認できた後、2号機と3号機は本格的に使うためにケースに入れ、小型化している。なお、2号機は最も丁寧に作ったのだが、他の人に貰われて行って、既に手元には無い。

JTAGkey クローンに付いてはJTAGkey cloneなどに詳しく説明があるが、これが私が作った回路図である。意外と簡単だ。
Jtag_keyポイントは、秋月で買った FT2232モジュール(1450円)と言う USB−シリアルインターフェースを中心に作っている事と、ロジック電圧の変換に 74VHC125 を使っている事、コンフィギュレーションを記録するためにシリアルROMのAT93C46/56/96を使っている事だ。なお、シリアルROMが回路図に載っていないのは、FT2232モジュールの上に直付けするパターンがあるためだ。
実は、このROMが曲者で、FT2232モジュールのパターンは、8ピンSOP(ピン間ピッチ1.27 mm パッケージ幅3.90mm)用なのだが、これが秋葉原の部品街で手に入らない。ROMを除く全ての部品は、秋葉原で手に入るのに・・・

E2522ただ、秋月では、DIPサイズのAT93C46が40円で売っている。冒頭の写真を見ると判ると思うが、私の JTAGkey クローン 1号機は、秋月で買った DIPのAT93C46を無理やり配線して使っている。
これに対し、2号機と3号機は、digi-keyで買った SOPサイズのAT93C56を使っている。11月29日付のブログで、「AT93C56A-10SU-2.7-ND」を買っておいた方が良いと言っているのが、これだ。
その他、74VHC125 は鈴商で 5個セットで 300円で売っている。ただ、SOPなので、DIPへの変換基板は千石で同じく5個セットで450円だ(ICより変換基板の方が高いのもなんだが・・)。 2号機 3号機で使っているケースも TB-55 と言う千石で180円で売っているものだ。2号機の内部写真も載せておくが、小型化のためにFT2232モジュールのピンも外している。ちょっと無理して小型化した感があり、ここまで小さくする必要は無いだろう。

E2523配線が終わったら、JTAGkey クローンには、コンフィギュレーションが必要だが、この作業は、Windowsパソコンで行う。JTAGkey クローンのコンフィギュレーションは一度やってしまえば、二度とやる必要が無いが、Linuxユーザーも、この作業の時だけ Windowsパソコンを使うなり借りるなりする必要がある。

JTAGkey クローンのコンフィギュレーションには、次の3つのファイルが必要だ。
・CDM20814_WHQL_Certified.zip
 ドライバからダウンロード
・CDM20814_WHQL_Certified_JTAGKey.zip
 おきばから、たどっていく。
・MProg3.5.zip
 MProg よりダウンロード
 現在では、FT_Prog の方が新しいようだが、今回はMProgを使って説明する。

以上のファイルは、ダウンロードの上、解凍しておく。

JTAGkeyクローン を WindowsパソコンのUSBに挿し込むと新しいハードウェアを見つけたと言うので、「CDM20814_WHQL_Certified.zip」の解凍したディレクトリを指定してドライバをインストールする。なお、回路図通りに作ったら、FT2232モジュール上のジャンパーは必要ない。

E2524MProg.exe を起動し、「File」メニュー「New」を選択し、左図の赤線で囲ったところのように値を変更する。(赤線で囲った内、幾つかは変更しなくて良い箇所もある)
その後、「File」メニューの「Save as」で適当な名前でセーブする。
「Device」メニューの「Scan」で、MProgの一番下に「Number Of Blank Device = 1」が表示される事を確認する。もし、そうでなければ、「Device」メニューの「Erase」で、ROMを消去する。
最後に「Device」メニューの「Program」でコンフィギュレーションを書き込む。

MProg を終わらせた後、JTAGkeyクローン を一度抜き、USBに再度挿し込むと新しいハードウェアを見つけたと言うので、CDM20814_WHQL_Certified_JTAGKey.zip」(さっきと違うので注意) の解凍したディレクトリを指定してドライバをインストールする。
この時、なんか知らんが、四回くらい新しいドライバーをインストする。

デバイスマネージャーで確認すると
・USB(Universal Serial Bus)コントローラの中に
 ・Amontec JTAGKey A
 ・Amontec JTAGKey B
・ポート(COMとLPT)の中に
 ・Amontec JTAGKey (COM25) <= COM番号は異なる
 ・Amontec JTAGKey (COM26) <= COM番号は異なる
があることを確認する。

これで、JTAGkeyクローンの準備ができた。後は実際にSTM32にプログラムを書き込んで動作確認するだけだ。

| | Comments (1) | TrackBack (0)

December 04, 2011

STM32入門 プログラムを書き込む方法

E251写真は STM32 にプログラムを書き込んだりオンボード・デバッグをするために、パソコンと接続するインタフェースだ。写真の左が自作したJTAGkey クローンで、右が秋月で買ったST-LINK。今回は、どっちを買えば、もしくは作れば良いかって話。

PICやH8、SH-2と同じように STM32 もフラッシュROMを内蔵していて、そこにプログラムを書き込んで使う。もちろん、プログラムは母艦となるパソコン上でコンパイルやアセンブル・リンクを行なって作る。

ここで問題となるのは、作ったプログラムをどうやって STM32内のフラッシュROMに書きこむかと言う事だ。STM32の場合、フラッシュROMに書き込む方法の情報がなくて悩むのではなく、逆に情報が多すぎて、何だか判らなくなる。STM32に関して書かれた書籍や雑誌に記事などは、コンパイラ・アセンブラ・リンカーやデバッガー、統合環境、プログラム書き込み・オンボードデバッガーなどを一度に説明しようとするが、それらの組み合わせは星の数ほどある。
しかし、パソコン上でプログラムを作るためのコンパイラやアセンブラ・リンカなどに関しては、無料で使える良いものがあって、パソコンとインターネットが使える環境さえあれば、数時間もあればセッティングできるので、ひとまず後回しにしよう。今回は「作ったプログラムをSTM32に書き込む方法」に絞って話を進める。

まず、物理的にSTM32のフラッシュROMへのプログラム書き込む方法は、以下の4つである。
 1: USB経由 (DFU)
 2: シリアルインターフェース
 3: SWD
 4: JTAG
この内、1は USB ケーブルで母艦パソコンと接続するだけと言う極めて簡単なインターフェースで良い反面、「USB I/F を持つ STM32にしか使えない」事と「最初に DFU と呼ばれるローダープログラムを、他の方法で書き込む必要がある」事と言う二つの欠点をもつので、以降の説明から除外する。
また、2もインターフェースは簡単だが、デバックができないなどの欠点がある事と、私自身が未だ動作確認していないので、これも以降の説明から除外する。

残りの3と4だが、これを実際に母艦パソコンに接続するインターフェースと、母艦パソコンでプログラム書き込みに使うアプリケーションソフトも幾つかあって、その組み合わせも多い。主な組み合わせを以下に示すが、表記上「」を物理的にSTM32と直接つながる部分、『』をSTM32とパソコンと接続するインターフェース、【】を母艦パソコンでプログラム書き込みに使うアプリケーションソフトとさせてもらう。

組合せ 1:「SWD」『ST-LINK』【ST-LINK Utility】
組合せ 2:「SWD」『ST-LINK』【TrueSTUDIO (Lite)】
組合せ 3:「SWD」『Versaloon』【OpenOCD】
組合せ 4:「JTAG」『JTAGkey』【OpenOCD】

組合せ 1 は、Windows上のみのサポート。私のところでも動作確認できている。
組合せ 2 も、Windows上のみのサポート。最も一般的なはずなのだが、私のところでは動かない。
組合せ 3 は、Windowsおよび Linux 両方のサポート。残念ながら、私のところでは動いていない。
組合せ 4 も、Windowsおよび Linux 両方のサポート。私のところでは、WindowsでもLinuxでも正常に動いている。

私が言うのもなんだが、私すら手こずって動作確認できないのは、お勧めできない。動作確認さえできれば、組合せ 2や 3も良いのだが、やはり止めておく。特に、組合せ 3は、これが動けば理想的なんだが、そうもいかない。

さて、残った組合せ 1と4では、それぞれ『ST-LINK』と『JTAGkey』と言うインターフェースが必要で、これはハードウエアだから、買うなり作るなりする必要がある。

ST-LINKは、秋月やストロベリー・リナックスで 2500円程度で売っているので、入手は楽だ。難点は、STMicroelectronics の純正なのは良いんだが、ガードが固くて中がどうなっているか判らない事。そのため、アプリケーションも STMicroelectronics の純正か、TrueSTUDIO (Lite)のような製品もしくは体験版だけとなる。書き込み用の ST-LINK Utility は、それなりに使えるのだが、私の場合、TrueSTUDIO (Lite)が動かいないので、デバックができない。もし、ST-LINKの中身が判れば、オープンソースのアプリケーションが作られるのだろうが、そうはいかない状態だ。

それに対し、JTAGkey は本物は1万円以上と高いし、どこで買えば良いのかも良く判らない。しかし、中身は良く知られているので、同等品(JTAGkeyクローン)を自作するのは簡単で 3000円程度で作れる。また、中身が知られているのでオープンソースのアプリケーションもあり、Windowsだけでなく、Linuxでも使える。JTAGkey は、JTAGインターフェースのデファクトスタンダードなので、STM32だけでなく、各社・各種のCPUマイコンやFPGAにも書き込める。それに対し、ST-LINK は、STMicroelectronics の STM8 と STM32 だけしか対応していない。

主に、LINUXを使っていて、余りお金をかけられない私としては、JTAGkey クローンが唯一の解だ。

と言うわけで、ここでの結論は「JTAGkey クローンを使ってSTM32にプログラムを書き込もう」って訳。
作り方は、また次回・・・

| | Comments (0) | TrackBack (0)

November 29, 2011

STM32入門 何から買うか?

E250STM32に限らないが、新しいCPUを使い始める時に最初に悩むのは何から手に入れたら良いかだ。まあ、大概の場合、雑誌の付録になっているCPUボードとか、CPUメーカーが体験用に出しているボードから始める事になっている。
STM32の場合、DesignWave 2008年5月号に付いていた付録CPUボードや「STM32 value line Discovery」と言うボード、その他、ストロベリー・リナックスで扱っているCPUボードがコストパフォーマンスが良いと言われている。私自身、写真の右側にあるように DesignWave 2008年5月号の付録CPUボードと「STM32 value line Discovery」を持っている。だが、本当に、それがベストだろうか?

私の独断と偏見で言わせてもらうと、こう言った体験ボードは余り役に立たない。STM32をチップ単体で購入してスクラッチから回路を作った方が良い。(写真の左側の4つ参照)
STM32を本格的に組み込み用に使おうと思えば、いずれは嫌でもチップ単体から組み上げなきゃいけない。どうせ、チップ単体から組み上げる事になるなら、早い方が良い。体験ボードは本当に体験版でしかない。私は、DesignWave 2008年5月号の付録CPUボードと「STM32 value line Discovery」を、ほとんど使っていない。本格的に使い出したのは、CPUをチップ単体で購入してからだ。

もう一つの理由は、STM32が比較的簡単に最小構成回路を作れる事にある。
例えば、PICに入門する時、誰も体験用ボードから入れとは言わないよね。
これは、PICを動作させるには、外部に部品として抵抗一本あれば動かせる事もあると思う。
一方、H8とかSHに入門する時は、雑誌付録のCPUボードとか秋月で売ってるCPUボードから入った方が良い。これは、H8とかSHのクロックとかリセット回路が比較的難しい事と、特にSHの場合は電源電圧の変動に弱いからだ。スクラッチから作ると必ずしも上手くは行かない。だから、体験用ボードから入門すべきと言う事になる。

STM32は、PICほど簡単とは言わないが、外部に僅かコンデンサー数個を付けるだけで動作する。また、レギュレーターを内蔵しているので、単三電池2本で動作することが可能だ。

STM32をチップ単体から作る時の最大の問題は、半田付けしなきゃいけないことだろう。それも最低でも0.5mmピッチのQFPを半田付けする必要がある。

「いきなり0.5mmピッチのQFPを半田付けしろなんて、『入門』と名乗っておいて無茶を言う」と言われそうだ。でも、私は「STM32への入門」はうたっても「マイコン初心者の」とは言っていない。私自身、35年近く前に、8080Aをチップ単体で購入してオリジナル回路を組んだわけだから、とてもじゃないが「初心者」じゃない。この題名は「半田付けなどで腕に覚えのある人のための『STM32入門』」なのである。まあ、私の場合、8080Aをチップ単体から作った時は、完全初心者だったんだけどね。

さて、じゃあ STM32 を何処から買うかと言うと、秋葉原の部品屋では扱っていないようだから、ネット通販と言う事になる。私の場合、Digi-keyで買ったのだが、まず、Digi-keyのホームページで、STM32で商品検索し「組み込み - マイクロコントローラ、MCU」で絞り込むと、在庫部品だけで、183種ある(2011年11月29日現在)。価格順に並べると、なんと一番安いのは、STM32F101C4T6Aで単価180円だ。パッケージも48ピンLQFPだから、半田付けできるし。同じ単価180円で、STM32F101T4U6Aもあるけど、パッケージが36ピンVFQFNなので止めておいた方が良いだろう。

「わけが判らんけど、STM32F101C4T6A 買っちゃえ〜〜」と買ってから、動作させるために、結局、合計で5000円ほどかかった。何に、どうかかったかは追々説明するつもり。
まあ、『5000円で始めるSTM32』って言う訳。

ちなみに Digi-key で買うなら、今すぐ買うのは、ちょっと待ってね。
意外と送料が高い(と言っても2000円だけど)ので、他にも幾つか一緒に部品購入した方が良いので。
(具体的に言うと「AT93C56A-10SU-2.7-ND」単価20円を一緒に注文した方が良いのだが、これを何に使うのかは、いずれまた・・・)

| | Comments (1) | TrackBack (0)

November 26, 2011

STM32入門

E248最近、STM32と言う組込み用マイコンに凝っている。
元々、この用途には、PICとかH8とかSH-2を使っていたのだが、これらにも限界を感じていた。PICはメモリとかが小さすぎだし、H8は性能不足、SH-2は消費電力大きい割には性能高くない。SH-2は、高速化し浮動小数点演算ユニット(FPU)の付いた発展型のSH-2Aがあるにはあるのだが、SH-2とアーキテクチャがガラッと変わって、今までの資産が使いようがない・・・ようだ。
そもそも、ルネサスはH8とSH-2をどうする気なんだか判らないところもあって行く末も不安だ。ルネサスは国内の色々なCPUメーカーの寄り集まりと言うかゴミ溜め(失礼!)状態で、ホームページを見ても、CPUの種類が多すぎて、何が何やら判らん状態だ。ルネサスとしても、きっと一度整理しなおす必要があって、それが多分RX62だと思うんだが、これも本命かどうか良く判らん。全くアーキテクチャに手を出すとなると、それなりに手間だから、将来性がないと意味がない。

国産のCPUに拘らずに、海外にも目を向けると、Cortex-Mがある。これは、ARMの流れを引くCPUで、凄いのは同じアーキテクチャのCPUを複数のメーカーが生産していることだ。仮に一つのメーカーが生産を止めても、他のメーカーから同じアーキテクチャのCPUが買える。また、シリーズ内での整理も良くできており、周辺機器アドレスなどが統一されているので、上位機種への乗り換えも容易だそうだ。つまり、将来性が保証されているってこと。
H8やSH-2を使っていて困るのが、同じH8やSH-2の中でもちょっとシリーズが違うと、周辺機器のアドレスとかが異なり、RTOSの移植からやり直さなければならないこと。これが無ければ、もう少しSH-2を続けていても良かったんだがねえ・・・

さて、Cortex-Mの中でも、Cortex-M3は中庸で使いやすいらしい。また、FPUが追加されたCortex-M4もリリースされたばかりで、将来性もある。そのCortex-M3/4の中で比較的入手しやすいSTM32を始めようという訳だ。

STM32のスペックの数字を読むと「SH-2以上のパフォーマンスをH8並みの消費電力と使い易さで、PIC並みの低コストで実現」という事になる。まあ、こう言うカタログを、そのまま信じるほどお人好しではないので、実際に試してみようって事だね。

さて、実際にSTM32の情報を集めると、書籍とかネット上にイッパイある。ありすぎると言っても良い。
ざっと紹介すると
・トラ技 2011年 3月号(これは、STM32と言うよりCortex-M3全体の話ね。)
STM32マイコン徹底入門 CQ出版
STMicroelectronics
ねむいさんのぶろぐ
が充実。STM32の情報は、上記に網羅されているので、私的には実際に使う時のコツと言うか、具体例を説明しようかな?
追々ね。

| | Comments (2) | TrackBack (0)