以前にVolumioの構造を書いたときから、書かないといけないなーとは思いつつ、ほったらかしになってた、BCM2835の構造のお話です。
まぁ、構造と言っても、オーディオ関連部分についてだけの話なんですが、
あ、この図は、私がLinuxに手を入れて、MCLKが出るようにした状態のペリフェラルの関係です。
BCM2835 のデータシートを見ると、GP0CTL / GP1CTL / GP2CTL という3個の汎用クロックが見つかります。しかし、PCM/I2S Audioのクロック源となるクロックについてはなにも記述がありません。
上の図にある2個のPLLのうち、下のPLLはAudio用のPLLです。そしてこいつは、GP3CTL 相当のクロック源です。
どういうことかというと、これらのクロックコントロールレジスタのアドレスが連続しているんです。
GP0CTL のベースアドレスは 0x7e10 1070、GP1CLT のベースアドレスは 0x7e10 1078、GP2CTL のベースアドレスは 0x7e10 1980です。そーして!Audio Clock のベースアドレスは 0x7e10 1088 なんですね。このアドレスが、データシートに書いてない!!
これが分かれば、あとはデータシートに必要な情報は出てます
コメントする