マイコン工作実験日記

Microcontroller を用いての工作、実験記録

マイクをつなげる

2011-09-30 22:59:49 | W-SIM
Willcomが一連の新端末を発表しましたが、やはりもうW-SIM端末は出ないんですかね。自分が構想をもっていたこともありますが、Bluetooth HFPとの両面待ちができる端末は、Willcomが生きる道を感じさせていいんじゃないでしょうか。フリスク端末ほどには小さいものは自作できませんが、少しは小型化できることを目指してSAM3ジャケットの製作も進めていこうと思います。

音声再生の方はなんとかメドがついたので、こんどは音声入力にとりかかることにします。ずいぶんと前から死蔵してあったシリコンマイクをSAM3のADCにつなげたところです。



BlueSAMで使ったシリコンマイクはデジタルマイクでしたが、こちらはアナログ出力のMEMSマイクです。アンプ内蔵ということなので、外付けのプリアンプも無しですませてSAM3Sに直結して具合をみてみるつもりです。アンプ内蔵とはいっても、AVREFが3.3VのADCでひろうには、出力の振幅は小さすぎるだろうと思われます。しかし、SAM3SのADC側にもアンプ機能が用意されており、2倍あるいは4倍のゲインを設定することができます。この機能の助けを借りれば通話に使えるんじゃないかと推測しているので、その確認が今回の目的です。



CMOSカメラをSAM3Sにつなげる

2011-09-28 11:09:03 | CMOSカメラ
当ブログへは、検索エンジンを利用して訪れるかたも多いようなのですが、その検索キーワードでしばしば見られるのが、「CMOSカメラ」とか「OV9655」のような具体的なカメラの品番です。CMOSカメラ自体が、かなり安価にそして容易に入手できるようになったので、自作してみたいと思われる方が多いのではないでしょうか?

これまでわたしは、OV9650やOV9655をマイコンとつなげたことがあるのですが、それにはAT91SAM9260を使っていました。SAM9260はCMOSカメラインタフェースを持っているので、ハードとしてはマイコンにCMOSカメラを直結すればいいだけなのですが、いかんせんARM9だというところがちょっとハードルが高かったところです。ピン数が多いので自作はしんどいですし、わたしのように安価なボードを買っても1万円近くしてしまいます。

そこで今回はとっても簡単な製作例をチラットお見せすることにします。



動画タイトルどおり、Cortex-M3マイコンであるSAM3S4BにCMOSカメラ OV7725をつないでいます。SAM3Sにはパラレルキャプチャという機能が備わっており、CMOSカメラを直結可能です。この機能を試してみようと思って作ったのがこのボードです。







パーツとしては、SAM3S4Bの載ったボード、SPI LCD, CMOSカメラの3点がほとんど全て。操作用にナビ・スイッチつけてみましたが、未使用です。ソフトは、カメラから読み込んだ画像を単にLCDへ書き出しているだけの単純なものです。SAM3S4Bには48KBの内蔵RAMがあるので、画像サイズを160x120ドットにするとちょうどうまいこと内蔵RAMに一画面分RGBデータを取り込むことができ、160x128ドットのLCDとも相性が良かったというわけです。

もっと説明したいところですが、詳細については、「トランジスタ技術、2012年3月号」にて解説予定です。って、ずいぶんと先のことで、まだ1行も原稿書いてないんですけどね。。。

SAM3+CrossWorksの覚え書き

2011-09-24 15:38:51 | SAM3
引き続き、MBAへの引っ越し作業を継続中です。いつも参照するドキュメントやコードをコピーするとともに、動作の確認。先週、CrossWorksを使ってビルドを確認したBlueSAMのコードもJTAGで書き込んで、動作確認。今回、引っ越しとともにCrossWorksとj-Linkのドライバを最新版にバージョンアップしたので、この機会にすべて設定をやり直してみながら、これまで疑問に思っていた点を再度確認してみました。
  • j-Linkのクロック設定。TargetのJTAGとしてj-Linkを選択すると、ディフォルトではJTAG Speedは Best Possibleになる。ところが、これではJTAGがうまく動いてくれないので、500KHzに設定。仮想マシンで動かすことによるオーバヘッドがUSB JTAG動作に影響しないか心配だったけど、問題なく動いてくれているようだ。
  • Flash書き込み時のVerifyエラー。SAM3S4Bのフラッシュへの書き込みをおこなうと必ずVerifyエラーとなる問題は解消されず。実際には問題ないので、スルーすることにする。SAM3S4Aへの書き込みでは、この問題は発生しない。
  • CrossWorksプロジェクトのProject Properties -> Preprocessor Definitionsには、次の2つを追加する。STARTUP_FROM_RESET, EEFC_FMR_FWS_VAL=3.

いずれもバージョンアップでは解決されませんでした。追加する定義は、ふたつともSAM3Sのスタート・アップコードに関連するもの。STARTUP_FROM_RESETがないと、スタートアップコードの先頭で無限ループしているだけで、コードが実行されない。これは意図的にそのようなコードになっているのですが、JTAGつないでいた時にはちゃんと動いていたコードが、JTAGなしで動かすと何も動かないことになってしまうので覚えておく必要があります。

EEFC_FMR_FWS_VALは、内蔵フラッシュにアクセスする際のウェイト数を指定する。ディフォルトでは2になっていますが、3にしないとSAM3Sの動作がとっても不安定。しばしばHard Faultを発生してくれる困り者。データシートでは64MHzまでのMCKで動かす場合には2でもいいことになっているのですが、実際にちょうど64MHで動かしてみるとアウト。マイコンのチップ固有の問題かもしれないと思っていましたが、SAM3S4AとSAM3S4Bの両方で経験したので、これはもはやレビジョンあるいはフラッシュの基本的な問題なのでしょう。SAM7の時もそうでしたが、ATMELのフラッシュはアクセスにウェイトが必要となる結果、実際のアプリでの性能が他社に劣る場合がみられます。このあたり改善してもらわないと、クロックが72MHzとか96MHzとかになってもあまり嬉しくないよなぁ。

さて、こうしてビルドしたバイナリをフラッシュに焼いて、その動作確認のためにシリアルでつなごうとして、わかったこと2点。
  1. Windows 7にはHyper Terminalがない。皆さんよくご存知のことでしょう。わたしもどこかで読んだ覚えはあるのですが、これまでずっとXPを使ってきたのですっかり忘れており、スタートメニューの中を探してしまいました。
  2. 一方、Mac OS Lionには まだ cuコマンドが残っている!!

レガシーなデバイスを代表する扱いとなってしまったシリアルポート。Windows 7でHyper Terminalがなくなっても、普通の人は何の不自由も感じない時代になったということなんですね。Mac OS Lionでもモデムのサポートがなくなったと聞いていたので、cuが残っていることには逆の意味での驚き。いまだにuucp時代の遺物を必要とするアプリがあるんでしょうか?「さすがにcuはチョットねー」と思ったら、screenがあったのでシリアル接続にはこいつを使うことに。screenも原型は 4.2BSDだか4.3BSDの頃からあったと記憶していますが、ずいぶんと機能が増えているようですね。



9月29日追記:
SAM3S CPUサポートパッケージのアップデートがあったので、これを当てたことろSAM3S4Bへのフラッシュ書き込みエラーの問題が解決された。また、このアップデートによりEEFC_FMR_FWS_VALのディフォルト値も変更になったので、自分で変更を指示する必要がなくなった。

SWD用変換アダプタ

2011-09-21 22:44:00 | Weblog
以前から用意しようと思っていた変換アダプタをようやくと製作。



標準的な20ピンのJTAGコネクタから、BlueSAMで使用している6ピン独自配列SWDへの変換アダプタです。6Pのフラットケーブルを見つけることができなかったので、10Pのものを流用して済ますことになってしまいました。まだコネクタを挿し間違える可能性は残っていますが、ジャンパケーブルでつなぐよりは安全で、なにより図面を確認しなくても接続できるので便利になりました。

品物は忘れたころにやってくる

2011-09-18 11:26:08 | Weblog
先月E'go Chinaに注文してあったSPI LCD (JD-T1800)が先週届いていたことを思い出したので開封してみました。以前にも購入してBlueSAMで使っているLCDなのですが、以前購入した際には 9.9 USDだったのが、いつのまにか6.8USDに値下げされているのの見つけて、ついついポチッとやってしまっていたのでした。前回は10日ほどで届いたように思うのですが、今回は3週間ほどかかり、すっかり注文したことも忘れていました。

前回は梱包の様子の記録をとっていなかったので、今回は撮影しておきました。まずは封筒。内部がプチプチになっている封筒です。




中身はさらにプチプチでくるまれており、




そして、今度はラップでグルグル巻き。




そして、LCD本体は帯電防止袋の中に入っていました。2枚注文したので、ちゃんとガラス面が向き合うように2つ折りにして、間には段ボール紙を挟むことで保護されています。




前回の注文では帯電防止袋には入っていなかったので、梱包方法を改善したんでしょうか。あるいは、担当者によって梱包にも違いが生じるのか、それとも同じ人でもその時の気分で丁寧なこともあれば、手抜きのこともあるんでしょうか。この、いずれであってもおかしくないですね。

震えていただけだった

2011-09-16 20:49:55 | W-SIM
なんとも再生音のさえないSAM3Sジャケットでしたが、ようやくと原因がわかりました。

先週末の実験ではDACにアンプを直結していただけだったので、試しにRCフィルタによるLPFをアンプの前段に追加してみました。ところが、まったく何の変化もみられません。単純なRCフィルタなので急峻な周波数特性はないにしても、少しは広域ノイズが低下すると思っていたので、大きく予想がはずれました。再生を繰り返しながらスピーカの向きを変えてみたりしていた際に、スピーカをしっかりと持つと高音ノイズがきれいに消えることに気がつきました。なんのことはない、スピーカ自身が振動してしまってノイズを発生しただけでした。ちゃんと固定しないとノイズがのってしまうようです。




確認のために、スピーカをはずして、オーディオジャックを取り付け。イヤフォンで聞いてみると、高域ノイズはなくきれいに聞こえています。イヤフォンにしたので、アンプのボリュームは最低にしぼってちょうどいい音量となりました。耳元にあてて使うことを考えれば、イヤフォンやヘッドホンを鳴らすことのできる出力があればいいのでしょうから、こんなに大きな出力のアンプは不要ですね。しかし、着信音を鳴らすためには、やはりスピーカからある程度大きな音を出したいところです。通話音と着信音には別々のアンプとスピーカを用意するもんなのかなぁ?

とにかくDACで問題なく音声再生ができることを確認できたので、次はマイクをADCにつなげてみようかと思います。



引っ越し作業中

2011-09-13 23:15:31 | Weblog
4年間つきあってきたLet's Note CF-T5に見切りをつけて、あたらしいノートPCに引っ越すことにしました。できればこんどもLet'sにしたいところだったのですが、値段的にもキツイので見送り。今回は流行りにのってMBA 13インチを購入しました。




とにかく日常的に使うマシンがすぐに欲しかったので、渋谷のApple StoreでMBAを購入して、持ち帰り。初めてのMacにとまどいながらも、少しずつ引っ越し作業を開始したところです。最初から覚悟していたことではありますが、実際にMacを使うとなると、いろいろとMac対応していないツールがあることを思い知らされます。

まず最初がSAM-BA. ATMELのARMマイコンに共通で使えるフラッシュ書き込みツールです。Windows版とLinux版があるものの、Mac OS版が無い。JTAGがあれば不要のツールのように思えるかもしれませんが、何もコードを書かなくても、USBでつなぐだけでMCUが生きていることを確認できるので、ハードの動作確認には重宝します。

そしてATMELのJTAG SAM-ICE。こいつはJ-LinkのOEM版なのですが、そもそもJ-LinkがMac OS対応していません。その他にも、TIのPurePath StudioもWindowsでしか動きません。改めてWindowsに依存していたことを思い知らされました。

しょうがないので、Mac OS lion上の仮想マシンでWindowsを動かすことでこの問題を解決することにしました。調べてみるとVMWare Fusionは、まだLion対応ができていないらしい。なんでももうすぐ新しいバージョンが出るらしいのですが、すでにLion対応しているParallels Desktop 7を導入してみました。(キャンペーンで安売りしているところもあったし)。そんなわけでWindows 7を入れて、Windows版のCrossWorks for ARMをインストール。CrossWorksでは違うマシンにライセンスを移すことができるので、CF-T5のXP環境からライセンスを削除して、Windows 7/Mac OS Lionにライセンスを登録。上に掲載した画像は、CrossWorksでBlueSAMのプロジェクトをビルドした様子です。無事にビルド完了しました。こうやってみると、仮想マシンで動いているのか、ネーティブで動いているのか区別つきませんね。

まだJTAGの動作確認や、PurePath Studioのインストール作業も残っているのですが、ボチボチとやっていくことにします。こうしてみると、開発ツールはWindows版ばかりなのでBootCampした方が良かったようにも思えてきますが、Mac OSに親しんでみるためにも、Parallelsの仮想マシンで使っていくつもりです。




音声再生できたけど、音悪し

2011-09-11 12:35:07 | W-SIM
SAM3S4BにつなげたW-SIMからの音声再生ができました。ほとんどこれまでのコードをコピペするだけで、新たに書くのはDACの部分だけだったので、ここまでは難しいことは何もありません。今回使用した回路はこんな具合↓(音声関連の信号のみ示しています)。



音声信号は、PCMSYNCに同期してSSCで受信します。受信した音声データはμ-Law圧縮されていますので、これを展開してDACに送るだけです。DACの変換は音声信号のサンプリング周期である8000Hzと同期しておこなう必要がありますので、PCMSYNCを外部トリガとして使用しています。実際の処理としては、次の処理もおこなっています。
  • 40サンプル毎のDMA転送。8000Hzでの受信の度の処理では割り込み負荷が大きくなるので、40サンプル毎にまとめて処理することにしました。5msの遅延が生じることになりますが、この程度は気にならないでしょう。40サンプル分をDMAで転送して、DMA完了を割り込みで検出します。
  • 受信したu-Lawデータを展開してDACに40サンプル毎にDMA転送して再生させています。展開されたリニアPCMデータは符号を含めて14ビットの長さがありますが、DACは12ビットです。そこで12ビットに縮める処理もおこないます

このようにハードもソフトも単純なのですが、実際にやってみると再生音が良くありません。高音部分にノイズがかぶってしまっています。音声で伝達される内容は聞き取れますけど、ノイズが耳障りです。12ビットに縮める処理として最初は14ビットのうちの上位12ビットを切りだしていたので、これを下位12ビットに変更するとともに符号反転が生じないように飽和処理を入れてみましたが、症状は改善されません。何らかの対策を施さないと実用にはならない感じ。DACの出力をアンプに直結しているだけなのがいけないのでしょうか? 試しにLPFを付け加えてみようかな。

単なる音声再生実験を実施するのにいちいち電話をかけていたのでは通話料金がもったいないので、一時的にフラッシュに試験用音声データを焼いて再生試験だけできるようにハード修正を施すことにします。

消えた灯火(ともしび)

2011-09-07 00:23:58 | Weblog

それは何の前触れもなく突然やってきました。過去4年の長きにわたって、日夜を問わず常にわたしの手元を照らし続けていた灯火が突如として失われ、わたしは暗闇に突き落とされてしまったのです。もはや上下左右の何処を彷徨っているのかさえ判別できません。指先は確かに壁のどこかをたたいてはいるのですが、その指し示す場所さえ見えなくなってしまいました。


愛用のLet's Note CF-T5のバックライトが突然消えました。電源を入れなおすと、数秒は息を吹き返したかのように光るものの、すぐに消えてしまいます。バックライト、あるいはそのインバータがイカレタものと思われます。薄ぼんやりと画面が表示できていることはわかるものの、マウスカーソルが壁紙上のどこにあるのかさえよくわかりません。明るい場所では、もはや何も見えませんね。

検索して調べてみると、Let’s Noteの液晶パネルはとっても薄くて取り外しがとても難しいらしい。素人が自分でバックライトを交換しようなどと企んでも痛い目にあうだけのようです。これで3代目のLet'sですがバックライトがダメになったのはわたしは初めてです。購入時には常に3年保障を申し込んでおり、毎度のようにディスクやキーボード交換をしてもらっていますが、その保障期間もすでに切れてしまっています。

日頃、遅くなりすぎたマシンにいらついていたので、どうやら新しい常用マシンを用意すべき頃合いのようです。 作業中のプロジェクトの資産はすべてLet'sに入っているので、その引越しや環境整備も必要になってしまいます。当面はCF-T5に外部ディスプレイをつなげることで作業を継続していこうかと思います。そのため、しばらく作業は大幅にペースダウンとなりそうです。

WCA-009の製造に(わたしにとっては)大金を投入し、その回収も進んでいないこの時点でPCへの出費はとっても痛い!!


SAM3ジャケット実験ボード

2011-09-03 21:07:02 | W-SIM
しばらくBluetooth/WCA-009関連ネタばかりだったので、久しぶりにW-SIMネタも並行して進めようかと思います。



SAM3S4Bボードをいつものように秋月A基板に載せて、新たなW-SIM実験ボードを組んでいます。今回の目的は、CODECを使わないW-SIMジャケット製作を目指して、その基礎実験を積むこと。SAM3S4Bには12ビットのADCとDACが備わっているので、これらを生かしてCODECを使わないジャケットを作ってみようと思います。これは、今年の目標のひとつでもあります。もっともスピーカやマイクをつなげるのにアンプが必要となってしまうので、部品の点数や値段的には、それほど優位性はないかもしれません。それでもSAM3Sの持つ機能をできるだけ使ってみる良い経験になるはずです。

まずは第一段階として、W-SIMソケットとスピーカ、アンプを載せてみました。アンプには秋月のアンプ基板を使っています。簡単な構成ですが、これだけで、受信した音声信号の再生はできるハズです。