stm32F103驱动ADS1115程序-4通道可用-ALERT中断可用-ADC芯片,应该是最全了

ADS1115 特性、简介

ADS1115是TI生产的具有I2C接口的16位ADC。

内部ADC采样率 8、16、32、64、128、250、475、860 SPS可调。

四通道输入可选,可选四通道间的差分输入,可也选择测量与GND间的单端电位差。

PGA增益 2/3、1、2、4、8、16 可调。

I2C器件地址 0x48(GND)、0x49(VDD)、0x4A(SDA)、0x4B(SCL) 可选。

ADC采样值超出可编程比较器的设定值时,会在 ALERT/RDY 引脚上输出一个电平信号。

 

1. ADS1115中文手册简介:

 

 

功能框图、典型电路

 

 

寄存器

3.1 Pointer register (Write-Only) (8Bit)  --  指针寄存器

注意:Pointer register并不是有地址空间的的寄存器,而是 I2C消息帧的从机寄存器地址。

 

3.2 Conversion register (Read-Only)(16Bit)  --  转换结果寄存器

 

3.3 Config Register (Read/Write)(16Bit)  --  配置寄存器

 

3.4 Lo_thresh register (Read/Write)(16Bit)  --  比较器下限阈值寄存器

Hi_thresh register (Read/Write)(16Bit)  --  比较器上限阈值寄存器

 

 

使用方法、寄存器配置:

配置 Config Register 寄存器,配置 输入通道、采样率、PGA放大倍数、比较器模式。

配置 Lo_thresh register、Hi_thresh register 可编程比较器。

设置Pointer register为Conversion register,I2C循环读数据,此为ADC转换后的值。

如果ADC采样值超出可编程比较器的设定值时,会在 ALERT/RDY 引脚上输出一个电平信号。

 

 

注意事项

ads1115的通信总线为 I2C,但使用上来讲,和标准的 I2C设备并不一样。

ads1115因为引入了一个8Bit的 Pointer register,使ads1115的 I2C读时序跟标准 I2C设备不同

ads1115的 I2C写时序是与标准I2C设备相同的。

标准 I2C设备的读时序为:从机器件地址 + 从机寄存器地址 + 从机的寄存器数据

ads1115的读时序为:从机器件地址 + 从机的寄存器数据(前提是要先设置 Pointer register

设置 Pointer register 的I2C时序:从机器件地址 + Pointer register(只需要配置这一次,以后的读都是从Pointer register读)

I2C读的差异见数据手册24、25页。

代码差异见下面代码。有条件的看看示波器、逻辑分析仪。

 

 

stm32F103驱动程序

ads1115.c

#include "ads1115.h"
#include "myiic.h"
#include "delay.h"
#include <math.h>

/**
  ******************************************************************************

  * @file    ads1115.c

  * @author  zhiLiangMa

  * @version V0.1.0

  * @date    2019/06/30

  * @brief   ads1115.c.h包含了ads1115基本驱动函数,超范围触发跳变沿,和称重传感器的单位转换

  ******************************************************************************

  * @attention
  *
	* 1.使用此驱动前注意。ads1115的iic时序跟at24c02,mpu6050这种标准iic协议有所不同
	* 	,不同主要体现在读取上。详见手册24页,写数据是跟标准iic一致的
	* 	,正常的iic的读,先发设备iic的ID,再发要读的寄存器地址,再发设备iic的ID+1
	* 	。而ads引入了设备指针寄存器,不用在每帧的iic帧中携带寄存器地址
	* 2.ads的正确读法为,iic写数据,将指针寄存器指向想读的寄存器地址
	* 	,再将iic的设备ID的最后一位当作读/写控制位,读1写0,省略标准iic帧中的寄存器地址。直接读数据。
	* 3.简而言之,标准iic读到用户想要的数据之前,需要发三个字节:设备ID,用户所需的设备寄存器地址,设备ID+1
	* 	。而ads,在得到用户想要的数据之前,只需要发送一个字节:包括读写控制位的设备ID。。。不过在此之前要写指针控制器将所需的地址写入
	* 4.还要注意,写16位寄存器的时候,一次必须写满16位。16位只写8位,后面8位没法寻址
  ******************************************************************************
  */


/*====================================================================================================*/
/*====================================================================================================*
** 函数名称: ADS1115_WriteOneByte(uint8_t ads_addr, uint8_t WriteAddr,uint8_t DataToWrite)
** 功能描述: 向ads1115内部寄存器,的指定地址写入1Byte数据
** 输    入: ads_addr			选中的ads1115的IIC器件地址
						 WriteAddr		写入数据的目的地址
						 DataToWrite	写入的1
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值