微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1115采不到电压 请问大家看看怎么回事

ADS1115采不到电压 请问大家看看怎么回事

时间:10-02 整理:3721RD 点击:

注明:在实际使用中只使用SCL和SDA引脚与MSP430连接,未使用ALERT引脚。

下面程序为IIC程序和ADS1115程序

********************************************************IIC程序************************************************************************************

#include <msp430f149.h>
#include"ADS1115.h"
#include "I2C.h"
typedef unsigned char uchar;
typedef unsigned int uint;
unsigned int Initdata[4]={0};
/**************起始信号***************/
void start()

SDA_Out;
SDA_L;
SCL_Out;
SCL_H;
SDA_H;
SDA_L;
SCL_L;
}
/*************终止信号*************/
void stop()
{ SDA_Out;
SDA_L;
SCL_H;
SDA_H;
}
/*************向I2C总线发送一个字节************/
void Send1byte(uint byte)
{
uint i;
SDA_Out;
for(i=0;i<8;i++)
{
if((byte<<i) & 0x80)
SDA_H;
else
SDA_L;
SCL_H;
SCL_L;
}
SDA_H;
SCL_H;
SCL_L;
}
/**************读取一个字节**************/
uint Read1byte()
{
uint temp=0,i;
SDA_In;
for(i=0;i<8;i++)
{
temp=temp<<1;
SCL_L;
SCL_H;
if(P2IN&0x02)
{
temp|=0x01;
}

}
SDA_Out;
SCL_L;
SDA_L;
SCL_H;
SCL_L;
SDA_H;
return temp;
}

*****************************************************************************************************************************************************

****************************************************************ADS1115程序**********************************************************************

#include <msp430f149.h>
#include "I2C.h"
typedef unsigned char uchar;
typedef unsigned int uint;
extern unsigned int Initdata[4];
uint result_gd=0;
/*******************Config寄存器*********************/
void Confige_1115(uchar channel )
{
uchar i=0;
switch(channel) //通道选择
{
case 0: Initdata[2] = 0x42; break; 
case 1: Initdata[2] = 0x52; break;
case 2: Initdata[2] = 0x62; break;
case 3: Initdata[2] = 0x72; break;
}
Initdata[0] =0x90; // 启动配置命令
Initdata[1] =0x01; // 指向配置寄存器
Initdata[3] =0x83; // 配置字低字节
SCL_H;
start();
for(i=0;i<4;i++)
{
Send1byte(Initdata[i]);
_NOP();
}
stop();
}
/************指向转换结果寄存器***************/
void Point_reg(void)
{
uchar i=0;
Initdata[0] =0x90; // 地址 + 写命令
Initdata[1] =0x00; // 指向转换结果寄存器
SDA_Out;
SCL_H;
start();
for(i=0;i<2;i++)
{
Send1byte(Initdata[i]);
}
stop();
}
/**************读取转换结果***************/
uint Read_1115(void)
{
uchar ResultL,ResultH;
uint Result;
SCL_H;
start();
Send1byte(0x91);
ResultH=Read1byte();
_NOP();
ResultL=Read1byte();
stop();
Result=ResultH*256+ResultL;
return Result;
}

uint Get_AD(uchar channel)
{
Confige_1115(channel);
Point_reg();
return Read_1115();
}

*****************************************************************************************************************************************************

****************************************************************main程序**********************************************************************

#include<msp430x16x.h>
#include"lcd.h"
#include"ads1115.h"
#include"I2C.h"
#include"math.h"
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //延时uS
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) //延时mS
#define uchar unsigned char
#define uint unsigned int

#define channel_0 0 //表示选择通道0
#define channel_1 1 //表示选择通道1
#define channel_2 2 //表示选择通道2
#define channel_3 3 //表示选择通道2
extern uint Get_AD(uchar channel);
int main()
{
uint result;
WDTCTL= WDTPW + WDTHOLD; //关闭看门狗
LCD12864_INIT();
LCD12864_STRING(1,0,"->ADS1115<-");
while(1)
{
       result=Get_AD(channel_0);
       LCD12864_DATA1(4,0,result);
}
}

输出一直是00000

你好,

我有看到你最新的关于ADS1115转换结果不连续变化 的帖子,所以现在是已经能够读到数据了吗?

ADS1115的硬件连接方面基本没问题,建议在VDD端增加去耦电容,如数据手册Figure 33. Typical Connections of the ADS1115所示。

无数据输出则首先需要检查VDD端,模拟输入端电压是否正常;然后将配置寄存器读出,看看是否配置正确,也可以校验通信时序是否正确。

顺便问一下,msp430x16x应该有IIC接口吧?为什么不用IIC接口直接跟ADS1115通信呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top