SH-2A 基板 (15)
ディジタル・オーディオ用 DAC の代表的な入力フォーマットとして、いわゆる「標準」フォーマットと、I2S フォーマットがありますが、両者の違いを表にすると下のようになります。
フォーマット | 標準 | I2S | SSIF レジスタビット |
---|---|---|---|
データ位置 | 右詰め | 左詰め | SSIFn.SSICR.BIT.STDA |
LRCK(WS) 極性 |
1=L 0=R |
0=L 1=R |
SSIFn.SSICR.BIT.SWDP |
LRCK(WS) エッジ位置 |
LSB の後 | LSB の前 | SSIFn.SSICR.BIT.DEL |
上の表には SSIF モジュールで設定すべきレジスタ・ビットの名称もあわせて表示してありますが、都合が良いことに、各ビットが「1」の場合は「標準」フォーマットに対応する動作となり、各ビットが「0」の場合は「I2S」フォーマットに対応する動作となります。
したがって、標準フォーマットと I2S フォーマットとの両方に対応する設定は、たとえば次のコードのようになります。
// DAC input format selection // 1 for "Standard" format (16-bit, right justfy, LRCK: 1=L, 0=R) // 0 for I2S format (16-bit, left justify, WS: 0=L, 1=R) #define DAC_FORMAT_SEL 1 ... // Serial Word Select Polarity // 1: (std: L = 1) // 0: (I2S: L = 0) SSI2F.SSICR.BIT.SWSP = DAC_FORMAT_SEL; // Serial DaTa Alignment // 1: (std: padding, data) // 0: (I2S: data, padding) SSIF2.SSICR.BIT.SDTA = DAC_FORMAT_SEL; // Serial data DELay // 1 : (std: no serial data delay) // 0 : (I2S: 1 clk serial data delay) SSIF2.SSICR.BIT.DEL = DAC_FORMAT_SEL;
今回使用した AK4321VF では、
- DIF1=0, DIF0=0 で標準フォーマット
- DIF1=1, DIF0=1 で I2S フォーマット
に切り換えられるのを利用して、I2S フォーマットでの動作を確認しました。