【分析笔记】全志平台 TWI 上拉电压异常的问题
记录说明
原本这么简单的芯片,没有必要做记录,后来发现其中有一颗单独挂在 TWI2 无法通信,而主要原因是最容易忽视的电源域的问题,因此记录一下这件事情。
芯片介绍
MCP3021 是一颗 10BIT 的 ADC 器件,直接通过 I2C 读取两个字节的数据即可获取到 10BIT 的数值。
分析过程
内核版本:Linux version 4.9.56
幸得全志在线的 Syter 提醒了一下,不然估计还得捣鼓一阵,在此感谢 Syter:
- 使用 i2cdetect -y 2 无法检测到芯片,意味着无法通信。
- TWI2 与其它 TWI 的一样都是通过 10K 上拉到 3.3V,但是测量发现只有 TWI2 是 1.5V。
- 通过手动设置 PE14\PE15 为 GPIO 口模式,并设置输入,测量只有 1.5V。
- 通过手动设置 PE14\PE15 为 GPIO 口模式,并设置输出高电平,测量只有 1.2V。
- 拆除唯一一颗挂在 TWI2 上面的 MCP3021A5T-E 芯片,测试结果和上面一样。
- 后发现 TWI2 与 TWI0\TWI1 唯一不同的是不 TWI2 属于 PE 组,其它共属 PH 组。
- 测量 PE 组 GPIO 的电源域,只有 1V 左右,通过设置并使能 3.3V VCC-PE,测量上拉电压正常。
- 经过测试,可以正常通信,问题得到解决,PE 组没有供电,测量的 1V 应该是通过上拉电阻串进去的电。
如何使能指定组的 GPIO 电源域,取决于实际电路从哪取的电源,如果是 PMU 的某一路电源,只需启用该路电压并设置为 1003300 即可,如:
[power_sply]
......
gpio1_vol = 1003300
应用方法
一、确认器件地址
| 型号 | 器件地址 |
|---|---|
| MCP3021A0T-E | 0x48 |
| MCP3021A1T-E | 0x49 |
| MCP3021A2T-E | 0x4A |
| MCP3021A3T-E | 0x4B |
| MCP3021A4T-E | 0x4C |
| MCP3021A5T-E | 0x4D |
| MCP3021A6T-E | 0x4E |
| MCP3021A7T-E | 0x4F |
二、启用 I2C 控制器
[twi2]
twi2_used = 1
twi2_scl = port:PE14<3><default><default><default>
twi2_sda = port:PE15<3><default><default><default>
[twi2_suspend]
twi2_scl = port:PE14<7><default><default><default>
twi2_sda = port:PE15<7><default><default><default>
三、命令行测试验证
数据读取:
root@localhost:~# i2ctransfer -y -f 0 r2@0x4d
0x01 0x2c
数据解析:
1. 高字节:0x01 --> 0000 0001 --> 取低四位:0001
2. 低字节:0x2c --> 0010 1100 --> 取高六位:0010 11
3. 合并字节:0001 0010 11 --> 0001001011 --> 75
4. 换算电压:75 * 3.3 / (2^10) = 0.24V 与万用表测量电压基本一致。
【分析笔记】全志平台 TWI 上拉电压异常的问题的更多相关文章
- 移动端实现上拉加载更多(使用dropload.js vs js)
做下笔记,:移动端实现上拉加载更多,其实是数据的分段加载,在这里为了做测试我写了几个json文件作为分段数据: 方式一:使用dropload.js; 配置好相关参数及回调函数就可使用:代码如下 var ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...
- 用mescroll实现无限上拉增加数据,下拉刷新数据 (学习笔记)
最近自己做一个web app需要用到上拉查询下页数据,网上看了很多很多帖子,发现并不能快速的套用,总是会出现各种问题无法使用,于是无奈自己跑去看了官方api文档,终于做了出来,至此做个笔记,以后用到可 ...
- Flutter学习笔记(25)--ListView实现上拉刷新下拉加载
如需转载,请注明出处:Flutter学习笔记(25)--ListView实现上拉刷新下拉加载 前面我们有写过ListView的使用:Flutter学习笔记(12)--列表组件,当列表的数据非常多时,需 ...
- 【学习笔记】js下拉刷新、上拉加载 mescroll框架的使用
写在前边: 工作需要,使用ajax在原来的列表下边使用ajax请求后台数据,拼接在列表最下边,在github转了好久,发现了一个bug极多的js刷新插件,尝试了一个下午,就在快放弃的时候,发现下边有留 ...
- 【Arduino学习笔记06】上拉电阻和下拉电阻
为什么要用上拉电阻和下拉电阻?--避免输入引脚处于"悬空"状态 下图是一个没有使用上拉电阻/下拉电阻的电路图: 在按键没有按下时,要读取的输入引脚没有连接到任何东西,这种状态就称为 ...
- Spark大型项目实战:电商用户行为分析大数据平台
本项目主要讲解了一套应用于互联网电商企业中,使用Java.Spark等技术开发的大数据统计分析平台,对电商网站的各种用户行为(访问行为.页面跳转行为.购物行为.广告点击行为等)进行复杂的分析.用统计分 ...
- zeromq源码分析笔记之线程间收发命令(2)
在zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定:另一类是socke ...
- 关于51单片机IO引脚的驱动能力与上拉电阻
单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. 单片机的输出电流,很大程度上是取决于引脚上的外接器件. 单片机输出低电平时,将允许外部 ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
随机推荐
- python 的time、datetime模块
python 时间模块 import datetime res = datetime.datetime.now() print(res) # 2022-08-07 16:47:07.120459 ...
- 元数据性能大比拼:HDFS vs S3 vs JuiceFS
元数据是存储系统的核心大脑,元数据性能对整个大数据平台的性能和扩展能力至关重要.尤其在处理海量文件的时候.在平台任务创建.运行和结束提交阶段,会存在大量的元数据 create,open,rename ...
- JVM运行时数据区域详解
参考文章: <Java Se11 虚拟机规范> <深入理解Java虚拟机-JVM高级特性与最佳实践 第3版>- 周志明 本文基于Java Se 11讲解. 根据<Java ...
- Java读取txt文件、excel文件的方法
Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...
- 【Spring系列】- 手写模拟Spring框架
简单模拟Spring 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 前言 上次已经学习了 ...
- Perl语言中一些内置变量等,$x、qw、cmp、eq、ne等
转载 Perl语言中一些内置变量等,$x.qw.cmp.eq.ne等 字母 符号 释义 eq = = equal(等于) ne != not equal(不等于) cmp 比较 qq " ...
- nginx日志切割并备份
[root@lecode-pre55 bin]# cat nginx-log.sh #!bin/bash #auther:ansheng #desc: nginx日志备份,注意脚本中文件的路径. #备 ...
- 你听说过OTA吗?
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/M660Sc4ey1SxCpRT6vcM9g what? 不知有多少 ...
- C++ 一个简洁的CHECK宏
#define CHECK2(condition, message) \ (!(condition)) ? (std::cerr << "Assertion failed: (& ...
- @responseBody 返回更多数据
@responseBody:注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需 ...