2

DE1-SoC (Rev. F) 開発ボードの AD7928 アナログ - デジタル コンバーター (ADC) から読み書きできません。

ボードと ADC のデータシートがあります。カスタム IP と既製のハードウェア コンポーネントを組み合わせて使用​​しています。LED、プッシュ ボタン、および 7 セグメント ディスプレイを ADC と共に Qsys に実装しました。各コンポーネントのメモリ空間にはベースアドレスと範囲が設定されています。開発ボード上の Linux で実行されている C プログラムでハードウェアを制御しています。仮想アドレスとオフセットを使用して、ADC を除く前述のすべてのコンポーネントを制御できます。

ADC のデータシートには、読み取り用に 8 個、書き込み用に 2 個のレジスタが示されています。ADC は、12.5MHz で動作する利用可能な 8 つのチャネルのうちの 1 つのチャネル (チャネル 0) を使用するように Qsys でセットアップされます。Qsys のメモリ範囲は、ADC に 32 バイトのアドレス指定が割り当てられていることを正しく示しています (それぞれ 4 バイトの 8 つのレジスタ)。2 つのレジスタは、読み取りコマンドと書き込みコマンドを共有します。

自動有効化コマンドを書き込んで、ADC のチャネル 0 から 12 ビット温度を読み取るために使用するポインタを次に示します。

// Set ADC to automatically update (write to register offset 4)
*(uint32_t *)(h2p_lw_adc_addr + 4) = 1;

// Read channel 0 from the ADC (read from register offset 0)
temp_in = *(uint32_t *)h2p_lw_adc_addr;

他のコンポーネントと同じポインター設定を使用しますが、すべて機能します。

ADC のソフトコア プロセッサのセットアップを調べたところ、ADC をオンにするコマンドを含む .h ファイルがありますが、ハードコア プロセッサ システムにはそのコマンドがないようです。

ADC が HPS (hard-core processor sys) で使用できるようにするために必要なその他のセットアップはありますか? ADC データシートには、制御用の 8 つのレジスタのみが示されています。自動有効化モードと変換開始モードの両方を試しました。コマンドレジスタを以下に示します。

ADC のコマンド レジスタ

4

0 に答える 0