2015年11月23日月曜日

PSoC 5LPでI2SのExampleをやってみた。

Code ExampleのInterICSoundというプロジェクト。

実際にI2Sのデバイスを動かすのではなく、PSoCのI2Sコンポーネントのsdo(データ出力)からsdi(データ入力)にループバックさせるというものだった。

CPUからI2SへDMAを経由してデータ転送するあたりに重点が置かれている。実際PSoCのコンポーネントのなかでもDMAは使い方がちょっとややこしい感じだ。

ブレッドボード図


PSoC 5LPのボードは、「基板付き体験編 ARM PSoCで作るMyスペシャル・マイコン」の付属基板を使った。

Exampleでデフォルトで指定されているPINを変更せずにそのまま配線した。

PSoC CreatorのPins


PSoC CreatorのTopDesign


動作させるとLCDに送信データと受信データが表示される(ループバックされているので同じ値)

タクトスイッチを押すとデータの1byte目がインクリメントされる。

ループバックの配線(ブレッドボード図の青いケーブル)を抜くと、RXがTXと同期しないで「RX: FF FF FF FF」と表示されるので、細かいことはわからないがまあ動作してるんだと思う。

LEDがつながっているClipはRXがClipしたらうんぬんと書いてあるが、まだちゃんとDATASHEETを読んでないのでよくわからない。タクトスイッチを押しっぱなしにしていると点灯するようだ。

<追記:2016.02.28>

ClipはI2SコンポーネントがRXモードで受信したときにConfigureダイアログで設定した値内に収まっていない場合を判定するようです。レベルメーターで赤色にするのに使うとかなのかなあ?実際に試していないのでメモ

</追記>

I2Sの信号


測定中



I2SコンポーネントのSCLKとWSは配線されていないので、ブレッドボードに引き出してオシロで確認してみた。

SDO/SDI



ch1:SDO/SDI ch2:SCLK

SCLKの周波数が約3MHzになっている。I2Sの設定画面にはI2CやSPIみたいに、Data Rateを指定するところがない。

<追記>
TopDesignをよく見たらI2SのコンポーネントにClockを入力するところがあった(^q^;;;
6MHzのクロックが入力されて3MHzのSCLKが出ているようだ。
</追記>

I2SのConfigure-General


I2SのConifgure-Advanced


う~んわからない(^q^;

WS



WSはConfiureで64となっているが、オシロの計測値を見ると
10.680us / 160.0ns = 66.75
なので数が合わない。2bitぐらい何か挿入されているんだろうか?

今月号の「Interface (インターフェース)」にI2Sの記事が載っていたので買ってきた。

近所の本屋にはトラ技は置いてないのにインターフェイスは毎号おいている。インターフェイスの方が売れてるのかな?

ともかくもう少し調べて見る予定。