老老实实看DataSheet吧,查找手册有以下几种途径:
1)到芯片厂商官网去下载资料;
2)在芯片器件采购平台搜索,如立创商城、半导小芯;
有原厂或代理翻译的中文手册,或者国产芯片中文手册,直接看中文就好了。没有的,老老实实看英文吧,翻译软件的文档翻译的也不咋地。。。
1. General Description 和 Features
第一步先看手册的首页,它都会提供:器件的概述和特性说明。搞懂和理解它说明的概念即可。
对于MAX6884芯片,可知这是一个用于电源监控的芯片。支持监控6路电压输入,和1个辅助输入、1个看门狗输入,具有三个可编程输出。可配置EEPROM存储。
对于6路电压输入,可以配置以20mV增量监控1v至5.8V的电压,或以10mV增量监控0.5v到3.05V的电压。
2. ELECTRICAL CHARACTERISTICS
第二步是结合pin 脚配置图和电气参数,查看硬件外围需要的配置。
一是供电,注意功率要求、电压要求、阻容匹配等等。
二是传感器端输入IO引脚电平的要求。
三是外围电路的配置。
四是管脚的默认状态。
等等。
这一步,可以用类似HAL库 HAL_I2C_IsDeviceReady() 的函数,直接验证I2C地址是否能通讯。能通讯证明芯片供电和I2C信号没问题。如果有问题,先检查供电,再测试I2C信号波形。
然后,再去配置寄存器、读取寄存器,验证读取到的数据是否正常。如果正常证明硬件OK,如果不行需要排查外围电路配置、用法是否正确。(类似的如温度监控芯片、气压采集芯片等等,需要配置差分电容、电阻、二极管或三极管的,需要一一验证,具体参照就是开发板和手册ELECTRICAL CHARACTERISTICS)
3. Detailed Description
第三步就是查看手册的详细描述。
先理解功能框图 Functional Diagram ,再查看具体各项功能的描述和使用方法。
简单的概述下,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 阈值设置
0x00到0x05为欠压阈值设置,0x06到0x0B为过压阈值或次级欠压阈值设置。80到8B为对应的EEPROM地址。
2)part2 模式配置
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. 阈值设置
参考上图,文档中已经直接给出了,实际电压值和寄存器code的转换关系。
例如,电压阈值为5.8V,要设置的电压阈值为2.8V,
则 X = (2.8 - 1)/0.02 = 0x5A 。
从公式中也可以看出,要设置的电压值必须要大于1V,如果监控的电压过小则要按照3.05V的公式进行计算。
如果电压更小的话,好像要使用更复杂的外部电路设计才能支持到。
略.