コーデック内のA/DコンバータとD/Aコンバータを同時に動作させ、
A/Dコンバータの変換完了(=受信完了)でD/Aコンバータにインクリメントデータを出力させてみます。
LEDチカチカのアナログ版といったところです。
A/Dコンバータの変換完了(=受信完了)でD/Aコンバータにインクリメントデータを出力させてみます。
LEDチカチカのアナログ版といったところです。
以下はコーデックの初期化でサンプリング周波数25kHz、アナログ出力ゲイン0dBに設定し、DAC送信バッファに14ビット分のインクリメントデータを出力する例です。
1 ************************************************ 2 * TMS320C25 AIC_TEST C25AIC.asm * 3 ************************************************ 4 5 0000 DRR .set 0 6 0001 DXR .set 1 7 0004 IMR .set 4 8 9 010a PR1 .set 010ah ;A register 2FCLK=10MHz/10=1000kHz 10 0214 PR2 .set 0214h ;B register Fs=FCLK/20=25.0kHz 11 0300 PR3 .set 0300h ;A prime register 12 0406 PR4 .set 0405h ;amplifier gain register in = 0dB out = 0dB 13 0501 PR5 .set 0501h ;analog configuration register 14 0600 PR6 .set 0600h ;digital configuration register 15 0730 PR7 .set 0730h ;frame synch delay register 16 0802 PR8 .set 0802h ;frame synch number register 17 18 0000 .bss tmp,1 19 0000 .text 20 21 0000 c800 LDPK 0 22 0001 ce0d SXF 23 0002 ce20 RTXM 24 0003 ce0e FORT 0 25 0004 ce37 SFSM 26 0005 ca20 LACK 100000b 27 0006 6004 SACL IMR 28 0007 d001 LACK 0ffffh 0008 ffff 29 0009 c800- LDPK tmp 30 000a 6000- SACL tmp 31 000b e200- OUT tmp,PA2 32 000c c800 LDPK 0 33 000d ca00 ZAC 34 000e 6001 SACL DXR 35 000f ce1f IDLE 36 37 0010 5500 NOP 38 0011 5500 NOP 39 0012 5500 NOP 40 0013 5500 NOP 41 0014 fe80 CALL INIT 0015 001c' 42 43 0016 ca10 LACK 010000b 44 0017 6004 SACL IMR 45 0018 ce00 EINT 46 0019 ff80 LOOP B LOOP 001a 0019' : : 中略 : : 80 0000 .sect "tx_int" ;送信割込み 81 0000 ce26 RET 82 83 0000 .sect "rx_int" ;受信割込み 84 0000 c800- LDPK tmp 85 0001 2000- LAC tmp 86 0002 d002 ADDK 1024 ;インクリメント 0003 0400 87 0004 d004 ANDK 0FFFCh 0005 fffc 88 0006 6000- SACL tmp 89 0007 c800 LDPK 0 90 0008 6001 SACL DXR ;送信バッファ書込み 91 0009 ce00 EINT 92 000a ce26 RET 93 94 .end
ステップ数は1024なので16ビットカウンタで一周64ステップ、そのうち上位14ビットが出力されるので繰り返しのノコギリ波となるはずです。
コーデックの実際の出力波形はこうなりました。
波形のプラス側先端が暴れているのはおそらくコーデックに内蔵された出力フィルタの伝達特性によるものです。
波形のプラス側先端が暴れているのはおそらくコーデックに内蔵された出力フィルタの伝達特性によるものです。
![イメージ 1](https://cdn-ak.f.st-hatena.com/images/fotolife/O/O3I/20190804/20190804124245.jpg)
マイナス側は潰れてしまっていますが、これは外付けオペアンプの振幅不足ですね。
考えてみるとオペアンプを電源電圧5V(±2.5V)で動作させようとしているのはかなり無理がありました。内部吸収電圧が1Vとしても片側1.5Vしか余裕がありません
コーデックは設定で出力ゲインを調整できるので-6dB設定(ゲイン1/2)とすれば一応波形はまともになります