快速上手一个I2C传感器 | MAX6884

老老实实看DataSheet吧,查找手册有以下几种途径:

1)到芯片厂商官网去下载资料;

2)在芯片器件采购平台搜索,如立创商城、半导小芯;

有原厂或代理翻译的中文手册,或者国产芯片中文手册,直接看中文就好了。没有的,老老实实看英文吧,翻译软件的文档翻译的也不咋地。。。

1. General Description 和 Features

第一步先看手册的首页,它都会提供:器件的概述和特性说明。搞懂和理解它说明的概念即可。

快速上手一个I2C传感器 | MAX6884_第1张图片

对于MAX6884芯片,可知这是一个用于电源监控的芯片。支持监控6路电压输入,和1个辅助输入、1个看门狗输入,具有三个可编程输出。可配置EEPROM存储。
对于6路电压输入,可以配置以20mV增量监控1v至5.8V的电压,或以10mV增量监控0.5v到3.05V的电压。

2. ELECTRICAL CHARACTERISTICS

快速上手一个I2C传感器 | MAX6884_第2张图片

第二步是结合pin 脚配置图和电气参数,查看硬件外围需要的配置。

一是供电,注意功率要求、电压要求、阻容匹配等等。

二是传感器端输入IO引脚电平的要求。

三是外围电路的配置。

四是管脚的默认状态。

等等。

这一步,可以用类似HAL库 HAL_I2C_IsDeviceReady() 的函数,直接验证I2C地址是否能通讯。能通讯证明芯片供电和I2C信号没问题。如果有问题,先检查供电,再测试I2C信号波形。

然后,再去配置寄存器、读取寄存器,验证读取到的数据是否正常。如果正常证明硬件OK,如果不行需要排查外围电路配置、用法是否正确。(类似的如温度监控芯片、气压采集芯片等等,需要配置差分电容、电阻、二极管或三极管的,需要一一验证,具体参照就是开发板和手册ELECTRICAL CHARACTERISTICS)

3. Detailed Description

第三步就是查看手册的详细描述。

先理解功能框图 Functional Diagram ,再查看具体各项功能的描述和使用方法。
快速上手一个I2C传感器 | MAX6884_第3张图片

简单的概述下,MAX6884框图:

通道IN1到通道IN6,经过DETECTOR检测器或比较器,一是送到ADC MUX多路复用器,二是送到PROGRAMMABLE ARRAY 可编程逻辑阵列。

ADC MUX多路复用器每200ms对IN1-IN6、AUXIN和REF(VCC)进行转换,ADC数据最终存储到18h到27h只读寄存器。

PROGRAMMABLE ARRAY 可编程逻辑阵列对6路输入进行检测,可配置下限值,下下限值或者上限值,外部触发条件后,输出触发信号(低电平有效)和记录故障。

其中,基准电压源为1.25V,VCC最低输出要求2.55V(即ULDO),有1个地址输入口A0-即允许最多2个设备共享总线。

此外,由于寄存器配置项变化较多,提供EEPROM存储 寄存器配置,上电后自动加载和设置到寄存器。

3. Table 12. Register Map

然后(第四步)就是查看寄存器表,一览具体配置项。

1)part1 阈值设置

快速上手一个I2C传感器 | MAX6884_第4张图片

0x00到0x05为欠压阈值设置,0x06到0x0B为过压阈值或次级欠压阈值设置。80到8B为对应的EEPROM地址。

2)part2 模式配置

快速上手一个I2C传感器 | MAX6884_第5张图片

0Eh 选择IN1到6通道是次级欠压还是过压

0Fh 选择IN1到6通道的阈值范围

10h 选择IN1到6通道的高阻抗模式 正常不用高阻抗模式 

11和12h 配置复位输出类型、时间和依赖项

13和14h 配置欠压/过压输出类型、时间和依赖项

3)part 3 只读数据寄存器

由于芯片ADC精度为10位,所以用了2个寄存器读取,低地址为高8位,高地址为低2位,以此类推供8路电压(16个寄存器)。

基本转换关系 : ADC = ( byte1 << 2 ) + (byte2 & 0x03) 

28/29h为通道故障码寄存器,2Ah为输出故障寄存器,当触发欠压或过压时,芯片会记录故障和置位,同时输出低电平,读取后故障码置0。

4. 电压读取

一般I2C芯片的ADC数据读取,去看手册ELECTRICAL CHARACTERISTICS的ADC部分。

一是ADC精度(即最大值),二是基准电压和测量关系。

MAX6884这里就直接给出了LSB值,如下。

即电压阈值为5.8V时,LSB大小为7.32mV。则ADC读取数据若为0x1F4 500, 则实际电压值为3.66v。

5. 阈值设置

快速上手一个I2C传感器 | MAX6884_第6张图片

参考上图,文档中已经直接给出了,实际电压值和寄存器code的转换关系。

例如,电压阈值为5.8V,要设置的电压阈值为2.8V,

则 X = (2.8 - 1)/0.02 = 0x5A 。

 从公式中也可以看出,要设置的电压值必须要大于1V,如果监控的电压过小则要按照3.05V的公式进行计算。

如果电压更小的话,好像要使用更复杂的外部电路设计才能支持到。

略.

你可能感兴趣的:(分享,嵌入式硬件)