我无法读取或写入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的命令,但似乎硬核处理器系统没有这个命令。 / p>
是否还需要其他一些设置才能将它与HPS(硬核处理器系统)一起使用? ADC数据表仅显示8个控制寄存器,我尝试了自动启用和开始转换模式。命令寄存器如下所示。