STM32
直播中

刘强

8年用户 1261经验值
私信 关注
[问答]

ads1110用IIC读不出数据是什么原因导致的?

#include "ADS1110.h"
void WRITE_ADS1110(u8 dat)
{
  //addr_w= (edx<<1)|0x90;          //addr:1001xxx0
  IIC_Start();  
  IIC_Send_Byte(ADS1110_ADDR_W) ;//写地址
  IIC_Wait_Ack() ;
  IIC_Send_Byte(dat) ;
  IIC_Wait_Ack() ;
  IIC_Stop();
   
}
void ADS1110_Init(void)
{
  IIC_Init();
  WRITE_ADS1110(0x8c);
}
u16 READ_ADS1110(void)
{
  u8 reg;
  u16 dat;
  //addr_w= (edx<<1)|0x91;          //addr:1001xxx1
  IIC_Start();
  IIC_Send_Byte(ADS1110_ADDR_R) ;//读地址
  IIC_Wait_Ack() ;
  dat = IIC_Read_Byte()<<8;
  IIC_Ack();
  dat += IIC_Read_Byte();//读出的转换数据存入16位变量中
  IIC_Ack(); //
  reg=0;
  reg = IIC_Read_Byte();
  IIC_Ack();
  IIC_Stop();
  return dat;
}


回帖(1)

红旧衫

2024-4-30 17:21:21
ADS1110是一款12位分辨率、4通道模拟-数字转换器(ADC),它使用I2C通信协议与微控制器进行通信。在使用ADS1110时,如果无法通过IIC读取数据,可能有以下几个原因:

1. 硬件连接问题:请检查ADS1110模块与微控制器之间的硬件连接是否正确。确保SDA、SCL和VCC线路连接正确,且没有短路或断路现象。

2. 地址冲突:请检查ADS1110的I2C地址是否与其他设备冲突。ADS1110的I2C地址由其地址引脚(ADDR)的电平决定,可以通过设置ADDR引脚的电平来更改地址。

3. 微控制器I2C驱动问题:请检查微控制器的I2C驱动是否正确安装和配置。确保I2C初始化函数(如IIC_Init())已正确调用,并且I2C时钟速率与ADS1110兼容。

4. ADS1110配置问题:请检查ADS1110是否已正确配置。例如,确保已设置正确的数据速率、输入通道和增益等参数。

5. 程序错误:请检查您的程序代码是否正确。您提供的代码片段中,有一些注释和代码可能需要修改:

   a. 注释中的"addr_w"变量未在代码中定义。
   b. 注释中的"edx"变量也未在代码中定义。
   c. 在WRITE_ADS1110函数中,应使用ADS1110的写入地址(通常是0x48或0x49,取决于ADDR引脚的设置)。

6. 电源问题:请确保ADS1110的供电电压在规定的范围内(通常为2.0V至5.5V)。

7. ADS1110模块损坏:如果以上步骤都无法解决问题,可能是ADS1110模块本身存在故障。尝试更换一个新的ADS1110模块进行测试。

综上所述,要解决ADS1110无法通过IIC读取数据的问题,需要从硬件连接、地址配置、微控制器I2C驱动、ADS1110配置和程序代码等方面进行排查。希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分