差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
adc数模转换模块 [2017/06/28 17:34]
anran [Verilog代码]
adc数模转换模块 [2022/07/20 10:26] (当前版本)
zhijun [小结]
行 1: 行 1:
 ======基于STEP FPGA的PCF8591的ADC(I2C)功能驱动====== ======基于STEP FPGA的PCF8591的ADC(I2C)功能驱动======
  
-本节将和大家一起使用FPGA驱动底板上的PCF8591的ADC采样(I2C)功能。+本节将和大家一起使用[[FPGA]]驱动底板上的PCF8591的[[ADC]]采样([[I2C]])功能。
  
  
 ====硬件说明==== ====硬件说明====
 +
 ------- -------
-PCF8591是集成了4路ADC和1路DAC的芯片,使用I2C总线通信。+PCF8591是集成了4路[[ADC]]和1路[[DAC]]的芯片,使用[[I2C]]总线通信。
 \\ \\
-I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最后由主机终止接收过程。这里不做过多的讲解,硬件连接如下:+[[I2C]]总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最后由主机终止接收过程。这里不做过多的讲解,硬件连接如下:
 {{ :​i2c总线框架.jpg?​800 |}} {{ :​i2c总线框架.jpg?​800 |}}
 \\ \\
行 14: 行 15:
 {{ :​pcf8591硬件连接.jpg?​1000 |}} {{ :​pcf8591硬件连接.jpg?​1000 |}}
 \\ \\
-本设计中FPGA作为I2C主设备,PCF8591作为I2C从设备,从设备的地址由固定地址和可编程地址组成,我们的外设底板已将可编程地址A0、A1、A2接地,所以7位地址为7'​h48,加上最低位的读写控制,所以给PCF8591写数据时的寻址地址为8'​h90,对PCF8591读数据时的寻址地址为8'​h91。如下+本设计中FPGA作为[[I2C]]主设备,PCF8591作为[[I2C]]从设备,从设备的地址由固定地址和可编程地址组成,我们的外设底板已将可编程地址A0、A1、A2接地,所以7位地址为7'​h48,加上最低位的读写控制,所以给PCF8591写数据时的寻址地址为8'​h90,对PCF8591读数据时的寻址地址为8'​h91。如下
 {{ :​pcf8591_i2c地址.jpg?​800 |}} {{ :​pcf8591_i2c地址.jpg?​800 |}}
 \\ \\
行 26: 行 27:
 {{ :​pcf8591_adc时序.jpg?​1000 |}} {{ :​pcf8591_adc时序.jpg?​1000 |}}
 \\ \\
-通过上面的介绍大家应该对如何驱动PCF8591进行ADC采样有了整体的概念,还有一些细节就是I2C通信的时序明细,如下图+通过上面的介绍大家应该对如何驱动PCF8591进行[[ADC]]采样有了整体的概念,还有一些细节就是[[I2C]]通信的时序明细,如下图
 {{ :​pcf8591_时序控制.jpg?​800 |}} {{ :​pcf8591_时序控制.jpg?​800 |}}
 {{ :​pcf8591_时序控制2.jpg?​800 |}} {{ :​pcf8591_时序控制2.jpg?​800 |}}
  
 ====Verilog代码==== ====Verilog代码====
 +
 ------ ------
 <code verilog> <code verilog>
行 220: 行 222:
  
 endmodule endmodule
-<end code>+</code>
  
  
 ====小结==== ====小结====
 +
 ------ ------
-本节主要为大家讲解了UART通信的原理及软件设计,需要大家掌握的同时自己创建工程,通过整个设计流程,生成FPGA配置文件加载测试。+本节主要为大家讲解了使用[[I2C]]驱动PCF8591的[[ADC]]功能的原理及软件设计,需要大家掌握的同时自己创建工程,通过整个设计流程,生成[[FPGA]]配置文件加载测试。
 \\ \\
-如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。+如果你对Diamond软件的使用不了解,请参考这里:[[lattice_fpga|Diamond的使用]]。
  
 ====相关资料==== ====相关资料====
 +
 ------ ------
 \\ \\
-使用[[STEP-MXO2第二代]]的UART通信程序: ​ 后续会有下载连接 ​ 待更新+使用[[STEP-MXO2第二代]]的PCF8591的[[ADC]]驱动程序: ​ 后续会有下载连接 ​ 待更新
 \\ \\
-使用[[STEP-MAX10]]的UART通信程序: ​ 后续会有下载连接 ​ 待更新+使用[[STEP-MAX10]]的PCF8591的[[ADC]]驱动程序: ​ 后续会有下载连接 ​ 待更新
 \\ \\