0x00:简介
20201014
主要是做个记录笔记,可能会有错误的地方,方便以后再次使用能快速上手,和方便刚用的工程师更快上手。可能布局有点乱
这里是用ADS1118 读取k形热电偶的温度。
0x01:引脚配置和功能
IO | 名字 | 类型 | 说明 |
1 | SCLK | 数字输入 | 串行时钟输入 |
2 | CS | 数字输入 | 芯片选择;0:激活。1:失能 |
3 | GND | 电源 | 电源地 |
4 | AIN0 | 模拟输入 | 模拟输入0。如果不使用,保持未连接或与VDD相连。 |
5 | AIN1 | 模拟输入 | 模拟输入1。如果不使用,保持未连接或与VDD相连。 |
6 | AIN2 | 模拟输入 | 模拟输入2。如果不使用,保持未连接或与VDD相连。 |
7 | AIN3 | 模拟输入 | 模拟输入3。如果不使用,保持未连接或与VDD相连。 |
8 | VDD | 电源 | 电源 |
9 | DOUT/DRDY | 数字输出 | 串行数据输出结合数据就绪;低电平有效 |
10 | DIN | 数字输入 | 串行数据输入 |
0x02: 电路设计
使用内部高精度温度传感器进行冷端补偿时,独立双通道热电偶测量系统的基本连接。除了热电偶,唯一需要的外部电路是偏置电阻、一阶低通、抗混叠滤波器和电源去耦电容器。
设置要求:
值 | |
电源电压 | 3.3V |
参考电压 | 内部 |
更新频率 | 每秒读数≥100 |
热电偶类型 | K |
温度测量范围 | –200°C to +1250°Cv |
TA=25°C时的测量精度(1) | ±0.7°C |
偏置电阻(RPU和RPD)有两个用途:
第一个目的是设置 热电偶应在设备规定的电压范围内。
第二个目的是给弱者上拉和下拉以检测热电偶导线是否开路。
当其中一根热电偶引线断开时正极输入将被拉至VDD,负极输入将被拉至GND。
因此,ADC读取满标度值,超出热电偶电压的正常测量范围,以指示故障状态。选择偏压电阻器的值时,必须注意使偏压电流不会降低测量精度。偏压电流流过热电偶和can导致热电偶引线上的自加热和附加电压降。偏差的典型值电阻器的范围从1 MΩ到50 MΩ。
VDD稳定后等待大约50μs,然后再与设备通信,以完成加电重置过程。
0x03:布局例显
0x04:寄存器
ADS1118有两个寄存器可以通过SPI接口访问。转换寄存器包含最后一次转换的结果。配置寄存器允许用户改变ADS1118的工作模式。并查询设备的状态。
1、转换寄存器[reset = 0x0000]
16位转换寄存器包含了二进制二补码格式的最后一次转换结果,上电后,转换寄存器被清零,并保持0,直到第一次转换完成。上电后,转换寄存器被清零,并保持0,直到第一次转换完成。
R/W = 读/写;R = 只读;-n = 复位后的值。
2、配置寄存器[reset = 058Bh]
16位的Config寄存器可以用来控制ADS1118的工作模式、输入选择、数据速率、全量程。范围,以及温度传感器模式。
R/W = 读/写;R = 只读;-n = 复位后的值。
Bit | Field | Type | Reset | 说明 | |
0 | Reserved | R | 1h | 将0或1写入该位没有任何影响。 | |
2-1 | NOP[1:0] | R/W | 1h | NOP[1:0]位控制数据是否写入配置寄存器。 如果要将数据写入配置寄存器,NOP[1:0]位必须为'01'。任何 其他值会导致一个NOP命令。在SCLK期间,DIN可以保持高电平或低电平。 00 = 无效数据,不更新配置寄存器的内容。 01 = 有效数据,更新配置寄存器(默认)。 10 = 无效数据,不更新配置寄存器的内容。 11 = 无效数据,不更新配置寄存器的内容。 | |
3 | PULL_UP_EN | R/W | 1h | 上拉启用 该位仅在DOUT/DRDY引脚上启用一个弱内部上拉电阻。 当CS为高电平时,内部的400-kΩ电阻连接总线。当启用时,一个内部的400-kΩ电阻连接到总线上。当禁用时,DOUT/DRDY引脚浮动。 0 = 禁用 DOUT/DRDY 引脚上的上拉电阻。 1 = 在DOUT/DRDY引脚上启用上拉电阻(默认)。 | |
4 | TS_MODE | R/W | 0h | 该位配置ADC转换温度或输入信号。 0 = ADC模式(默认值 1 = 温度传感器模式 | |
7-5 | DR[2:0] | R/W | 4h | 控制数据速率设置。 000 = 8 SPS | |
8 | MODE | R/W | 1h | 设备工作模式,控制ADS1118的工作模式。 0 = 连续转换模式 | |
11-9 | PGA[2:0] | R/W | 2h | 可编程增益放大器配置,这些位配置了可编程增益放大器。 000 = FSR is ±6.144 V(1) | |
14:12 | MUX[2:0] | R/W | 0h | 配置测量通道(1) | |
15 | SS | R/W | 0h | 单发转换开始该位用于开始一次转换。只有当处于掉电状态,当转换正在进行时,没有影响。 0 = 无影响 1 = 启动单次转换(当处于断电状态时)。 始终读回0(默认)。 |
(1):ADS1118的ADC内核测量一个差分信号VIN,即V(AINP)和V(AINN)的差值。转换器内核由一个差分、开关电容ΔΣ调制器和一个数字滤波器组成。这种架构导致任何共模信号都有很强的衰减。输入信号与内部电压基准进行比较。数字滤波器从调制器接收高速比特流,并输出与输入电压成比例的代码。
0x05:设备功能和模式(9.4)
9.4.1:复位 和 上电
当ADS1118上电时,会进行复位。作为复位过程的一部分,ADS1118将配置寄存器中的所有位设置为相应的默认设置。默认情况下,ADS1118在启动时进入掉电状态。设备接口和数字块处于活动状态,但不进行数据转换。ADS1118的初始掉电状态是为了缓解系统对电源要求严格的情况,避免在上电时遇到浪涌。
9.4.2:操作模式
ADS1118有两种工作模式:连续转换或单枪模式。配置寄存器中的MODE位选择相应的工作模式。
9.4.2.1:单次模式 和 掉电模式
当Config寄存器中的MODE(bit8)位被设置为1时,ADS1118进入掉电状态,并在以下情况下工作。单次模式。这种掉电状态是ADS1118第一次上电时的默认状态。虽然处于掉电状态,但设备仍会响应命令。ADS1118一直处于这种掉电状态。直到将1写入配置寄存器中的单枪(SS)位。当SS位被置位时,设备的 上电,将SS位重置为0,并开始一次转换。当转换数据准备就绪,可以检索。器件再次进入掉电模式。在转换过程中向SS位写入1没有任何影响。要切换到 连续转换模式,在配置寄存器的MODE位上写一个0。
9.4.2.2::连续转换模式
在连续转换模式下(MODE(bit8)位设置为0),ADS1118连续执行转换。当一次转换完成后,ADS1118将结果放入转换寄存器中,并立即开始另一次转换。要切换到单镜头模式,请向配置寄存器中的MODE位写1,或复位设备。
9.4.3:低功率的占空比循环
当降低输出数据速率时,ΔΣ ADC的噪声性能通常会得到改善,因为内部调制器的更多样本可以被平均化以产生一个转换结果。在功耗至关重要的应用中,可能不需要在低数据速率下改善噪声性能。对于这些应用,ADS1118支持占空比循环,可以通过定期
请求以有效的较低数据率读取高数据率读数。例如,处于掉电状态的ADS1118,数据率设置为860 SPS,可以由微控制器操作,指示每125 ms进行一次单次转换(8 SPS)。由于860 SPS的转换只需要大约1.2 ms,ADS1118在剩余的123.8 ms内进入掉电状态。在这种配置下,ADS1118消耗的电量为
大约是连续导通模式下消耗功率的1/100。占空比完全是任意的,由主控制器定义。ADS1118提供了不执行占空比的较低数据速率,并在需要时提供更好的噪声性能。
0x06:温度转换(9.3.6.1)
内部温度传感器:
ADS1118提供了一个集成的精密温度传感器。在配置寄存器中设置位TS_MODE = 1。温度数据表示为一个14位温度寄存器,它是左对齐的。在16位转换寄存器中,数据从最高有效字节(MSB)开始传输。当读取两个数据字节,前 14 位用于指示温度测量结果。1bit = 0.013125 度
例:读取数据为:0x0E00 >> 0000,1110,0000,0000
最高位为符号位:0000,1110,0000,0000 0:正温度,1:负温度
因为使用的是14bit ,所以实际数值:0000,1110,0000,0000 >>2 == 0000,0011,1000,0000 == 0x0380 == 896
当前温度 = 896 *0.031125 = 28℃
外部通道电压转换:
bit11-9:设置测量电压的范围:例如 001 = ±4.96V
读取数据 为16bit,其中最高位为 符号位: 1:负电压,0:正电压
正电压转换:
例如bit11-9=001,电压范围为:±4.96V
读取数据为0x515B:
最高位为 0 ,所以是正电压, 电压 = 0x515B* (4.096 / 0x7FFF) >> 20827*(4.096/32767) = 2603mV = 2.603V
负电压转换:
例如bit11-9=001,电压范围为:±4.96V
读取数据为 0xFFD9: >>1111,1111,1101,1001 去掉最高位符号位 和 逐位取反: 0000,0000,0010,0110 =0x0026
结果再加1 : 0x26+1=0x27;
电压 = -(0x27*(4.096 / 0x7FFF)) = -4.875mV
0x07: 程序(9.5)
9.5.1:通讯接口
SPI 4线通讯(CS、SCLK、DIN和DOUT/DRDY)或3信号线(在这种情况下,CS直接拉低)组成。该接口用于读取转换数据、读写寄存器和控制设备操作。
9.5.2:片选信号线 (CS)
芯片选择引脚(CS)选择ADS1118进行SPI通信。该功能在多个 设备共享同一串行总线。在串行通信期间,保持CS为低电平。当CS被取 高,串行接口被复位,SCLK被忽略,DOUT/DRDY进入高阻抗状态。在这种状态下。DOUT/DRDY不能提供数据就绪指示。在有多个设备的情况下,并且 必须监测DOUT/DRDY,定期降低CS。这时,DOUT/DRDY引脚要么立即被 高,表示没有新的数据,或者立即低,表示有新的数据。存在于转换寄存器中,并可用于转移。新数据可以在任何时候转移,而不需要 数据损坏的担忧。当传输开始时,当前的结果被锁定在输出移位寄存器中。并在通信完成前不会改变。这个系统避免了任何数据损坏的可能性。
9.5.3:SCLK时钟线
串行时钟(SCLK)具有施密特触发输入,用于将DIN和DOUT/DRDY引脚上的数据的输入和输出ADS1118。尽管该输入具有滞后性,但TI建议尽可能保持SCLK的干净,以防止因意外移动数据而产生故障。如果SCLK保持低电平28毫秒 串行接口复位,下一个SCLK脉冲开始一个新的通信周期。当串行接口传输中断时,可以使用这种超时功能来恢复通信。当串行接口 处于空闲状态,保持SCLK低电平。
9.5.4:数据输入MISO(DIN)
数据输入引脚(DIN)与SCLK一起用于向ADS1118发送数据。器件在SCLK下降沿将数据锁在DIN上。ADS1118从不驱动DIN引脚。
9.5.5:数据输出和数据就绪(DOUT/DRDY)
数据输出和数据准备引脚(DOUT/DRDY)与SCLK一起用于读取ADS1118的转换和寄存器数据。DOUT/DRDY上的数据在SCLK上升沿移出。DOUT/DRDY也用于指示转换完成和新数据可用。当新的数据准备好被检索时,该引脚转换为低电平。DOUT/DRDY还能够触发微控制器开始读取ADS1118的数据。在连续转换模式下,DOUT/DRDY在下一个数据准备信号之前8μs再次高电平转换。(DOUT/DRDY低电平),如果没有从器件中检索到数据。这个转换过程如图38所示。完成 在DOUT/DRDY返回高电平之前进行数据传输。
(1)CS保持低电平。如果CS为低电平,DOUT/DRDY为低电平,表示有新的数据可用。
当CS为高电平时,DOUT/DRDY默认配置了一个弱内部上拉电阻。此功能可降低DOUT/DRDY在中间电源附近浮动的风险,并在主器件中造成漏电流。要禁用该上拉电阻并将器件置于高阻抗状态,请将配置寄存器中的PULL_UP_EN位设置为0。
9.5.6:数据格式
ADS1118提供16位二进制双补格式的数据。正数 满量程输入产生的输出码为7FFFh,负数 量程输入产生的输出码为8000h。在这些情况下,输出剪辑,超过满量程的信号的代码。表5总结了不同输入信号的理想输出代码。图39显示了代码转换与输入电压的关系。(1)不包括噪声、INL、偏移和增益误差的影响。表5.输入信号与输入电压的关系 输入信号与输入电压的关系
9.5.7:数据读取
无论是单次拍摄还是连续拍摄,数据都以相同的方式写入和读取ADS1118转换模式,而不必发出任何命令。 ADS1118的工作模式通过以下方式选择Config寄存器中的MODE位。
将MODE位设置为0可将器件置于连续转换模式。在连续转换模式下,即使CS为高,设备也会不断启动新的转换。
对于单次拍摄模式,将MODE位置1。在单次模式下,新的转换只能通过将1写入SS位。
转换数据始终被缓冲,并保留当前数据,直到被新的转换数据替换为止。因此,可以随时读取数据而无需担心数据损坏。当DOUT / DRDY为低电平时,表示已准备好新的转换数据,请先将数据移出以读取转换数据,DOUT / DRDY上的数据(位15)的MSB在第一个SCLK上升沿移出在从DOUT / DRDY输出转换结果的同时,Config寄存器数据被锁存在DIN上在SCLK下降沿。ADS1118还提供了直接读取同一数据中的Config寄存器设置的可能性传输周期。一个完整的数据传输周期包括32位(当Config寄存器或使用数据回读)或16位(仅在CS线可以控制且未永久拉低时使用)。
9.5.7.1:32位数据传输
32位数据传输周期中的数据由四个字节组成:两个字节用于转换结果,以及一个配置寄存器读回的额外两个字节。设备总是先读取MSB。
在一个传输周期内写入相同的配置寄存器设置两次,如图40所示。如果方便的话,在传输周期的前半部分写入一次配置寄存器设置,然后保持DIN引脚在循环的后半段,要么低(如图41所示)要么高。如果配置寄存器没有更新在整个传输周期中,保持DIN引脚在低或高位置。配置寄存器设置在32位传输周期的前两个字节中写入的内容在同一周期的最后两个字节中被读回。
图40.配置寄存器回读的32位数据传输周期 配置寄存器回读的32位数据传输周期:
如果ADS1118没有与其他设备共享串行总线,CS可以保持低电平。如果CS为低电平,DOUT/DRDY为低电平,表示有新数据可用。
图41. 32位数据传输周期。DIN保持低电平:
9.5.7.2:16位数据传输
如果不需要回读配置寄存器数据,则还可以在一个短的16位数据传输周期内将ADS1118转换数据移出,如图42所示。因此,必须在第16个SCLK周期后将CS设为高电平。将CS拉高会复位SPI接口。下次CS变低时,数据传输从第一个SCLK上升沿当前缓冲的转换结果开始。如果在开始数据检索时DOUT / DRDY为低电平,则转换缓冲区已经用新结果更新。否则,如果DOUT / DRDY为高,则读取与前一个数据传输周期相同的结果。
7.6时序要求:串行接口
MIN | 单位 | ||
t(CSSC) | CS下降沿到第一个SCLK上升沿的延迟时间,(1) | 100 | ns |
t(SCCS) | 最终SCLK下降沿到CS上升沿的延迟时间, | 100 | ns |
t(CSH) | CS高,脉冲持续时间 | 200 | ns |
t(SCLK) | SCLK周期 | 250 | ns |
t(SPWH) | SCLK高,脉冲持续时间 | 100 | ns |
t(SPWL) | SCLK低,脉冲持续时间,(2) | MIN(100ns) max(28ms) | |
t(DIST) | 有效时间,在SCLK下降沿前DIN有效 | 50 | ns |
t(DIHD) | SCLK下降沿后DIN有效的保持时间 | 50 | ns |
t(DOHD) | SCLK上升沿无效的保持时间, | 0 | ns |
串行接口时序:
MCU.MOSI >> ADS1118.DIN MCU的发送时序:SCLK是高电平有效。在SCLK 高电平波形期间 将数据发出
MCU.MISO >> ADS1118.DOUT MCU的接收时序:SCLK低电平有效。在SCLK低电平波形期间读取 DOUT(MUC的MISO)
spi速度应该控制再 2kHz 以下;
10.1.6:伪代码示例
初始化:
1、通电;等待电源稳定,以确保通电复位完成;等待50μs
2、拉低CS
3、写入配置寄存器,将器件设置为FSR=±0.512 V,连续转换模式,数据速率=64 SPS。
2、将CS清零为高电平,复位串行接口。
数据采集:
1、等待 DOUT/DRDY 被拉低
2、最小延迟时间t(CSSC) = 100ns
3、读取转换结果并清除CS到高电平
掉电模式
1、拉低CS
2、延时最少 t(CSSC) = 100ns
3、将配置寄存器中的MODE位设置为'1',进入断电和单枪模式。
4、清除CS到高