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

老老实实看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的公式进行计算。

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

略.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/23387.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下JDK版本与安装版本不一致问题

目录 一. &#x1f981; 前言二. &#x1f981; 操作流程三. &#x1f981; 总结四. &#x1f981; Happy Ending 一. &#x1f981; 前言 最近重新安装了centos7.9,针对以前遇到的Java版本不一致的情况, 提出了另一种方法,该方法简单易行,容易理解。 二. &#x1f981; 操作…

Win10安全中心怎么关闭?Win10安全中心关闭方法

Win10安全中心怎么关闭&#xff1f;关闭Win10的安全中心可以帮助用户自定义系统的安全和防护设置&#xff0c;但有些用户不知道怎么操作才能关闭安全中心&#xff0c;首先用户需要打开Win10电脑的设置选项&#xff0c;接着打开安全中心&#xff0c;然后关掉安全中心的实时保护、…

【Spring core学习二】创建Spring 项目 Spring的存

目录 &#x1f31f;一、创建最原始的Spring-core项目。 &#x1f31f;二、怎么往Spring中存取对象&#xff1f; &#x1f337;1、在Spring中存对象 &#x1f337;2、通过getBean获取对象的三种方式 &#x1f337;3、通过factory方式获取对象 &#x1f31f;三、对存对象的…

回首2023上半年:成长、思考、感恩

文章目录 每日一句正能量前言一、目标达成情况总结二、工作和学习成果总结三、下半年规划总结四、个人想法 后记附录 每日一句正能量 做一个向日葵族&#xff0c;面对阳光&#xff0c;不自艾自怜&#xff0c;每天活出最灿烂的自己。曾经拥有的&#xff0c;不要忘记。不能得到的…

unity 使用vrtk4的插件 打包htv vive VR客户端包,手柄不生效

背景&#xff1a; 目的&#xff1a;u3d使用vrtk开发pico应用(vrtk是为了到时候无缝衔接后续要买的htc vive pro 2) 先导入了tilia importer&#xff08;也就是vrtk4.0&#xff0c;根据教程模块化使用功能&#xff09;和pico官网下的“PICO Unity IntegrationSDK-214-20230302…

云计算行业岗位介绍

云计算、大数据、人工智能作为新一代信息技术产业&#xff0c;未来发展前景不可估量&#xff0c;就业“前途”一片光明。 随着阿里云、腾讯云、华为云为首的国内云厂商的快速发展&#xff0c;释放出来的岗位也越来越多&#xff0c;很多有着“大厂梦”的小伙伴可以通过考取大厂…

深入理解预训练(pre-learning)、微调(fine-tuning)、迁移学习(transfer learning)三者的联系与区别

1. 什么是预训练和微调 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先&#xff0c;你需要随机初始化参数&#xff0c;然后开始训练网络&#xff0c;不断调整参数&#xff0c;直到网络的损失越来越小。在训练的过程中&#xff0c;一开始初始化的参数会不断变化。…

解决github无法拉取submodule子模块的问题

引言 当使用git clone --recursive url 拉取一个配置了子模块的仓库后&#xff0c;会卡住。 同时在使用git clone 拉去https的url时&#xff0c;同样可能会出现一直卡在cloning int reposity...本文提供一个简单的脚本来解决该问题。 前置准备 需要配置好git的相关配置&…

【python】python手机评论抓取+情感分析(python代码+报告)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、51CTO技术博主 &#x…

快速排序的非递归实现、归并排序的递归和非递归实现、基数排序、排序算法的时间复杂度

文章目录 快速排序的非递归三数取中法选取key快速排序三路划分 归并排序的递归归并排序的非递归计数排序稳定性排序算法的时间复杂度 快速排序的非递归 我们使用一个栈来模拟函数的递归过程&#xff0c;这里就是在利用栈分区间。把一个区间分为 [left,keyi-1][key][keyi1,right…

TypeScript 学习笔记 环境安装-类型注解-语法细节-类-接口-泛型

文章目录 TypeScript 学习笔记概述TypeScript 开发环境搭建 类型注解类型推断 数据类型JS的7个原始类型Array数组object、Object 和 {}可选属性 ? 和 可选链运算符?. function函数TS类型: any类型 | unknow类型TS类型: void类型TS类型&#xff1a;never类型 &#xff08;几乎…