【ADS1115】STM32使用软件I2C或硬件I2C读取ADS1115数据

一、前言

在嵌入式系统中,精确模拟信号采集是常见需求。ADS1115是一款高精度16位ADC,具备低功耗和内置PGA等优点,常用于电压、电流、温度等信号采集。本文将结合STM32,通过软件I2C和硬件I2C两种方式,实现ADS1115数据的读取,并给出详细解析与驱动代码,适合工程实战参考。


二、ADS1115芯片简介

芯片型号:ADS1115
制造商:Texas Instruments(TI)

主要特性:

  • 16位分辨率
  • 可配置4路单端输入或2路差分输入
  • 内置PGA(可编程增益放大器)
  • I2C接口(支持100kHz和400kHz)
  • 支持单次转换和连续转换模式
  • 内置比较器功能(可用于过压保护)

引脚定义:

引脚 名称
VDD 电源输入
GND
SCL I2C时钟线
SDA I2C数据线
ADDR 地址选择
ALERT/RDY 比较器输出或数据准备指示

器件地址:

ADDR引脚可通过接GND、VDD、SDA、SCL改变地址,共支持4个地址:

ADDR 连接 地址(7位)
GND 0x48
VDD 0x49
SDA 0x4A
SCL 0x4B

三、寄存器解析

ADS1115主要有四个寄存器:

地址 名称 功能说明
0x00 转换寄存器 存储转换结果
0x01 配置寄存器 控制输入通道、PGA、采样率等
0x02 低阈值寄存器 比较器使用
0x03 高阈值寄存器 比较器使用

配置寄存器(0x01)格式:

高8位(MSB):

  • [15] OS:写1启动转换
  • [14:12] MUX:输入通道选择(如0x04为 AIN0-GND)
  • [11:9] PGA:满量程范围(FSR)
  • [8] MODE:模式选择(0=连续,1=单次)

低8位(LSB):

  • [7:5] DR:数据速率(最高860SPS)
  • [4] COMP_MODE:比较器模式
  • [3] COMP_POL:比较器极性
  • [2] COMP_LAT:锁存比较器
  • [1:0] COMP_QUE:比较器队列(0x03=禁用)

四、STM32驱动实现

1. 软件I2C方式(使用GPIO模拟)

// 示例:基于GPIO模拟I2C读ADS1115数据
uint16_t ads1115_read_register(uint8_t dev_addr, uint8_t reg)
{
   
   
    uint8_t high, low;
    soft_i2c_start();
    soft_i2c_send_byte(dev_addr << 1); // 写地址
    if (!soft_i2c_wait_ack()) return 0xFFFF;
    soft_i2c_send_byte(reg);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maple-Leaf-Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值