极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9005|回复: 4

*******求助********* IIC转换芯片ADS1100不能读出数据

[复制链接]
发表于 2014-8-28 13:52:43 | 显示全部楼层 |阅读模式
本帖最后由 尕老汉 于 2014-8-31 00:12 编辑

想外接一个AD ,已经按照芯片手册写了个测试程序,但是不能读取数据,手里的芯片是ads1100 A0。

  1. #include <Wire.h>
  2. #define ADS1100 (0x90 >> 1)  // ADS1100A0
  3. void setup()
  4. {
  5. Serial.begin(9600);
  6.   Wire.begin();
  7. }

  8. void loop()
  9. {
  10. int x,y,z;
  11.   Wire.beginTransmission(ADS1100);
  12.     Wire.write(0x90);//写控制
  13.     Wire.write(0x8c);//
  14.     Wire.write(0x91);   //读控制
  15.   x=Wire.read();
  16.   y=Wire.read();
  17.      Wire.endTransmission();//结束传输
  18.      Serial.print(x);
  19.      Serial.print(y);
  20.      Serial.println(z);
  21. }
复制代码




参考了一下BH1750的程序,修改代码后成功读取数据,

  1. #include <Wire.h>
  2. #include <math.h>

  3. int DAC1100address  (0x90 >> 1); //DAC1100A0 I2C地址
  4. int DAC1100read  (0x91 >> 1);     //DAC1100A0 I2C地址
  5. byte buff[2];

  6. void setup()
  7. {
  8.   Wire.begin();
  9.   Serial.begin(9600);
  10. }

  11. void loop()
  12. {
  13.     Serial.println( DAC1100() );
  14. }

  15. unsigned int  DAC1100()
  16. {
  17.   int i=0;
  18.   unsigned int  val=0;

  19.   Wire.beginTransmission(DAC1100address);
  20.   Wire.write(0x8c);
  21.   Wire.endTransmission();  
  22.   delay(200);
  23.   Wire.beginTransmission(DAC1100read);
  24.   Wire.requestFrom(DAC1100read, 2);    //只需读取高八位和低八位数据,第三节配置数据不需要读取
  25.   while(Wire.available())
  26.   {
  27.     buff[i] = Wire.read();  
  28.     i++;
  29.   }
  30.   Wire.endTransmission();
  31.   val=buff[0]*255+buff[1];
  32.   return val;
  33. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-8-28 14:14:09 | 显示全部楼层
控制下速度试试,可能是采样率太高了
回复 支持 反对

使用道具 举报

发表于 2014-8-29 11:06:22 | 显示全部楼层
  1. byte readRegister(byte addressToRead)
  2. {
  3.   Wire.beginTransmission(ADS1100);
  4.   Wire.write(addressToRead);
  5.   Wire.endTransmission(false); //endTransmission but keep the connection active

  6.   Wire.requestFrom(ADS1100, 1); //Ask for 1 byte, once done, bus is released by default

  7.   while(!Wire.available()) ; //Wait for the data to come back
  8.   return Wire.read(); //Return this one byte
  9. }
复制代码
你先用这个函数测试一下 能不能读出寄存器的值 , Wire.endTransmission(false); 看看是不是这句代码的问题  ,希望能帮到你
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-31 00:04:03 | 显示全部楼层
么么哒,逗逼 发表于 2014-8-28 14:14
控制下速度试试,可能是采样率太高了

十分感谢,已解决
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-31 00:04:33 | 显示全部楼层
xzmoji 发表于 2014-8-29 11:06
你先用这个函数测试一下 能不能读出寄存器的值 , Wire.endTransmission(false); 看看是不是这句代码的问题 ...

十分感谢,已解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-6-4 00:08 , Processed in 0.049693 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表