跳到主要内容

AN-1102 I2C可读模数转换器

目录

参考

有关文件和软件,请访问:

//www.xmece.com/亚博电竞菠菜products/greenpak

下载我们的免费GreenPAK Designer软件[1]以打开.gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。

yabo国际娱乐Dialog Semiconductor提供了一个完整的应用说明库[4],其中包括设计示例以及Dialog IC内功能和模块的说明。

  1. GreenPAK Designer软件,软件下载,用户指南,对话框yabo国际娱乐
  2. AN-1102 I2C可读模拟到数字转换器.GP,GreenPak设计文件,对话半导体yabo国际娱乐
  3. GreenPAK开发工具,GreenPAK开发工具网页,对话框yabo国际娱乐
  4. 绿百申请须知,GreenPak应用笔记网页,对话框半导体yabo国际娱乐
  5. SLG46620数据表,对话框半导体yabo国际娱乐
  6. SLG46531数据表,对话框半导体yabo国际娱乐

作者:David Riedell

介绍

本应用说明将解释如何使用GreenPAK测量模拟电压,使用8位模数转换器(ADC)将其转换为数字值,通过I2C传输数据,以及使用Arduino Uno微控制器读取I2C命令。该2芯片项目使用SLG46620[5]GreenPAK4设备和SLG46531[6]GreenPAK5设备。GreenPAK4读取模拟电压,将其转换为8位值,并通过8个引脚并行输出该值。GreenPAK5接收8个数字信号,并通过I2C将该信息串行传输至微控制器。

图1显示了两个GreenPAK设备之间的连接、连接到微控制器的双向I2C SDA和SCL信号以及模拟输入电压。

图1。电路图

GreenPAK4设计文件

GreenPak4芯片有两个输入引脚和8个输出引脚。它在引脚8处接收模拟电压和引脚10处的断电(PD)信号。引脚12到19将ADC数据的8位发送到GreenPak5芯片,这在该应用笔记的第3节中讨论。

引脚8处的模拟信号发送至PGA(可编程增益放大器),其设置如图3所示。需要注意的是,必须手动将PGA设置为“开机”,并且必须手动启用SPI(串行到并行接口)并行输出(图6)。

图2. GreenPak4设计框图

PGA将模拟信号传递至ADC,ADC通过橙色8位总线将其数据传输至SPI。SPI模块使用ADC的中断信号进行时钟设置。然后,这8位从SPI并行输出块发送到双矩阵芯片另一侧的引脚12至19。

图3。PGA特性
图4. ADC属性
图5。SPI特性
图6。并行输出特性

GreenPAK5设计文件

该项目的GreenPak5部分设计非常简单。引脚8和9是专用I2C引脚8承载I2C时钟(SCLK)和引脚9的I2C数据(SDA)。

第一个I2C虚拟输入信号连接到数字输出引脚10,这允许我们通过简单的I2C命令为GreenPAK4芯片中的ADC通电或断电。

图7.GreenPAK5设计框图

引脚12:19在GreenPak4设备上的相应引脚数外部连接,如图1所示。可以通过在地址0xF6处通过I2C读取每个引脚的输入值。

表1. GreenPak5数据表第156页的寄存器位定义

字节地址

注册位

寄存器位定义

0xF6.

reg <1968>

Pin12数字输入

reg <1969>

PIN13数字输入

注册号<1970>

PIN14数字输入

Reg<1971>

PIN15数字输入

reg <1972>

Pin16数字输入

reg <1973>

Pin17数字输入

注册号<1974>

Pin18数字输入

注册号<1975>

Pin19数字输入

Arduino Uno Code.

下面的代码是为用作I2C主机的Arduino Uno编写的。此代码启用ADC,等待600µs以获得有效的ADC输出,读取这些ADC输出值,然后禁用ADC以最小化功耗。Arduino Uno每秒轮询一次ADC值,并通过Arduino串行监视器打印该值。有关详细信息,请参阅关于使用I2C与GreenPAK接口的信息,请参考AN-1090或查看产品数据表.

#包括

字节I2C_字节_地址=0xF4;

字节ADC_引脚_地址=0xF6;

无效设置(){

Wire.begin();

Serial.begin(9600);

写入2C(I2C字节地址,0x01);

}

void循环(){

写入2C(I2C字节地址,0x00);

延迟微秒(600);

uint8\u t ADC\u值=读取I2C(ADC\u引脚地址,0x00,0x01);

serial.print(“价值:”);

串行打印LN(ADC_值);

写入2C(I2C字节地址,0x01);

延迟(1000);

}

void writei2c(字节addr,字节数据){

导线起始传输(0x00);

导线写入(addr);

线写(数据);

导线端传动();

}

uint8读取I2C(字节添加、字节从添加、字节字节到读取){

uint8_t值;

导线起始传输(0x00);

导线写入(addr);

导线端传动();

Wire.requestFrom(从地址,字节到读取);

而(Wire.available()){value=Wire.read();}

返回值;

}

结论

在本应用说明中,我们描述了如何使用一对GreenPAK设备创建I2C可读的模数转换器。我们使用提供的代码在GreenPAK5和Arduino Uno之间进行接口,以启用ADC并通过I2C读取8位数字值。这种简单设计的实现在GreenPAK4中留下了许多资源d格林帕克5芯片可用于执行其他任务。