微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1115低八位读取失败一直为FF

ADS1115低八位读取失败一直为FF

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

用的是网上的程序,高八位读取正常。

#include "iic.h"
#include "msp430f149.h"
#ifndef _ads1115_H_
#define _ads1115_H_
uchar table[4],ReadBuffer[16],buffer[16];

unsigned long sum = 0;
uint real;

void delay(uint z)
{
unsigned int i,j;
for(i = 0;i<500;i++)
for(j=0;j<z;j++)
{;;};
}

//配置ads1115
void Confige1115 ()
{
unsigned char i;
table[0] = 0x90;//CMD_Write;
table[1] = 0x01;//指向配置寄存器
table[2] = 0xC2;//设置配置寄存器的高八位1100 0101,即AINp=AIN0,AINn=GND;满量程FS=+-4.096;连续转换模式
table[3] = 0xe3;//设置配置寄存器的低八位1100 0101,即
start();//发送起始信号
for(i=0;i<4;i++)
{
shout(table[i]);//将table里面的数写入ads1115
_NOP();
}
stop();//发送停止信号
}
//指向ADS1115指针寄存器用于准备读取数据
void PointRegister (void)
{
unsigned char i;
table[0] = 0x90;//写
table[1] = 0x00;//指针指向转换寄存器
start();//发送起始信号
for(i=0;i<2;i++)
{
shout(table[i]);//将table里面的数写入ads1115
delay(5);
}
stop();//发送停止信号
}
//读转换寄存器里面的值
uint read()
{
uint result,resulth,resultl;
start();
shout(0x91);
resulth = shin(); //高八位
resultl = shin(); //底八位
stop();
result=(resulth<<8)|resultl;
if(result>0x7fff)
result=~result+1;//用于测量负电压,负电压从8000~ffff,负电压与正关于0有类似对称关系,按位取反后+1相同
return result;
}
//获取最终模数转换之后的结果
uint getad()
{
uint value;
Confige1115();
_NOP();
PointRegister();
_NOP();
value=read();
return value;
}

没有看到 shout(); 这个函数的定义. 

这是个 I2C 的接口程序里的数据收发底层函数. 不知道数据传输怎么实现的.

另外, 你也可以查一下接口时序的波形, 来判断一下从机有没有对主机的请求做出了回应呢?

一般网上的程序找到的程序都需要一定的修改.

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

网站地图

Top