« 2012年4月 | トップページ | 2012年6月 »

2012年5月

2012年5月30日 (水)

プリアンブル、あるいはAGC

葉山先生が、微弱無線モジュールの評価をされているようで、blogにレポートがあがっている。
ちょっとコメントした。

私が書き込んだ意義はともかく、言葉が少なすぎというか不親切かな...と反省したので、訊かれもしないのだけれど、話をひとつ。
その道の人にはいまさら当然なのだろうけど、プリアンブルの意義というか目的。

0と1を並べることで、続くデータの読み取りクロックを同期させるという意味もあるけれど、同期させるだけなら、データ本体にもエッジがあるので、もっと短くても十分だと思っていたのだが...



昔々、DP83902なんてチップをいじっていた頃。(カニチップ8019ASの中身だ)

Ethernetのパケットにも長いプリアンブルが付いている。
このデータシートにEthentの波形とチップの動作について解説が出ていて、色々勉強になった。
(主に)それによると。

------

デジタル通信といえども、送受信の回路はアナログ的に動作している。

受信側では、何かを基準に、信号が0か1かを決めなければならないのだけれど、この基準(閾値)をどうやって設定するか。

一般的な3.3Vロジックとかなら、1/2Vccとかにすればよいけれど、送信側からの距離や絶対的な信号レベルで、何倍も変動するような信号相手に、決め打ちの値は適用しにくい。



プリアンブルは、0と1を交互にずらっと並べている。
0と1は同数だから、これを時間的に平均(積分?)すると、0.5になる。
このアナログ値をコンパレーターの閾値に使って、0/1を判定すると、処理も簡単で、うまく動きそうだ。

これを想定して、データの本体を送る直前にプリアンブルを渡し、そのときの受信側の閾値を整える。
プリアンブルの頭のところは、いくらか壊れるのだけれど想定内。

よって、プリアンブルだけでなく、以降のデータ本体も、0と1の数をなるべく揃えてやると閾値が安定し、出力されるデータも安定しそうだ。

時間的にアナログ信号レベルやオフセットが何倍も変わっても、短時間内でだいたい同じになることが期待できればよさそう。
このあたりの時定数(AGCか)は、通信内容次第の匙加減か。

------

また、無信号時、受信側のロジックレベルでは、0と1が不規則に出力されることになるので、うまく処理してやらないといけない。

このあたりは、直接信号が出てくるような無線モジュールでは、どれも同じ事情になるみたいだ。

------

で、Ethernetでは、この閾値の変動自体を監視しているとか。
信号の振幅は、10BASE-2では-1Vなのだけれど、複数のノードが同時に送信すると、時間平均値が-0.5Vからさらに下がる(確率的にロジック1の時間が、50%以上になる。)
これをコリジョンとして検出し、相当の処理を行うようだ。


まったく、うまく出来てると感心しきり。

10BASE-2は、同軸ケーブルにバス接続されたノード間で通信しているのだけれど、無線になってもほぼ同じ方法で通信を行っているらしい。

いまどきの通信は、普通に位相振幅変調とか、M系列変調を使うので、プリアンブルでゲインをコントロールなんてしないだろうけど。

シンプルな通信の需要はなくなることは無いだろう。

------

こういった手法をうまく使うと、マウスの壁判定なども、まだまだ安定すると思うのだが....

最近のマウスは、迷路解析の手法や、走行軌跡の作成に話題が集まっているけれど、こういったセンシングの方向にも、まだまだテーマがある。
個人的には、こっちのほうに興味があるのだが。

| | コメント (0) | トラックバック (0)

2012年5月27日 (日)

STM32L151続き

プロジェクト一式は、F103のを流用。
ヘッダーファイルは、stのサイトから、ひとまとまりのを落としてくる。
とりあえずstm32l1xx.h と、system_stm32l1xx.hがあれば十分かな。

ペリフェラルの初期化は、F200のをベースに...と思ったけど、F200とも大分違う。
特にsleep modeとかの回りは全部書き下ろし。

------

ちょっとはまったりしたけど、いつものモニタが起動するところまで来た。

120527

stm32のUSARTのプリスケーラーは、小数点以下も設定できるので、16MHzのペリフェラルクロックで921kbpsで動作できる。(分周比 17/16≒1.08)

------

確かに32MHzの設定で動くのだけれど、AHB クロックのプリスケーラを1/2に設定しないとうまく動かない。
リファレンスマニュアルには、32MHzまでで動作するとあるのだが....
どこか間違ってるか?

------

定番のオーバークロックを試してみる。

中途半端な分周比が選べないので、細かい設定は出来ないけど、概ね36MHzではうまく起動するけど、48MHzの設定では動作しない。
まあ、ここからしても、32MHzの設定は間違ってはいないようだ。

------

32MHz時の動作電流を測ってみると、12mAほど。

L151のデータシート上の電流値は、9.6mA(typ)、基板上に一緒に付いている232Cドライバが、データシート上は1.5mA~5mAなので、大体良いところかな。

------

前にL151のタイマーは、6個と書いたけれど、実際には4+2+2で、8個のようだ。
位相計数カウンタは、2~4と9で使えるので、減っては無い。
(Timer9は2chのみ)

| | コメント (0) | トラックバック (0)

2012年5月25日 (金)

STM32L151

チップが手に入ったので、早速いつもの基板に貼ってみる。

120525

いつもの48ピンの、STM32F103とピンコンパチ。

書き込みは、いつものflash loder(V2.20)...は対応して無いので、stのサイトから最新版(V2.5)を落としてくる。

あれっ、今更だけれど、このバージョンからF4に対応してるのか。
リリースは去年の11月だから、半年遅れだ。
L151は2.4から対応しているみたいだな。

とりあえず、あっさり起動。チップの認識はできているようだ。
ちゃんと準備すれば、普通に使えそうな雰囲気。

------

起動を確認してから、データシートを斜め読み。

なるほど、F100からはいろいろ追加されているけれど、F2までは機能が無いのね。
それで、L15x(1.5?)か。

ざっと、マウスに影響しそうなところで、F100からの変更点は、

・動作電圧 1.65V~3.6V (F100は2.0V~3.6V)

・クロック上限32MHz

・タイマが6個ある。(F100は4個、systickは別として)
 ただしTIMER1(高機能タイマ)が無くなっている。(位相係数カウンタは、3つまでになった。)
 32ビットタイマは無い...無念。

・FLASH書き換えはUSART1,2どちらからでもできる。(F200と一緒、未使用ピンの処理が要る。)

・IOピンの機能切り替えビットが設定されている。(F200と同様)

そのほか気になったところで、

・CANが無い。

・RTCが、真っ当なRTCになっている。

などなど....

------

ある意味、F100よりさらにローエンドな感じもする。
L15xは、F100に対して色々改良されているけれど、改良版のF100というわけではなさそう。
F100とL15xでターゲットが違うってことだろうな。

マウスみたいな、電池駆動で単独で動くようなものにはL15xの方が向いてるかも。
使い分けるようになるかなあ。

| | コメント (0) | トラックバック (0)

2012年5月22日 (火)

Kinetis

7ビットパリティなしの話は、事実上終わったのだが、その過程で気になるものを見つけた。
しばらく前に出たものだけれど、表題のFreescaleのcortex-M4、K20シリーズ。

現在主流のSTM32F400でもいいのだけれど、これは64ピンが一番小さいパッケージで、マウスに使うには、もはや微妙に大きい。

100MHzオーバーのクロックなんて、ますます小さくなる電池のことを考えても、使いきれないので、そこまでなくてもいい。
SRAMも100KBなんて、マウスにはオーバースペックだ。
それぞれ1/4くらいで良いから、小さいパッケージのがあればなあ...と感じていたところ。

------

Kinetisには、36ピンや、48ピンといった小ピンがラインナップされている。
このクラスはメモリも少ないし、動作クロックも低いが、それはそれで十分ではある。
まあ、いまどきの物なので、基本は押さえられている。

ざっとみて、位相計数タイマーやADなど、マウスに必要なものはそろっているように思える。
Freescaleは昔から癖があるので、もうちょっとちゃんと見てみないと。

個人的には、STM32F103の小ピンがお気に入りで、数年来ずっと使っているのだけれど、そろそろ次世代を検討すべきか。

ここのところも、なんだかんだで趣味の時間が取れないのだけれど、評価ボードか、チップ単体でも入手して評価してみるか。

| | コメント (0) | トラックバック (0)

2012年5月18日 (金)

解決(?)

解決策を求めて、STM32のマニュアルを眺める。

リファレンスマニュアルの770ページ。

引用

0.5 stop bit (reception in Smartcard mode): No sampling is done for 0.5 stop bit. As
a consequence, no framing error and no break frame can be detected when 0.5 stop bit
is selected.

ここまで

うーん、スマートカードモードに、って書いてあるけど、0.5ストップビットなのは送信時だけで、受信時はストップビットを見なくなるんじゃないかな?

内部ロジックを想像してみても、フレーミングエラーが出なくなる、ってのもそれっぽい。

------

思い立ったらテスト。

120518

送信側は、昔作ったLPC2129ボード。
7ビットパリティなしの設定でテキストデータを送信。
LPC2100なので、この設定での動作もできる。

受信側はいつものSTM32F103ボード、8ビットパリティなし、0.5ストップビット設定。

ざっと動かしてみる。
問題なく正しくデータが受け取れる。

------

要するに0.5ストップビット設定は、事実上0ストップビット(?)の設定か。

受信データのMSBは送信データのストップビットがサンプリングされるので、ロジック1固定となっている。
正しく(想像通りに)動作しているようだ。

データは、上位1ビットをマスクして、残り7ビットを使う。
フレーミングエラーがほしければ、自分でデータのビット7を監視すればよし。

で、データが連続していても8ビット目をサンプリングした時点で、受信側のシーケンサは初期値に戻り、すぐ次のスタートビットのエッジに同期することが出来ているようだ。
当たり前だけど、受信エラーの類も出てなくて、ごく普通に動作している。

めでたく(?)7ビットパリティなし(事実上)のデータ受信が可能になった。

これで、60KHzインターバル割り込みを廃止できるはず。

------

こういったものは、パズル的な要素、推測が楽しい。
電子工作の楽しみでもある。

stm32はこんな使い方もできる、と紹介するものでもないし、これについてオフィシャル(STとか)に投げて困らせるものでもない。
趣味でこそ、の楽しみ。
こんなの仕事とか宿題で使っちゃいけませんよ。

イザという時に、裏でごそごそやるために、ストックしておく....

------

それはそれとして、STM32F103とほぼ互換で低消費電力の、STM32F15xなんてチップも有るのに気づいた。

現状ただのリップルカウンタでしかないSTM32F103のRTCも、ちゃんとしたRTCにアップグレードされていて好印象。

このあたりのコンビネーションで、目標は達成できそうだ。


------

解決策というのは、たいてい足元に落ちているものだ。

| | コメント (0) | トラックバック (0)

2012年5月16日 (水)

探し物

とある用途のワンチップマイコンを探しているのだけれど、いつものラインナップには、しっくりくるのがなくて、探査範囲を拡大中。

・乾電池駆動なので、クロックを低く保って(8MHzくらいで十分のはず)低消費電力動作ねらい。(通常動作で、10mAくらいで動くと良し)
・内蔵オシレーターで動くと良し。
・オンチップSRAMがそれなりに欲しい。(10k~32kバイトくらい)
・なるべく小さいパッケージ(48ピン以下くらい)
・UARTで7ビットパリティ無しが選択できる。
・I2Cをもっている。
・RTCが欲しい。
・SPIがあるとうれしい...

STM32Fxxxのシリーズは、7ビットパリティなしが選択できない。
ソフトウエアでUARTを構成すると、低いクロックで動かせなくて、結局低消費電力になりにくい。

LPCのCortexM3は小ピンパッケージが少ないし、ARM7TDMIはRTCとかが良くない...

スペックからすると、なんだかんだ言っても、8ビットクラスでは荷が重いようだ。
ターゲットは32ビットの小ピンパッケージなのだけれど...なかなかないなあ。

| | コメント (3) | トラックバック (0)

2012年5月15日 (火)

復活

秋月に、マウスのキーパーツが復活している。

http://akizukidenshi.com/catalog/g/gM-04555/

以前は、何時でも普通に手に入ったのだけれど。

------

例の事故以来、しばらく線量計の自作が流行った。
このインバーター基板は、いくつかのGM管キットの高圧電源用に流用されたせいか、すごく品薄になった。

趣味の電子工作とはいえ、実用的な計測器を作るのは結構しんどい。
校正する方法がないと、なんだか組み立てて終わり、って感じになってしまう。
いまや、簡易的な線量計は、ずいぶん安価なものも出回るようになったし、キットも最近は固体シンチレーターが流行っているようだ。

なんだかんだで、高圧電源の出番は終わったようだ。
やれやれ。

------

1年以上も経って、ようやく通常の流通に戻ってきたのかも。
一応、DIGIKEYとかでも手には入ったのだけれど、秋月で買えるならそれに越したことは無い。

最近は、blogに上げられるようなマウスネタが、なかなか無いのだけれど、そろそろ再開するのに良い時期なのかもしれないなあ。

| | コメント (0) | トラックバック (0)

« 2012年4月 | トップページ | 2012年6月 »