マイコン工作実験日記

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

DTMFを検出する

2008-11-30 21:11:03 | SLIC
フッキング操作の検出と、ダイアルトーンの送出はできたので、次はいよいよダイアル番号の検出をせねばなりません。ダイアルされた番号は電話機の設定に応じてDTMF(トーン)信号またはパルス信号で送出されてきますので、このどちらか(あるいは両方)を検出してやる必要があります。先の記事で書いたように、今更パルス信号でもないので、おのずとDTMF信号を検出することになります。ところが、Si3215ではDTMF検出の機能はサポートされていません。Si3210やSi3216を使えば、DTMFの検出ができるのですが。。

そういうわけで、DTMFの検出はマイコン側でやってやらねばなりません。電話機が生成したDTMF音はu-LawにエンコードされたPCM信号としてAT91SAM7XのSSCで受信できるので、これを解析してDTMF検出することになります。Googleさんに助けを求めてARM用のコードを探すと、簡単にonARMにあるSTM32用のコードが見つかりました。ターゲットはSTM32用となっていますが、DTMF検出の部分は全てCで書いてあるのでAT91SAM7Xで使うことには何の問題も無さそうです。ただし、Keil/ARMの息がかかっているので、KeilのuVisionで使うことという条件付きになってしまっていました。

しかたなくもう少し探したところ、NXPのサイトでLPC2138を使った電話の自動応答装置のプロジェクトを見つけました。しっかりとした説明とソースも含まれており、かなり参考になる記事です。ちょっと調べてみたら、NXPの前身であるPhilipsが2005年に開催したARM Design Contestで最優秀賞をとったTAM-TAMという作品のようです。ENC28J60を使ってethernetをつなぎ、TCP/IPにはuIPを使うという定番がキッチリおさえられています。基板もきれいにこさえて、開発にはuVision/Keil使っているみたいなので、やはり玄人さんが趣味で作った作品という感じでしょうか。こちらのコードもすべてCで書いてあり、Goertzelのアルゴリズムに基づいてDTMFが使う8つの周波数成分毎のエネルギーを計算しています。Keilのコードもそうでしたが、整数演算で済むようにあらかじめ入力されるサンプルの値はオーバフローが発生しないようにレベルを調整しておく必要があります。このTAM-TAMの場合にはサンプルの値は-256~256の範囲にあることを想定しているようです。

SLICからのPCM信号はu-Lawになっているので、これを展開して-256~255の範囲におさままるようにテーブルで変換してからTAMA-TAMのDTMFprocess()関数を呼び出してやると、いとも簡単にDTMF検出できちゃいました。うーん、デジタル信号処理って素晴らしいですねぇ。実際のところ、変換しないでu-Lawのままで直接 DTMFprocess()関数を呼び出しても DTMF検出できてしまったのですが、誤検出する可能性が高くなるかもしれないので、一応変換してから処理することにしました。

以下、動作の様子です。
]]] MMnetSAM7X Console Monitor [[[
> slic init
ProSLIC detected.
1652ms
> dtmf start

"dtmf start"でDTMF検出を呼び出すPCM受信タスクを起動しています。
> Off-Hook.
DTMF: 0
DTMF: 1
DTMF: 2
DTMF: 3
DTMF: 4
DTMF: 5
DTMF: 6
DTMF: 7
DTMF: 8
DTMF: 9
DTMF: *
DTMF: 0
DTMF: #

受話器を取り上げて、ボタンを順番に押していくと、きれいに認識できています。
On-Hook.
Off-Hook.
DTMF: 0
DTMF: 1
DTMF: 2
DTMF: 3
DTMF: 4
DTMF: 5
DTMF: 6
DTMF: 7
DTMF: 8
DTMF: 9
DTMF: *
DTMF: 0
DTMF: #

> On-Hook.

いったんオンフックして、再度オフフック。今度は、リダイアル・ボタンを押してみました。さきぼどの順番で欠けることなくきれいに認識できています。思わず、ヤッター!と声が出てしまいました。DTMFの検出なんてコードの実装に時間かかるんじゃないかと心配していたのですが、あっけなくできちゃってビックリです。

フッキングの検出とダイアルトーン

2008-11-27 23:05:38 | SLIC
SLICの初期化と音声の送出の確認はとれたので、次にオンフック/オフフック操作の検出とダイアル・トーンの送出をやってみました。

オンフック/オフフックでは割り込みをかけられるので、これを使って検出をおこなっています。オンフック/オフフックに伴い回線ループが開/閉されると、Loop Closure Transition Interruptが発生します。この割り込み要因はレジスタ19を読んで判別できますが、これだけでは状態が変化したことがわかるだけです。そこで、さらにレジスタ68を読んで実際のフッキング状態を確認することで、オンフック/オフフックのいずれであるかを判断してやります。
]]] MMnetSAM7X Console Monitor [[[
>
> slic init
ProSLIC detected.
1652ms
> Off-Hook.
On-Hook.

> slic ring
> Ring Trip
On-Hook.

>

ちょっと特別なのが、着信に対して応答する際のオフフック操作です。呼出音がなっている最中にオフフックした場合には、ループ状態変化の割り込みではなく、Ring Trip Interruptが発生します。ベルとベルの間の1秒間の休止期間の間にオフフックすれば、Loop Closure Transition Interruptになります。Ring Tripというのは電話屋さん用語なのでしょうが、日本語では何と訳すのでしょうか?

ダイアルトーンの送出はとっても簡単です。オシレータに周波数と送出レベルを設定して、オシレータをイネーブルするだけ。周波数の設定はすでにSLICの初期化処理のなかでやっているので、単にイネーブル/ディスエーブルするだけでダイアルトーンの生成開始/終了ができちゃいます。アプリケーションノートAN35に記載されているレジスタ設定値は米国仕様でしかもSi3210/3211用の値なので、日本仕様の400HzをSi3215で生成できるように設定値を計算しなおしてやります。計算の具体的な手順はデータシートで説明されていますが、Windows GUIソフトを使って求めることもできます。GUIソフトは、普通は評価ボードをつなげて使うのですが、ボード無しでも使えるようになっており、各種レジスタの設定値を求めることができます。気がきいてますね。

AN35に記載されているレジスタ設定値を読んで、初めて知ったことがひとつ。上記のように日本ではダイアルトーンは400Hzの単一トーンですが、USでは350Hzと440Hzの和音なんですね。確かに、そう言われてみれば、「ポー」というサイン波的な音ではなくて、「ボー」という感じに聞こえる音ですよね。改めて納得した次第です。Wikipediaによると欧州では425Hzの単一トーンが一般的なようです。

おっと、ひとつ確認したかったことがあったのを思い出しました。ダイアルパルスの検出です。今どき、電話機をわざわざパルスダイアルの設定に設定にすることも無いので忘れてましたが、パルスって一定のタイミングで回線ループの開閉をおこなっているだけですから、オンフック/オフフックで検出できていいはずです。さっそく、実験してみました。
>
> Off-Hook

>
> On-Hook
Off-Hook
On-Hook
Off-Hook
On-Hook
Off-Hook
On-Hook
Off-Hook
On-Hook
Off-Hook

>
> On-Hook

>

まずは、電話機を20PPSのパルスダイアリングに設定します。こういう時、安もの電話機はスライドスイッチだけで設定変更できますから、便利ですねぇ。受話器をオフフックした時に表示されたのが最初のOff-Hookメッセージです。

続いてダイアルボタンの5を押してみました。On-Hook/Off-Hookがバラバラと連続して5回表示されました。最後のOn-Hookは実際に受話器をオンフックした際のメッセージです。電話機の設定を10PPSに変更すると、表示される間隔が目に見えて長くなるのがわかります。

パルスダイアリングの検出の仕掛けは確認できましたが、わざわざこれを使うこともないでしょうから、実験はこれでオシマイにしてパルス・ダイアルのデコード処理には取り組まないことにします。

SLICの初期化

2008-11-24 22:39:35 | SLIC


Si3215MLにはたくさんのレジスタがあるので初期化だけでも大変なのではないかと心配していましたが、アプリケーションノートのAN35に手順が明記されていました。RESET端子をLOWにする事から始まり、キャリブレーションも実行したりして、全部で28ステップにも及ぶ手順が記載されています。最初はAN35のとおりにプログラムを組んだのですが、実際に動作させたり調べたりした結果、以下の点を変更しています。
  1. 呼出し周期の変更 呼出し音は米国仕様の2秒鳴って4秒止まる設定になっているので、評価ボードでの実験の時と同じように日本流の1秒/2秒に変更
  2. オンフック電圧の変更 オンフック時にTIP/RING間に加わる電圧を48Vから12Vに変更
  3. オシレータ1の周波数設定の変更 日本仕様ダイアルトーンの生成に備えて400Hzに変更
オンフック電圧については、このあたりの情報を元に12Vにしてみました。実験用の電話機は6Vでも動作してくれました。

呼出時にかかる電圧としては、75Vを設定しています。ここも低くできそうなので、試しに74番レジスタを48Vにしてみたのですが、キャリブレーションが終了できなくなってしまいました。おそらく関係する他のレジスタの設定変更も必要となるのでしょう。

初期化ができたので、早速音声出力の試験です。全ての操作はモニタから対話的にコマンドを入れて行っています。
]]] MMnetSAM7X Console Monitor [[[
> 
> slic dump
   0: 33    1: 88    2: 00    3: 00    4: 00    5: 00    6: 60    8: 02
   9: 00   10: 08   11: 33   14: 10   15: 00   18: 00   19: 00   20: 00
  21: 00   22: 00   23: 00   28: 00   29: 00   30: 00   31: 00   32: 00
  33: 00   34: 00   36: 00   37: 00   38: 00   39: 00   40: 00   41: 00
  42: 00   43: 00   48: 00   49: 00   50: 00   51: 00   52: 00   63: 54
  64: 00   65: 61   66: 03   67: 1f   68: 00   69: 0a   70: 0a   71: 00
  72: 20   73: 02   74: 32   75: 10   76: 00   77: 00   78: 00   79: 00
  80: 00   81: 00   82: 00   83: 00   84: 02   85: 02   86: 00   87: 00
  88: 00   89: 00   92: ff   93: 34   94: 00   96: 1f   97: 1e   98: 10
  99: 10  100: 11  101: 11  102: 08  103: 88  104: 00  105: 00  107: 08
 108: 00
   0: fb97   1: 23fe   2: a981   3: 4b9e   4: c7dc   5: ff34   6: 3e57   7: fffb
   8: b2a9   9: ef71  13: edb6  14: 1a7e  15: e6ff  16: c333  17: dfec  18: 42c7
  19: bf6c  20: aeff  21: 2bdf  22: d94a  23: 32f8  24: e3f7  25: 236d  26: 5783
  27: bef9  66: c7ff  69: af54  70: e0b6  71: 68fd  72: f45d  73: f735  74: ffaf

> slic init
ProSLIC detected.
1652ms
> 
> slic dump
   0: 33    1: a8    2: 00    3: 00    4: 00    5: 00    6: 60    8: 00
   9: 00   10: 28   11: 33   14: 00   15: 00   18: 00   19: 00   20: 00
  21: 00   22: 03   23: 00   28: 00   29: 0c   30: 40   31: 00   32: 00
  33: 00   34: 00   36: 00   37: 00   38: 00   39: 00   40: 00   41: 00
  42: 00   43: 00   48: 40   49: 1f   50: 80   51: 3e   52: 00   63: 54
  64: 11   65: 61   66: 03   67: 1f   68: 04   69: 0a   70: 0a   71: 00
  72: 08   73: 02   74: 32   75: 10   76: 00   77: 00   78: 08   79: 00
  80: 07   81: 28   82: 3f   83: 3f   84: 01   85: 01   86: 00   87: 00
  88: 01   89: 00   92: 60   93: 38   94: 07   96: 00   97: 00   98: 11
  99: 10  100: 10  101: 0f  102: 03  103: 23  104: 09  105: d8  107: 07
 108: eb
   0: 7e70   1: 0038   2: 0000   3: 7870   4: 007d   5: 0000   6: 0000   7: 7ef0
   8: 0160   9: 0000  13: 4000  14: 4000  15: 1000  16: 3600  17: 1000  18: 0080
  19: 07c0  20: 376f  21: 1b80  22: 8000  23: 0320  24: 008c  25: 008c  26: 0010
  27: 0200  66: 1000  69: 00da  70: 6b60  71: 0074  72: 79c0  73: 1120  74: 3be0

> 
まずは初期化処理を実施。リセットして、各種レジスタの設定ならびにキャリブレーション。具体的にどのような調整をしているのかという詳細はてんで理解できていないのですが、全ての初期化処理を実施するのに1.652秒かかっています。初期化処理の最後ではSLICをアクティブ状態とし、オンフック電圧が印加されます。

> slic ring
>
> slic active
>
試しに呼出音を鳴動させてみます。うん、ちゃんと1秒/2秒の周期で鳴ってくれます。アクティブ状態に戻すことで、呼出音を止めます。掲載した写真では電話機のLEDが赤く点灯しているのがわかりますが、この電話機は呼出音の鳴動周期に合わせてLEDが点灯/消灯します。
> hello start
started.
> hello stop
> 
SSCを使ってSLICに対して音声PCM信号を送出するタスクを起動。受話器から"Hello, World"が聞こえます。SPI関連とPCM関連の両方とも問題なく動作しているようです。


TA基板にSLIC基板を載せた

2008-11-22 18:17:19 | Weblog


SIP TA基板の上にSi3215MのSLIC基板を載せました。評価ボードにガッチリと連結されていたSLIC子基板は、ドライバをテコに使って なんとか無事に外しました。



SLIC基板では、もともと足の長い連結ピンソケットを使っていたので、ちょうどギリギリでMMnetSAM7Xの基板をまたいでTA基板上に載っています。連結ソケットそのものは標準的な10milピッチのものなのですが、SLIC基板上の配置間隔が10milピッチになっていないようです。そのため、長い足を無理やりちょっと捻じ曲げてソケットに押し込んで連結させています。



これまではボード2枚で、電源/ケーブルも別々に必要だったのが、ボード1枚になったのが嬉しい。何と言っても場所をとらなくなったので、かなり作業しやすくなった感じです。電話機も何の表示もできないシンプルな電話機ですが、電源不要なのでかえって実験には便利です。



SPIを使って、レジスタの読みだしができることを確認。ちゃんと読み出せたので、続いて、SLICの初期化処理を書き始めています。

Flash書き込みエラー

2008-11-21 21:37:10 | Weblog
TA基板からPCM信号を入れる作業をしている際に、以前タッチパネルジャケットを製作している際に発生した、フラッシュメモリーへの書き込み後のベリファイ時エラーが発生するようになってしまいました。JTAGクロックを6MHzから1MHzに落してみたりとかしましたが、100%の確立で発生してしまいます。ひょっとしてJTAGが壊れたのかしらんとも思いましたが、考えてみると基板側ハードはさほど変更しているわけでもなく、2.048MHzのクロックとタイマーへの配線を追加した程度です。SLICへのPCLKを2分周して1.024MHzに変更してやったところ、書き込みエラーも発生しなくなってしまいました。

どうやら、2.048MHz/PCLKのクロックの引き回しが悪さをしていたようです。確かにJTAG信号やVCCをまたいでいたりしていました。分周するために回路を変更したことに伴い、クロック信号とPCLK信号の引き回しが変わったことが良かったのでしょうか、問題は再発しなくなりました。2.048MHzとはいえクロック信号の配線の難しさを身にしみて知ることとないました。シロウトのためこういう知識も経験も無かったので、クロックが原因だとは思ってもみませんでした。

タッチパネル・ジャケットでも同じ2.048MHzのクロックを使っているので、以前の書き込みエラーも同じ原因である可能性があります。あれ以来、タッチパネルジャケットは断念したままになっていますが、ひと段落したら再挑戦してみてもいいかもしれません。

SLIC評価ボード経由で音声を出す -- その2

2008-11-19 23:44:20 | SLIC
評価ボード側の準備ができたので、続いてTA基板側の作業です。TA基板側ではコネクタだけでなく、クロックの準備が必要です。Si3215Mで使用できるPCLKの周波数は256K, 512K, 768K, 1.024M, 1.536M, 2.048M, 4.096M, 8.192MHzのいずれかである必要があります。以前、タッチパネル・ジャケットを作った時に使った2.048MHz水晶発振器の買い置きがあったので、これを使うことにします。写真からはわかりませんが、基板の裏側に配置してあります。



さて2.048MHzからPCLKとFSYNCを作るわけですが、水晶発振器の出力をタイマの外部クロック入力端子であるTCLK2に接続し、TC1とTC2のふたつのタイマーを使って分周しています。



PCLKに2.048MHzをそのまま使わずに、2分周している理由は... 正直言ってよくわかりません。2.048MHzそのままだと、なぜか音声信号を出力するSSCの送信がうまく動いてくれなかったからです。どういうわけか2分周するとちゃんと動いてくれます。何か原因があるはずですが、究明できずにいます。とりあえず、これで動くので、先に進もうかと。。じつは、他にもトラブルがあったのですが、その件についてはまた次の記事に書くことにします。



TA基板上では、いつもの "Hello, World"をSSCに出力するタスクを作成しておき、2枚の基板を接続です。さらに、電源、PCと電話機を接続して動作試験開始です。
  1. まずはTA基板から電源投入。PCLK/FSYNCの生成開始。SLICが動作するのに、これらのクロックが必要ですので。
  2. SLIC評価ボードに電源投入。GUIソフトを使って、SLICリセット、初期化、レジスタ初期設定。
  3. SLIC状態設定。調べてみるとレジスタ初期設定の段階でPCMはmu-Lawに設定されて音声を流す準備が整っていました。SLICをactiveな状態にするために64番レジスタに0x01を書き込み。
  4. TA側音声出力タスク起動。

電話機から"Hello, World"が聞こえました!! PCに頼っているSPIでのSLIC制御の部分をTA基板に実装すれば、電話機制御できることが明らかになりましたので、SIP TAが実現できることとが確実になったと言えます。

ボード間接続用コネクタは入力と出力の両方を用意しておきましたが、出力できることが確認できたので、入力側の実験は省略することにします。次のステップはいよいよ、SLICボードとTA基板の合体です。

SLIC評価ボード経由で音声を出す -- その1

2008-11-17 23:24:46 | SLIC
SLIC評価ボードを使って音声を出す動作確認をしておきたくなったので、その作業を進めています。すでにトーンを出したり、ベルを鳴らしたりという動作の確認はしていますが、これらはSLICが持つ機能によって電話機から音を出しています。会話時の音声の入出力のためにはPCM信号が用意されていますが、これらの信号を使う動作確認はSLIC評価ボード単体では実施することができず、外部からPCM信号を入れてやる必要があります。そこで、MMnetSAM7Xを使ってこのPCM信号を入れてやろうというのが、実験の次のステップです。

PCM信号を入れるにはSLICの以下の信号をつないでやる必要があります。
信号意味
PCLKPCMサンプリング・クロック。SLICの基本動作クロックとしても使用される。
FSYNC8KHzのフレーム同期信号。PCLK周波数を求めるのにも使われる。
DRXSLICへの音声入力信号
DTXSLICからの音声出力信号

PCLKとしては256KHz~8.192MHzの範囲にある8種類の周波数のうちの任意のものを使用できます。FSYNCの何倍あるかで使用されている周波数を決定しているようです。このふたつのクロックはSLICの動作に必要なクロックなので、評価ボード上でも生成できるようになっています。今回は、PCM信号をTA基板から与えるのと一緒に、これらのクロックもTA基板から与えることとし、そのためのジャンパ変更もおこないました。

上図に示したように、音を出すだけならMMnetSAM7Xとつなぐのに必要なのは4本の信号線だけです。実際に接続するに先立ち、まずSLICを3.3V動作させることとし、そのための電源を用意しました。基板の裏に3.3Vのレギュレータを付けただけのものですけど。ボード上の電圧選択ジャンパも3.3Vに変更したのでMMnetSAM7XとSLICの信号を直接つなげられます。



次にPCM信号用のコネクタです。SLIC評価ボード上にはもともとPCM信号の測定試験機を接続するようにDB15のコネクタパターンが用意してありましたので、ここにコネクタを実装して接続用ケーブルを用意しました。DB15のコネクタは2つありますが、片方が送信関連で、もう片方が受信関連信号になっています。写真に示した下側のコネクタが図に書いた4本の信号を持つコネクタになっています。

TA基板側については、次回の記事で。

ひかり電話に登録できた

2008-11-15 15:59:32 | VoIP
いちおうひかり電話のルータに登録できるようになりました。ひかり電話のルータは、NTTの網側からみれば それ自体が端末のように見えるはずですが、宅内のSIP端末を収容するサーバとしても機能します。NTTのページによれば 今では数種の対応ルータがあるようですが、ウチはOKIのRT-200KIを使っています。RV-230SEというのもあるんですね。知りませんでした。これは住友電工でしょうか?

RT-200KI側の設定は、次のようにしてあります。ウチではカミさんが仕事に使うFAXと、わたしが実験に使うための番号を追加しているので、合計3つの電話番号を持っています。そこで3つ目の番号をSIP TAに割り当てることにします。IP端末としては5台登録が可能なので、5番目として登録しておきます。



ちょっとややこしいのは、ルータ内で端末を区別するのに使用されている「内線番号」はSIPプロトコル的には "user name"と呼ばれるものであるということでしょうか。ルータ側で設定している「ユーザ名」はダイジェスト認証の際に必要な認証用のusername に相当します。そのため、X-LiteをRT-200KIに登録する場合のアカウント設定は次のようになります。



SIP TA側でも同じ要領でパラメータの設定をするのですが、今はhard codedしています。

現時点では、SIP TAからの登録操作は手動です。モニタから sip registerと打つと、登録をおこなうようにしています。登録が受け付けられると、RT-200KIの管理画面からも次のように状態を確認できます。



まだ登録の更新機能が入っていないので、登録の有効期間(3600秒にしている)を過ぎると登録がはずれてしまいます。発呼ができるようになったら、この部分もちゃんと実装しなければ。

SIP TAソフトを書き始めた

2008-11-12 23:46:02 | VoIP
SLIC評価ボードの基本的動作は確認できたので、SIP TA基板の方のソフト開発作業も開始しました。

まずは、いつものようにTOPPERSとTINETを動かすことから始めました。MMnetSAM7Xのハードウェア構成は基本的にはMake Controllerと同じ AT91SAM7X256とDM8161ですので、VoIP GW用のコードをベースにして作業開始です。Kernel部分で必要な修正は、Make Controllerではログ用にUART0を使ってたのを、今度はDEBUGシリアルが使えるので、これを使うように修正する程度の作業です。

VoIP GWで用意したDHCPまではあっさりと動いたので、SIPスタックの準備にも着手したところです。SIP GWのコードの使えるところは使うのですが、UACとUASの立場が逆になります。また、SIP GWでは処理を簡単化するために認証は省いてしまいましたが、NTTの光電話ルータ(我が家の場合にはOKI製のRT-200KI)を使って登録や発呼する際には認証が必要となるので、この部分も実装しなければなりません。

まずは登録できるところまで、週末までに作業するつもりです。

SLIC評価ボードで電話機を鳴らしてみる

2008-11-09 16:41:10 | SLIC
SLIC評価ボードを使うと、実際に電話機をつなげて鳴らしてみることができます。おおまかな説明はアプリケーションノート(AN204)に書いてあるんですが、詳細な機能と使い方はSLICのデータシートと照らし合わせて理解する必要があるようです。とりあえず、AN204にはトーンの出し方の説明だけは書いてあります。

SLICはダイアルトーンやDTMFトーンを生成するために、ふたつのTone Generatorを持っています。下図のようにTone Generatorのタブを選択して、生成する周波数やレベル、長さを指定してやって、"Load Values"のボタンを押してやると、指定したパラメータに応じて関連レジスタを自動的に設定してくれます。そして、回線状態を指定するダイレクトレジスタ64番に 0x01を書き込んでやると、実際に指定したトーンが流れてくるのが確認できます。この例では697Hzと1209Hzの生成を指定しており、DTMFの "1" に相当する音が出ます。



いったん音が出れば、周波数の設定を変更して "Load Values"することで、生成される音を変えることができます。AN204が説明してくれているのは、ここまでです。ベルはどうやって鳴らすのかの説明すらありません。とりあえず、Ringingが関連するだろうくらいのことはすぐわかるので、その設定をしてみます。

# その後、Si3210用の資料にリングするための操作説明があることに気づきました。



ディフォルトではベル音の鳴動/休止のサイクルが米国仕様になっていたので、上図のように日本仕様(1秒/2秒)に変更して、"Load Values" しますが、ベルは鳴ってくれません。トーンを出すために、回線状態がActive状態に設定されているのが原因のようです。ちょっとデータシートを読むと、ダイレクトレジスタ64番に 0x04を書き込むと Ringing状態になることがわかったので、それをやってみるとベルが鳴ってくれました。結構、ウレシイ。



Gaugeのタブを選択すると、電話機への2本の線(RING/TIP)に加わる電圧や電流を表示してくれます。これらの値は、すべてレジスタから読みだすことができるので、それをグラフィックスで表示してくれているようです。"Continuous update"を有効にしておくと、リングの鳴動に応じでメータが動いてくれて楽しめます。

データシートを少し読んで、オンフック/オフフックの検出でレジスタの値が変化するように設定する方法もわかって、動作確認ができました。やはり、GUIを使ってレジスタの設定と値の変化が確認できますので便利ですね。しかしながら、LPTポートで制御できるのは基本的にSPIポートを介してのレジスタの読み/書きだけです。PCM信号はPCにはつながりませんので、実際の音声や音楽をPCM信号を介して電話機に出力するようなマネはできません。この部分はマイコンをつなげて動作確認をした方が良さそうです。