ADS1118调试指南和寄存器解析

ADS1118基本功能

ADS1118是TI的16位ADC,内置1MHz晶振和参考电压源,转换速度8~860次每秒可调,量程±0.256V到±6.144V可调,可选单端输入或差分输入,内部集成温度传感器。

ADS1118寄存器

ADS1118的寄存器非常简单,只有2个16bit的寄存器。其中一个为只读寄存器,保存ADC转换后的值;另一个为配置寄存器,配置采集通道、正负量程、采集模式、采集速率、采集源(电压或温度)等。

ADS1118的转换寄存器

ADS1118的转换寄存器长度为16位,以补码的形式编码,用来保存每次AD转换后的结果。

ADS1118的配置寄存器

名字读写类型初始值描述
15SS读写0h单次转换开始,只用于单次转换模式,没有转换时写入1表示开始转换,写入0没有作用,正在转换时写入1也没有作用,此位永远读取为0
14~12MUX读写0h选择电压的输入通道: 000=Ain0+ Ain1-(差分);001=Ain0+ Ain3-(差分);010=Ain1+ Ain3-(差分);011=Ain2+ Ain3-(差分);100=Ain0+(单端);101=Ain1+(单端);110=Ain2+(单端);111=Ain3+(单端) 单端输入负参考为GND
11~9PGA读写2h量程选择:000=±6.144V;001=±4.096V;010=±2.048V;011=±1.024V;100=±0.512V;101=110=111=±0.256V;
8MODE读写1h选择转换模式,0=连续转换模式,1=单次转换模式(单次转换完成后变为掉电状态)
7~5DR读写4h转换速率:000=8;001=16;010=32;011=31;100=128;101=250;110=475;111=860(次每秒)
4TS_MODE读写0h0=采集电压;1=采集内部温度传感器
3PULLUP_EN读写1h控制是否使能DOUT/DRDY引脚的内部弱上拉:0=不上拉,1=上拉(推荐)
2~1NOP读写1h确定此次参数设置是否有效:01=设置生效,其他皆为使ADS1118忽略此次设置
0保留只读1h保留位,写0或写1没有任何影响,读取永远为1

ADS1118读写时序分析

ADS1118共有两种读写模式:32-Bit模式和16-Bit模式,两种模式均为高位在前。32-Bit模式用于CS(片选)引脚始终为低的情况,16-Bit模式用于片选引脚由单片机IO控制的情况。

32-Bit模式

32-Bit模式下CS引脚可以一直保持为低,节省一个IO口。32-Bit模式可以细分为两种,一种是把设置寄存器(16bit)写入两次,一种是写入一次后第二次(后16bit)写0。
两种32-Bit模式时序图
读取到的数据只有一种格式,前16位为转换寄存器中储存的上次转换的值,后16位为刚才写入的寄存器设置。在每次完成32-Bit通信后,DOUT/DRDY引脚再次拉低时代表下一次AD采集已完成,可以读取数据。

16-Bit模式

16-Bit模式要求在每两次通信之间CS(片选)引脚要拉高一次。每次通信可写入16bit的配置寄存器值和读取到16bit的转换寄存器值。
在这里插入图片描述

ADS1118数据格式

电压采集数据格式

ADS1118采用补码的数据格式,采集电压时,读取到的16bit数据可以直接赋给C语言中的short(有符号16bit整数)类型然后根据量程乘以比例系数得到电压值。量程和比例系数表如下。

量程比例系数
±6.144V187.5μV
±4.096V125μV
±2.048V62.5μV
±1.024V31.25μV
±0.512V15.625μV
±0.256V7.8125μV

温度采集数据格式

ADS1118通信得到的16位温度数据中只有高14位有效(低两位永远为0),为一个14位有符号整数。在处理过程中可以将数据先按照无符号数向右位移(>>)2位,再判断第14位是否为1(1则表示温度为负),若为1则减一转化为反码,在将低13位按位取反得到原码,再取负,就能将其转化为16位有符号整数(short)直接进行下一步运算。参考C语言程序如下:

val = ((unsigned short)val) >> 2;//温度数据高十四位有效
if(val & 0x2000){//温度数据第十四位表明是否为负数
	unsigned short temp = ((unsigned short)val) ^ 0x2000;//第十四位清零
	temp = temp-1;//转换为反码
	temp = (~temp)&0x1FFF; //低十三位按位取反得原码
	val = -temp; //重新取负转换为十六位的补码格式
}

测试代码

包含ADS1118.c和ADS1118.h,封装了4个通道单端采集函数和温度采集函数,采用模拟全双工SPI,STM32 HAL库风格,移植的朋友需要改一下ADS1118_ReadWrite。

  • 14
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值