打印

ADS1115

[复制链接]
2201|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
往事随风丶|  楼主 | 2014-8-7 21:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神看看这ads1115的程序是不是有什么问题,怎么改都出不了结果。
unsigned char Initdata[4]={0};

/*******************Config寄存器*********************/
void Confige1115A()
{
    unsigned char i=0;
    Initdata[0] =0x90;        // 地址 + 写命令
    Initdata[1] =0x01;       // 指向配置寄存器
    Initdata[2] =0x42;     // 配置字高字节
    Initdata[3] =0xE3;    // 配置字低字节
    SCL_H;
    start();
    for(i=0;i<4;i++)
    {
              Send1byte(Initdata[i]);
              _NOP();
      
           }
    stop();
}
/************指向转换结果寄存器***************/
void Pointregister1(void)
{
        unsigned char i=0;
        Initdata[0] =0x90;           // 地址 + 写命令
        Initdata[1] =0x00;            // 指向转换结果寄存器
          SDA_out;
          SCL_H;
          start();
          for(i=0;i<2;i++)
            {
                  Send1byte(Initdata[i]);
            
                }
          stop();
}
/**************读取转换结果***************/
unsigned int Read1115A(void)
{
  unsigned int   ResultL,ResultH;
  unsigned int    Result;
  SCL_H;
  start();
  Send1byte(0x91);
  ResultH=Read1byte();
  ResultL=Read1byte();
  stop();
  Result=ResultH*256+ResultL;
  return   Result;
}
/***********模拟量采集转化为数字量***********/
unsigned int  Ad_1115A()
{
    unsigned long result_gd;
    Confige1115A();
    Pointregister1();
    result_gd=Read1115A();             //结果存储AD转化值
    return   result_gd;
}

相关帖子

沙发
dirtwillfly| | 2014-8-7 22:31 | 只看该作者
用的什么单片机?

使用特权

评论回复
板凳
往事随风丶|  楼主 | 2014-8-8 09:32 | 只看该作者
dirtwillfly 发表于 2014-8-7 22:31
用的什么单片机?

msp430f2619

使用特权

评论回复
地板
往事随风丶|  楼主 | 2014-8-8 16:58 | 只看该作者
现在的情况是不论输入怎么变,输出的数都是127

使用特权

评论回复
5
youluo235| | 2014-8-8 17:45 | 只看该作者
需要配置地址以及A0A1要一致才行,另外你用示波器测量下看是不是有应答信号。1115以前用过的,如果能读到前面写进去的数据那就说明成功一大步了。

使用特权

评论回复
6
往事随风丶|  楼主 | 2014-8-8 20:05 | 只看该作者
youluo235 发表于 2014-8-8 17:45
需要配置地址以及A0A1要一致才行,另外你用示波器测量下看是不是有应答信号。1115以前用过的,如果能读到前 ...

请问怎么读取前面写进去的数据?

使用特权

评论回复
7
youluo235| | 2014-8-8 20:16 | 只看该作者
往事随风丶 发表于 2014-8-8 20:05
请问怎么读取前面写进去的数据?

参考当时自己写的这个吧。也是用的430单片机写的。只要应答信号有就没问题的。另外记得还有时序的延时问题。PDF写的很明白,主要分3步。寄存器的设置必须设置对。另外地址的时候一定要和A0A1对应起来。不要接错了。

ADS1115.zip (37.07 KB)

使用特权

评论回复
8
往事随风丶|  楼主 | 2014-8-8 20:39 | 只看该作者
youluo235 发表于 2014-8-8 20:16
参考当时自己写的这个吧。也是用的430单片机写的。只要应答信号有就没问题的。另外记得还有时序的延时问 ...

终于好了,估计就是没写应答信号的缘故,非常感谢。

使用特权

评论回复
9
youluo235| | 2014-8-9 08:05 | 只看该作者
第九个脉冲必须有,才会应答,呵呵

使用特权

评论回复
10
往事随风丶|  楼主 | 2014-8-9 15:00 | 只看该作者
youluo235 发表于 2014-8-9 08:05
第九个脉冲必须有,才会应答,呵呵

现在还存在一个问题,两个通道采集数据时,通道0的数据跑到通道1上去了,通道1的数据跑到通道0上去了,你有遇到过这种问题吗?

使用特权

评论回复
11
youluo235| | 2014-8-9 19:39 | 只看该作者
往事随风丶 发表于 2014-8-9 15:00
现在还存在一个问题,两个通道采集数据时,通道0的数据跑到通道1上去了,通道1的数据跑到通道0上去了,你 ...

你这问题让我想起一个人。楼主参加今年省赛的吗?这是因为这个AD不是高速的AD.他的吞吐率不够,而你操作的时间太快了。导致他反应不过来。就容易形成串码的问题。你可以再采集一次的时候延时一下继续采下一次。或者在IIC通信协议里面的每个语句后面稍微加个延时就好。当然前提是不会对你要求的速度进行影响。

使用特权

评论回复
12
往事随风丶|  楼主 | 2014-8-9 20:25 | 只看该作者
youluo235 发表于 2014-8-9 19:39
你这问题让我想起一个人。楼主参加今年省赛的吗?这是因为这个AD不是高速的AD.他的吞吐率不够,而你操作 ...

确实是准备今年省赛。我加个延时再试试

使用特权

评论回复
13
youluo235| | 2014-8-9 21:03 | 只看该作者
本帖最后由 youluo235 于 2014-8-9 21:11 编辑
往事随风丶 发表于 2014-8-9 20:25
确实是准备今年省赛。我加个延时再试试

莫非楼主

使用特权

评论回复
14
往事随风丶|  楼主 | 2014-8-9 21:05 | 只看该作者
youluo235 发表于 2014-8-9 21:03
莫非楼主610的吗

你不会是601的吧?

使用特权

评论回复
15
youluo235| | 2014-8-9 21:11 | 只看该作者
往事随风丶 发表于 2014-8-9 21:05
你不会是601的吧?

印象中没有601.呵呵

使用特权

评论回复
16
往事随风丶|  楼主 | 2014-8-9 21:20 | 只看该作者
youluo235 发表于 2014-8-9 21:11
印象中没有601.呵呵

没有?

使用特权

评论回复
17
youluo235| | 2014-8-10 08:41 | 只看该作者
往事随风丶 发表于 2014-8-9 21:20
没有?

继续延时1115.祝你好运

使用特权

评论回复
18
jeraw| | 2016-1-25 21:03 | 只看该作者
往事随风丶 发表于 2014-8-9 15:00
现在还存在一个问题,两个通道采集数据时,通道0的数据跑到通道1上去了,通道1的数据跑到通道0上去了,你 ...

遇到了相同的问题,是不是加延时解决的?

使用特权

评论回复
19
ysuyubin| | 2016-5-3 09:41 | 只看该作者
ADS1115是同步采样吗?谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

27

帖子

0

粉丝