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