PCMCLKの周波数が合わないことは承知のうえで、TLV320AIC1110を載せて、とりあえずSpeakerをつなげてみました。結果、音は鳴りますが、ブツブツとしているうえに周波数が高くずれている感じで何をいっているのか聞き取り困難な状態です。一応、CODEC付ければ、簡単にSpeaker/Micをつなげられることが確認できたということで満足です。こんなチップ使ったのは初めてだし。
このCODECチップは、I2C経由でMic/Speakerの選択や音量調節ができますが、AT91SAM7でI2Cを使ってみるのは、今回が初めてでした。ATMELのTWIは以前MEGA48で使った時に、状態遷移を管理する必要があり面倒だった記憶があるのですが、AT91SAM7のTWIは素直で使いやすいものでした。改めて気が付いたのは、TWIではDMAが使えないこと。今回のCODECのようにレジスタを単独で読み/書きする程度の用途ならDMAは使わないのですが、AT91SAM7ではA/Dを含むほとんどのI/OでDMAが使えるので、逆に新鮮に感じてしまいます。
写真ではスピーカと(空中配線の)イヤホン端子がつながっていますが、音声出力先の切り替えもI2Cでできます。DEBUGシリアルのコンソールからコマンドで音量とともに切り替えられるようにしましたが、イヤホンでも音がおかしいのは同じです。基板の上半分は液晶を載せるつもりでスペースを開けてあります。また、DEBUGシリアルのUSB変換部分は使いまわしのために、別基板としました。
このCODECチップは、I2C経由でMic/Speakerの選択や音量調節ができますが、AT91SAM7でI2Cを使ってみるのは、今回が初めてでした。ATMELのTWIは以前MEGA48で使った時に、状態遷移を管理する必要があり面倒だった記憶があるのですが、AT91SAM7のTWIは素直で使いやすいものでした。改めて気が付いたのは、TWIではDMAが使えないこと。今回のCODECのようにレジスタを単独で読み/書きする程度の用途ならDMAは使わないのですが、AT91SAM7ではA/Dを含むほとんどのI/OでDMAが使えるので、逆に新鮮に感じてしまいます。
写真ではスピーカと(空中配線の)イヤホン端子がつながっていますが、音声出力先の切り替えもI2Cでできます。DEBUGシリアルのコンソールからコマンドで音量とともに切り替えられるようにしましたが、イヤホンでも音がおかしいのは同じです。基板の上半分は液晶を載せるつもりでスペースを開けてあります。また、DEBUGシリアルのUSB変換部分は使いまわしのために、別基板としました。