2

我无法读取或写入 DE1-SoC (Rev. F) 开发板上的 AD7928 模数转换器 (ADC)。

我有开发板和 ADC 的数据表。我正在使用自定义 IP 和预制硬件组件的组合。我已经在 Qsys 中实现了 LED、按钮和 7 段显示器以及 ADC。为每个组件的内存空间设置基地址和范围。我正在使用开发板上的 Linux 中运行的 C 程序控制硬件。使用虚拟地址和偏移量,我可以控制除 ADC 之外的所有上述组件。

ADC 的数据表显示了 8 个用于读取的寄存器和 2 个用于写入的寄存器。ADC 在 Qsys 中设置为使用 8 个可用通道中的一个(通道 0),运行频率为 12.5MHz。Qsys 中的内存范围正确显示分配给 ADC 的 32 字节地址(8 个寄存器,每个 4 字节)。其中两个寄存器共享一个读写命令。

以下是我用于编写自动启用命令和从 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 的软核处理器设置,它有一个 .h 文件,其中包含打开 ADC 的命令,但似乎硬核处理器系统没有该命令。

ADC 是否需要一些其他设置才能将其与 HPS(硬核处理器系统)一起使用?ADC 数据表仅显示了 8 个用于控制的寄存器,我尝试了自动启用和开始转换模式。命令寄存器如下所示。

ADC 的命令寄存器

4

0 回答 0