跳过主要内容

AN-1102 i2c可读模拟数字转换器

内容

参考文献

有关文件及软件,请浏览:

//www.wsdof.com/雷电竞官网登录products/greenpak

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

雷竞技电竞平台Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。

  1. GreenPAK设计软件,软件下载和用户指南,Dialog Semiconductor雷竞技电竞平台
  2. AN-1102 I2C可读模数转换器.gp,GreenPAK设计文件,对话框半导体雷竞技电竞平台
  3. GreenPAK开发工具, GreenPAK开发工具网页,Dialog半导体雷竞技电竞平台
  4. GreenPAK应用笔记,GreenPAK应用说明网页,对话框雷竞技电竞平台
  5. SLG46620对话框数据表,半导体雷竞技电竞平台
  6. SLG46531对话框数据表,半导体雷竞技电竞平台

作者:大卫·里德尔

介绍

本应用笔记将解释如何使用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将8位ADC数据传输到GreenPAK5芯片,这在本应用说明第3节中讨论。

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

图2。GreenPAK4设计框图

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

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

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数字输入

Reg < 1970 >

Pin14数字输入

Reg < 1971 >

Pin15数字输入

Reg<1972>

Pin16数字输入

Reg<1973>

Pin17数字输入

Reg < 1974 >

Pin18数字输入

Reg < 1975 >

Pin19数字输入

Arduino Uno代码

下面的代码是为Arduino Uno编写的,它作为我们的I2C主机。该代码启用ADC,等待600µs的有效ADC输出,读取这些ADC输出值,然后禁用ADC以最小化功耗。Arduino Uno每秒钟轮询一次ADC值,并通过Arduino Serial Monitor打印值。有关与I2C接口GreenPAK的更多信息,请参阅一个- 1090或查看产品数据表

# include < Wire.h >

字节I2C_Byte_Addr = 0xF4;

字节ADC_Pins_Addr = 0xF6;

无效的设置(){

Wire.begin ();

Serial.begin (9600);

writeI2C (I2C_Byte_Addr 0 x01);

无效循环(){

writeI2C (I2C_Byte_Addr 0 x00);

delayMicroseconds (600);

uint8_t ADC_value = read2c (ADC_Pins_Addr, 0x00, 0x01);

Serial.print(“值:”);

以ADC_value);

writeI2C (I2C_Byte_Addr 0 x01);

延迟(1000);

无效写入2C(字节地址,字节数据){

Wire.beginTransmission (0 x00);

Wire.write (addr);

Wire.write(数据);

Wire.endTransmission ();

uint8_t read2c (byte addr, byte slave_addr, byte bytes_to_read) {uint8_t read2c (byte addr, byte slave_addr, byte bytes_to_read) {

uint8_t价值;

Wire.beginTransmission (0 x00);

Wire.write (addr);

Wire.endTransmission ();

电线。requestFrom (slave_addr bytes_to_read);

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

返回值;

结论

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