2009/03/29

Gigast V5 ケース作成

Gigastは、組み立て以来、ずっと裸のままで使ってきましたが、ようやくケースに入れました。


前面から見た図です。SP-inとTG-outをそのまま前面に出し、スイッチとLEDをつけるという非常に当たり前の構成になっております。

こちらが背面です。USB端子(ちょっとゆがんでいますがそこはご愛嬌)と、NF測定用の端子です。

2009/03/26

インターフェース5月号付録ARM基板(2)

雑誌の付録基板の付いた号には、開発環境などを収めたCDが添付されているものですが、インターフェース誌の5月号は基板だけしか付いてきません。
4月号で特集されていたようで(「基板は来月号なので、今月号はCPUエミュレータで実行しましょう」という若干強引な話になったいたようです)、まあ商売としては仕方ないかなと思います。

サンプルソース(LEDちかちか)をインターフェース誌のサイトのダウンロードページからダウンロードしたところ、実行形式がExeディレクトリに入っていたので、まずは基板にダウンロードして実行できました。

プロジェクトはIARで作られているようなので、DWM付録基板に付いてきたIAR(5.11)でリビルドしようとしたのですが、プロジェクトファイル(FirstProject.eww)を開くと、「このプロジェクトファイルは新しいIARのものなので開けないよ」と言われてエラーになってしまいます。仕方なく最新版のIAR(5.30)をダウンロードしたら、無事にビルドできました。

二つもIARを入れておくのも何なので、DWM基盤用のプロジェクトもIAR 5.30でビルドできないか試したところ、インクルードファイル名が変わっていてエラーになりました。
5.10ではSTM32F103というプロセッサ名だったのが、5.30ではSTM32F10xxBに変わっており、ヘッダ名もそれに合わせて変わったためです(プロジェクトファイル内のプロセッサ情報は自動変換されるようです)。
旧)#include <ST\iostm32f10x.h>
新)#include <ST\iostm32f10xxB.h>
それ以外のところは特に問題なくコンパイルすることが出来ました。微妙なところを変えてくるなあという感じです。

お約束 インターフェース5月号付録ARM基板

お約束ですが、インターフェース5月号を買い求めました。お目当てはもちろん、付録のARM基板(LPC2388)です。



こんなのが付いて来ます。早速組み立ててみます。
JP1(マニュアルリセット)、JP2(ISP/プログラム実行切り替え)、JP5(USBコネクタ)などを組み立てると、とりあえずサンプルプログラムは動くはずです。

基板上のUSB・シリアル変換IC(CP2102)のドライバを入れて、フラッシュへの書き込みツール(FlashMagic)をインストールすれば、書き込みができます。

フラッシュへの書き込みが終わったら、JP2をオープンにしてリセットを掛けます(あるいは電源の再投入を行います)。すると、こんな感じでLEDが点滅します。

2009/03/25

ニキシー管時計完成 - 34063A また壊した

完成したと思ったニキシー管時計ですが(まあ完成はしているのですが)、どうも接触が悪いところがあるようで、点いていたのがふっと消えたり、電源を抜き差しすると点灯しなくなったりします。

45度傾けて叩くとついたりするので、どこかに接触不良箇所があるのは間違いないのですが、どこを探しても問題なさそうです。

しょうがないので分解して色々見ていたら、昇圧に使っている34063Aを壊してしまいました。電圧が12Vちょいしか出なくなってしまいます。

新しい34063Aに入れ替えたら、動きました。実は、前にも一度壊したことがあって、RSコンポーネンツで2個仕入れておいたのですが、そのうちの一つが壊れてしまったことになります。結構簡単に壊れるようです。もう2個ほど仕入れるかなあ。




分解したので、写真を撮りました。例によって行き当たりばったり、実装密度の低い基板ですが、笑わないでください。

右下が電源キット、その上がPS2532(フォトカプラ)です。縦に並んでいるのは、74HC04と74H138(桁選択用の3-8デコーダ)、PIC16F690です。
一番右のICが、年代物のSN74141で、これで各カソードを制御しています。
その下が、秋月のRTCモジュールとバックアップ電池です。

2009/03/22

ニキシー管時計完成

ケース工作で止まっていたニキシー管ですが、ついに完成しました。


とにかく、ケースに6つもの大穴を開けるのが非常に大変でした。ドリルで下穴を開けて、ハンドニブラで削りつつ、ニキシー管が通るようになるまでリーマで削ります(このために直径が22mmまで対応可能なでかいリーマを買いました)。
ニブラが思った以上に狙いがつけ辛く、下手をすると穴をはみ出してしまいそうだったので、仕方なくしこしこリーマで削り続けることになりました。おかげで右手が筋肉痛です。

全体の制御には(ありきたりですが)PIC16F690を使っています。点灯に必要な高電圧はhttp://nixie-tube.com/さんの電源キットを使っています。
アノード側の制御はフォトカプラ(PS2352-4)を使っています。鈴商さんで購入したと記憶しています。カソード側の制御は、これもnixie-tube.comさんで買い求めたSN74141を使用しています。
時刻の管理には、秋月のRTCモジュールを使用しています。バックアップ電池をつけてあるので、電源を落としても時刻は保持されます。


稚拙な回路図上、これをベースに基板を起こしたわけではないので、間違いがあるかもしれません...。

こちらは、本体基板に乗っかる二桁ニキシーアダプタボードです。EAGLEのフリー版のサイズ図制約の関係で、親子構成にならざるを得ませんでした。


以下、動作中の動画です。

2009/03/20

インターフェース5月号の付録ARM基板

あちこちで話題に上っていますが、インターフェース5月号の付録としてARM基板が付いてくるようです。
回路図が公開されていますが、CPUコアがLPC2388、フラッシュ512Kバイト、SRAM64Kバイト、USB、Ethernet、SD/MMC、A-D/D-Aなどてんこもりのようですね。RAMが64Kバイトあると色んな点で楽だなあ。

DWM付録基板でARM開発環境も整ったので、インターフェース基板へはスムースに移行できそうです。どんなものになるのか楽しみですね。

2009/03/19

DWM付録ARM基板(2008/5)(7) FatFS

こちらで公開されているFatFSを、簡易フォトフレームに組み込んでみました。

使い方もサイトで詳しく説明されており、いくつかのローレベルディスクI/O操作を書くだけで、FATがきちんとアクセスできました。作りも見通しがよく、素晴らしいライブラリです。

2009/03/16

DWM付録ARM基板(2008/5)(6) 簡易フォトフレーム

デザインウェーブマガジンの付録ARM基板で、簡易フォトフレームを作ってみました。

ARM基板とSparkfun Electronicsで購入したNokia6100ボードをつないでいます。SDカードと液晶ボードは、いずれもSPIでARM基板と接続されています。


あらかじめ、SDカードの先頭から画像データ(一枚26136バイト固定)を5枚連続に書き込んでおくと順番にその画像が表示されます(とりあえず5枚決めうち、ファイルシステムなしというお手軽さです)。

132x132のJPEG画像ファイルを5枚用意して、以前作成した変換プログラムでそれぞれを変換した上で、concatenateして書き込みます。
# cat 1.dat 2.dat 3.dat 4.dat 5.dat | dd of=/dev/sdb

前回、ColdFire付録基板で試行したときには、絵を一枚表示するだけでも数十分掛かるという遅さでしたが、さすがに今回はネイティブコードで動くので、一瞬とは言わないまでもリーズナブルな速度で表示が終わります。


2009/03/15

DWM付録ARM基板(2008/5)(5) SDカードアクセス

DWM添付ARM基板ですが、USBマスストレージデバイスとして見せるためのファームが添付されていますが、手持ちのカードの一部しかアクセスできない状態でした。

やはり添付ファームだと、ソース量が多かったり、関連ライブラリが色々絡んで来ざるを得なくなって見通しが悪くなってしまいますから、自分でSPI経由のSDアクセスを作りこむことにしました。別に、必ずしもUSBマスストレージデバイスとして見えなくてもかまわないわけなので。

中々カードがコマンドに応答しないなど悪戦苦闘しましたが、結果的に、2GBのSDカードは自前のロジックでもきちんと読めることが判りました。
  • SPI経由で読み出したデータ
readblk: resp 0
0000: fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0
. . . . . . . . . . . . . . . .
0010: fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00
. . . | . . . . . . . . . ! . .
0020: 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75
. . . . 8 . u . . . . . . . . u
0030: f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b
. . . . . . . . . | . . . t . .
0040: 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00
L . . . . . | . . . . . . . . .

  • Linuxから、ddで読み出したデータ
000000 fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0
000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00
000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75
000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b
000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00

当然ながら両者一致しています。

当初は、I/Oポートの扱いを間違えたりといった初歩的なミスでつまずいていましたが、SDカードのSPIアクセスとしては
  • 送信データはクロックの立ち上がりエッジで、カードから読み取られる。
  • 最初にCS/DI=Hにした状態でクロックを74回以上送信。
  • 初期化はCMD0によるリセットと、CMD1/ACMD41によるカード初期化。
    CMD0を送ってレスポンスがIdle State(0x1)になったら、すかさずACMD1を送信します。
  • ACMD1は、CMD55 + CMD41の組み合わせ
    レスポンスが0x1から0x0に変わるまで、何回か送信をリトライする必要があります(かなり時間が掛かるようです)。
  • CMD17の引数はバイトオフセットかつブロックサイズ(512)の倍数にするのが良いようです。コマンド引数はビッグエンディアン([31:24]、[23-16]、[15-8]、[7-0]の順)で指定します。
などを実施すれば、それほど難しくなくアクセスできるようです。

自前で作りこんだおかげで、読めなかったSDカードがどういう振る舞いをしているかもわかってきました。
  • 読めるカード(2GBノーブランド、1GBノーブランド)
    PCショップで500円程度で売られていた安物ですが、CMD0、ACMD41にきちんと応答してくれます。
  • 読めないカード(512MB、128MB、いずれもパナソニック製)
    これらのカードは、CMD0に対して63(初回目)、5(2回目以降)を返却してきます。63は良くわからないのですが、5は"Illegal Command"なので、
  1. ソフトが何かを間違えていて、カードによっては厳しくチェックされてエラーになっている
  2. そもそもカード側が何かに対応していない
などの可能性がありそうです。

参考URL:
MMCの使いかた
マルチメディアカード

MMCドライバ
AVR試用記-sdcard
ゴミ SD カード活用
SDカードが認識しない。。。
などなどを参考にさせていただきました。

2009/03/10

DWM付録ARM基板(2008/5)(4)

ARM基板をJTAGでデバッグしたいのですが、DigilentのUSB-JTAGケーブルではうまくいかないようです。内臓のフラッシュがJTAGチェーン上に見えるのかと思ったのですが...。

2009/03/08

DWM付録ARM基板(2008/5)(3)

> 認識・書き込みが出来るようになりました!

と思ったのは間違いでした。

2GBのSDカードなのに、なぜか4GBとして認識されてしまいます。しかも、2GB使用中、2GB空きになってしまいます。


その状態でも、データの読み書き、保存はちゃんとできるので、まあ使えるようになったといえなくもないのですが、他のカードリーダーにSDカードを付けると認識されなくなってしまうので、やっぱりアウトです。

2009/03/07

よりみちパン!セ

「よりみちパン!セ」というものがあります。
初めて聞いた人は何のことか分からないと思いますが、実はこれは新書のラインナップの名前です(○○文庫とか、○○新書、みたいなものですね)。

http://www.rironsha.co.jp/special/series/main.html

しかし、この名前の意味がわかりません。よりみちパンは、寄り道なのか、パンなのか、パンセなのか(パスカル?)なのか。!は、モーニング娘。の「。」みたいなものか?だとしても何故に単語の真ん中をすっぱり切って落とすのか。

どこかに書いてあるのかもしれませんが、謎です。

DWM付録ARM基板(2008/5)(2)

2008年5月号付録のDWM付録ARM基板でSDカードがうまく読めない問題ですが、SPIの各ピン(CLK、DI、DO)をロジアナ(カメレオンUSB)で見てみたところ、以下のようになりました。

なお、いずれのピンもJ3コネクタに出ています。CLKはSPI1_SCK(29番)、DIはSPI1_MOSI(27番)、DOはSPI1_MISO(28番)に対応しています。


これを見るかぎりだと、CLKはちゃんと入っていて、コマンド(上の例では01010001なので、リードブロック)もきちんと出ているようです。カードからの応答が見えていませんが、本当に出ていないのか、通信できていないのかは良くわかりません。

仕方なく、Webをつらつらと眺めていると、この付録基板はSDカードとの相性問題があるようです。思い立ってノーブランドの2GBのSDカード(700円弱です。安くなったものです)を買ってきたところ、認識・書き込みが出来るようになりました!

2009/03/05

DWM付録ARM基板(2008/5)(1)

ColdFire基板は一段落したので、DWM付録基板で遊び中。
久々にハードウェアをいじっています、というか付録基板月間になっています。
ARM(Cortex-M3)基板で、加速度センサやSDカードスロットパターンなどが付いています。


SDカードは裏面につけるようになっています。これまでSDカードは使ったことが無かったので、まずは付録基板で経験値稼ぎです。
付録CDにUSBマスストレージドライバのサンプルLMが付いてくるので、DFU(Device Firmware Upgrade)モードで書き込みます。
たくさん繋がっているUSBデバイスとの相性の問題なのか、最初は書き込みソフト(DFU Demostration)が起動不能でしたが、他のデバイスを外したら問題なく書き込めました
(結果的には、DFU DemonstrationとPICKIT2の相性の問題でした)。

マスストレージデバイスとしての認識もあっさり出来て、こんなもんかと思っていたら...、



手持ちの512MBのSDカードは認識されませんでした...。何でだろう。