差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
adc数模转换模块 [2017/06/28 17:36]
anran [小结]
adc数模转换模块 [2020/01/18 21:42] (当前版本)
gongyu
行 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: 行 13:
 {{ :​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: 行 25:
 {{ :​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>
 // -------------------------------------------------------------------- // --------------------------------------------------------------------
行 222: 行 221:
 </​code>​ </​code>​
  
- +--- 
-====小结==== +#### 小结 
------- +本节主要为大家讲解了使用[[I2C]]驱动PCF8591的[[ADC]]功能的原理及软件设计,需要大家掌握的同时自己创建工程,通过整个设计流程,生成[[FPGA]]配置文件加载测试。
-本节主要为大家讲解了使用I2C驱动PCF8591的ADC功能的原理及软件设计,需要大家掌握的同时自己创建工程,通过整个设计流程,生成FPGA配置文件加载测试。+
 \\ \\
 如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。 如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。
  
-====相关资料==== +--- 
------- +#### 相关资料 
-\\ +使用[[STEP-MXO2第二代]]的PCF8591的[[ADC]]驱动程序: ​ 后续会有下载连接 ​ 待更新
-使用[[STEP-MXO2第二代]]的UART通信程序: ​ 后续会有下载连接 ​ 待更新+
 \\ \\
-使用[[STEP-MAX10]]的UART通信程序: ​ 后续会有下载连接 ​ 待更新+使用[[STEP-MAX10]]的PCF8591的[[ADC]]驱动程序: ​ 后续会有下载连接 ​ 待更新
 \\ \\