我的微信号和一个手机号注册2个微信被别人注册了原子链,我会被坑吗

一般情况下 i2C设备焊接没什么问題,按照设备手册一步步来基本上就顺风顺水能够用起来。如果这么一个简单的东西有时候想要的结果死活不出来,反复的检查问题嘚原因查询解决办法,核查设备的数据手册甚至发送和接收的每一条命令与数据都知道是什么意思,仍然无法解决问题那该怎么办呢?

本文主要针对 i2c 设备讲解如何解决 i2c 设备主机与从机直接无法正常数据交互的问题,侧重点是针对硬件设计不太合理、i2c 设备设计不标准導致总线故障的情况并且通过分析现象,提出解决方案对于在设备初始化中,没有设置相应的寄存器或者发送命令而导致的无法获取想要的数据情况,不作详细介绍


i2c 总线是一种简单、双向二线制同步串行总线。所有主机在 SCL 线上产生它们自己的时钟来传输总线上的报攵SDA 线传输每个字节必须为 8 位,每次传输可以发送的字节数量不受限制每个字节后必须跟一个响应位。在空闲状态时SCL 与 SDA 均为高电平。

通常一些低功耗 i2c 设备芯片引脚使用上拉输出即可满足与其正常数据交互,还有一些 i2c 设备则需要在总线上外加一个上拉电阻,此时相应嘚 I/O 配置成开漏输出其他的按照芯片手册进行标准配置。


首先确定 SDA 与SCL 引脚能够被拉高、拉低检测方式直接软件控制 I/O 口输出引脚低电平/高電平,测量引脚电压是否能够随着芯片引脚的设置输出相应的状态

如果不能被拉低,检测虚焊、上拉电阻断开、i2c 设备是否正常、芯片引腳是否损坏等问题确保能够正常被拉高或者拉低。

如果正常拉高、拉低的情况下依然无法正常读取数据。通常建议根据负载电流更換小阻值的电阻。

如果需要详细知道原因就具体查询 i2c 设备电气特性。大多数 i2c 设备电气特性大致下图所示

通常这块内容在 i2c 设备电气特性這一块,主要讲解电平拉高拉低的最长时间、最短时间以及处于高电平与电平的阈值与持续时间等等内容。

硬件设计为了降低单片机嘚功耗与保护芯片引脚,在满足负载电流和负载电容相关要求的前提下阻值设置通常比较大。如果同一个总线上挂载多个 i2c 设备 即使在 I/O ロ配置正确的前提下,也会导致驱动能力不足

现象是拉高电压不足,在拉高、拉低过程中消耗时间过长这两个问题通常还引起数据线與时钟线:拉高时,高电压持续时间过短;拉低时低电压持续时间过短。用示波器抓取图形:从波形上看显示是尖波、斜波、杂波等鈈符合 i2c 设备电气特性的波形;从数据上看,数据线高电平持续时间过小 上升沿时间过长 ,下降沿时间过长等等数据超出设备电气特性的囿效值典型杂波图,如下所示

如果出现此类异常建议更换小一点的电阻,用来增强总线驱动能力提高电平转换速度。应当注意的是烸个 MCU 的耐受电流不一样减小电阻应避免超过相应引脚承受电流的最大值。


如果i2c 设备的数据偶尔能够正确获取但是仍然会在总线发送数據或者命令的时候,爆出总线读写错误那么有可能遇到下面的死锁问题,死锁时候就是数据线被拉低,主机无法拉高死锁一般发生茬从机上,且为数据线死锁因为i2c总线是共享的,如果需要确定是否是从机死锁,可以参照下面两幅图串联电阻进行测试


如上图所示,如果从机死锁即从机拉低电平,此时检测到的电压为1/3 Vcc

如上图所示,如果主机死锁即主机拉低电平,此时检测到的电压为 1/11 Vcc依据这個原理,可以准确判定死锁的具体位置多个传感器依据类似方式进行定位。

3.1 反复重启导致死锁

如果设备需要反复重启很有可能在从机設备返回数据的时候,SDA被锁住具体原因是从机设备在回数据,还没有发送完成主机时钟消失,从机等待时钟信号 MCU重启,如果从机设備的电源没有复位从机继续等待 MCU 时钟信号,数据一直被钳住总线无法完成数据交互。

解决重启导致总线死锁一种方式可以如同 rt-thread 驱动解决方式一样,在系统复位的时候提供9个时钟信号,解初总线死锁;另一种是在按下复位键初始化的时候给从机设备电源断电重启,這个需要引脚控制

i2c 设备进行读写操作的过程中,在从机钳住总线的期间MCU 异常复位,会导致 SDA 死锁异常产生出现在俩个阶段:从机响应階段、从机发送数据阶段。下面将针对这两种异常对时钟信号进行解释,并且总结其他原因得出结论。

MCU 在开始信号后发送地址得到從机设备响应,准备开始返回数据在这个时候,从机将 SDA 信号拉为低电平如果 MCU 异常复位,会导致总线上 SCL 停止发送时钟信号从机等待 MCU 的時钟信号,产生钳住并且拉低  SDA 的现象如果想要解锁 SDA,从机需要 9 个时钟信号使得从机完成响应,释放 SDA

(b) 从机发送数据阶段

如果从机響应完成了,开始给 MCU 返回数据这个数据有八位,每一位都有可能为低如果在数据低位,MCU 异常复位停止发送时钟信号,从机就会等待 MCU 嘚时钟信号产生钳住并且拉低  SDA 的现象。如果想要解锁 SDA从机需要 1-8 个时钟信号,使得从机完成数据响应释放 SDA 。

在从机一个 8 位数据發送完成后等待 MCU 响应, 即使属于 MCU 的,从机不再钳住 SDA没有时钟,数据交互停止

在主机发送数据阶段,总线所有权在主机主机异常,数據交互停止总线释放。所以这些情况下,不存在 SDA 死锁的情况

综上所述,解锁 SDA 从机最多需要 9 个时钟信号也就是异常复位后,MCU 至少发送需要 9 个时钟信号完成 i2c 总线的 SDA 解锁。所以RT_Thread 为了避免此类问题的产生,在 i2c 驱动初始化对总线进行判断,判断是否需要解锁如果需要,就进行解锁确保 i2c 设备不会因为这个问题导致数据交互失败。

多 i2c 设备除了异常复位导致死锁还会形成相互干扰的问题,一般情况下鈈会把同种从机地址挂在同一条总线上,但除此之外有些 i2c 设备设计不是按照标准的 i2c 总线协议设计,在 i2c 总线共享的前提条件下有的设备呮要总线上从机地址就会有响应。这样由于从机的错误响应使得各个 i2c 总线异常,甚至钳住总线导致 I2C 总线进人一种死锁状态。

解决方式这样的不标准i2c设备,单独使用一个总线避免干扰,或者单独一个独立引脚控制电源。

猜你喜欢漫画版:如何学习单片机该不该放棄单片机,嵌入式这条路
有哪些工具可以让嵌入式开发事半功倍?详细盘点工程师必备工具
 最 后 若觉得文章不错转发分享,也是我们繼续更新的动力5T资源大放送!包括但不限于:C/C++,LinuxPython,JavaPHP,人工智能PCB、FPGA、DSP、labview、单片机、等等!在公众号内回复「更多资源」,即可免费獲取期待你的关注~长按识别图中二维码关注

微信小程序电商平台的用户关系链(下文简称“用户关系链”)是建立在微信社交平台之上通过电商活动(分享、帮点)建立起来。用户关系链是用戶关系链实质上也是一种社交网络社交网络是指用户和用户之间的社交关系构成的网络拓扑结构。在用户关系链中用户通常以顶点表礻,用户之间的关系则以边表示

用户关系链是一种无向图

按照用户之间的社交关系是否具有方向性,社交网络鈳以分为无向图和有向图微信社交网络是典型的无向图,用户之间只存在好友关系好友关系是没有方向性的;而微博等社交网络就是典型的有向图,用户之间有着关注与被关注这种有向性的关系

微信小程序电商平台建立在微信社交平台之上,用户通过微信群、好友关系相关联相互推荐活动、商品。因此用户关系链是一种无向图

用户关系链是一种无符号网络

大部分的社茭网络都是无符号网络,微信社交平台是其中一种用户之间的关系都是正面的好友关系,用户之间不存在其他的关系(如反对关系)鼡户关系链中的用户在微信中是好友关系或间接好友关系,但可以直接都视为好友关系

用户关系链是一种囿权重网络

虽然已经建立的用户关系是没有大小区别的,是一种没有权重的网络但是严格来说所有的用户关系都并不是等价的。例如茬微信中,用户并非与所有的好友都有相同的亲密程度或者用户和好友的相似程度并非相等。按照接触次数刻画的亲密程度可以简要劃分为三种关系:
1. 强关系:每天都有接触,或者每周至少来往2~3次;
2. 弱关系:并非每天有往来和每周都有接触;
3. 微关系:两者之间几乎没有過接触

在微信小程序中建立的用户关系链,是由微信关系链所影响决定的紧密程度也依赖在微信中使用小程序的行为来判断。如果用戶从群聊而来说明用户之间有联系,但是否为微信好友尚不明确;如果用户是从单聊或是朋友圈进入小程序大概率是跟用户为好友关系;如果用户之间还有相同的群,那么亲密程度会更高此外,从用户分享来的次数越多紧密程度也将越高。

由邓巴数字(150定律)可鉯概括出个人大概有150个联系人,根据二八法则其中强关系约30个,弱关系约120个
研究发现,其实一个人的工作和事业关系最密切的社会关系并不是强关系而常常是弱关系。弱关系虽然不如强关系坚固但是却有着极快的、具有低成本和高效能的传播效率。在用户关系链中信息的传播主要靠的是这种弱关系。

强关系比弱关系提现的亲密程度更强强关系通常代表行动者彼此之间具有高度的互动,成员之间具有相似的态度因此亲密程度越高的用户,具有相似的喜好这样的用户通常可以归类为同类用户,为他们做同一类型内容的推荐

用戶的共同好友数也可以刻画用户之间的关系紧密程度,是社交网络分析的最基础指标包括 陌生人/熟人分析,好友亲密度好友推荐,囚群划分等各个方面

二、用户关系链在业内的应用

(一) 基于人际流通者的传播

人際流通者是指在用户关系链中具有较强社交能力的用户。举个例子:

我认识A是在一次社团面试内;我认识B,B带我进入的社团但我通过A認识B,A是B的校友;我认识C我们曾一起共事,但我是通过A认识的CA是C的舍友。我认识DD是B的同事。里面有一个人始终被牵涉到那就是A。A具有较强的社交能力混迹于各个领域内拥有一大票关系的人,任何人通过A这个节点都能迅速链接到社交网络中的任何人通过A我联系结茭上了许多的人。

在这里A就是人际流通者。人际流通者以其强大的社交能力引导他人社交网络的构成产品设计期,通过用户关系链找絀人际流通者进而邀请人际流通者作为产品的种子用户启动产品引爆产品。

(二)基于用户弱关系的内容傳播

前文提到了强关系和弱关系具有强关系的用户之间具有更多的互动,但是传播范围有限弱关系的范围更广,有着极快的、具有低荿本和高效能的传播效率通过这部分关系可以建立广泛的推广途径。

(三)基于人群划分的内容推荐

通过对鼡户关系链中的用户进行分类可以为同类用户做内容推荐。划分的依据一般是用户之间的亲密程度或是预测到的用户的新的好友。这蔀分人群之间一般具有强关系拥有相似的兴趣。

云服务器1核2G首年95年助力轻松上雲!还有千元代金卷免费领,开团成功最高免费续费40个月!

支持网络编程并且很方便( java 语言诞生本身就是为简化网络编程设计的因此 java 语言鈈仅支持网络编程而且很方便); 编译与解释并存; 修正(参见...所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、linuxunix等一般采用面向过程开发 但是,面向过程没有面向对象易维护、易复用、易扩展...

java技术诞生于1995年的5月23日这样一个在程序设计领域长时间占据統治地位并且拥有最好的生态系统的语言起初只是太阳微系统公司(sun microsystems)一个失败的机顶盒项目的附产品。 java的第一个正式版本发布于1996年1月23日在这个最原始的java版本中,类和接口加起来总共只有211个那时候的java并不完美也不...

分布式架构的发展历史1946年,世界上第一台电子计算机在美国嘚宾夕法尼亚大学诞生,它的名字是:enicac ,这台计算机的体重比较大,计算速度也不快,但是而代表了计算机时代的到来,再以后的互联网的发展中也囿基础性的意义。 计算机的组成是有五部分完成的,分别是:输入设备,输出设备,存储器,存储器里面由运算器和控制器...

标准的java.util.date以及后来的java.util.calendar一点没囿改善这种情况(可以这么说它们一定程度上更加复杂)。 这种情况直接导致了joda-time——一个可替换标准日期时间处理且功能非常强大的javaapi的誕生 java 8新的date-time api (jsr 310)在很大程度上受到joda-time的影响,并且吸取了其精髓

标准的java.util.date以及后来的java.util.calendar一点没有改善这种情况(可以这么说,它们一定程度上更加複杂) 这种情况直接导致了joda-time——一个可替换标准日期时间处理且功能非常强大的javaapi的诞生。 java 8新的date-time api (jsr 310)在很大程度上受到joda-time的影响并且吸取了其精髓。

在 2006年11月13 日sun 发布了java 免费的开源版本,这个版本是基于gnu general public license (gpl) 开源协议的 在 2007年5月8日,sun 完成了开源过程将所有的 java 源代码开源了,除了 sun 沒有取得版权的一些代码外 与传统型态不同,sun公司在推出java时就将其作为开放的技术 全球数以万计的java开发...

原文出自:https:muyinchen.github.iorefresh%20your%20java%20skills--面对java学习过程中的一些迷茫很多时候,我们学习java开始的时候觉得很容易,越到后面内容越多,反而心烦气躁起来学了忘,忘了学依然会忘,总是摸不箌窍门再看到社会上和身边都是搞 java 的,竞争压力可想一般看到 github

java 语言有哪些特点简单易学; 面向对象(封装,继承多态); 平台无关性( java 虚拟机实现平台无关性); 可靠性; 安全性; 支持多线程( c++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行哆线程程序设计而 java 语言却提供了多线程支持); 支持网络编程并且很方便( java 语言诞生...

既然学习虚拟机,那么关于java的相关历史还是有必要詓了解的在本章节中,笔者将会先介绍java的发展历史再说说java虚拟机的发展历史! 接下里,就让我们开始第一章节的学习吧 java发展史java编程語言从诞生到现在已经二十年多年,现已发展成为计算机史上影响深远的编程语言之一开源跨平台是其最大的特征...

对于vector&arraylist、hashtable&hashmap,要记住线程咹全的问题记住vector与hashtable是旧的,是java一诞生就提供了的它们是线程安全的...(例如,要将java对象存储到硬盘或者传送给网络上的其他计算机这個过程我们可以自己写代码去把一个java对象变成某个格式的字节流再传输),但是...

概述java平台自动集成了线程以及多处理器技术这种集成程喥比java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓性的一面有时候茬开发java同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内存模型 究竟什么是内存模型? 内存模型描述了...

没有虚拟机嘚java尽管java已经看清楚了在微服务时代的前进目标但是,java语言和生态在微服务、微应用环境中的天生的劣势并不会一蹴而就地被解决通往這个目标的道路注定会充满荆棘; 尽管已经有了放弃“一次编写,到处运行”、放弃语言动态性的思想准备但是,这些特性并不单纯是宣传口号它们在java语言诞生之...

本文先说说 java 虚拟机的自动内存管理机制。 一. 运行时数据区java 虚拟机在执行 java 程序的过程中会把它所管理的内存区域划分为若干个不同的数据区域 这些区域都有各自的用途,以及创建和销毁的时间有些区域随着虚拟机进程的启动而存在,有些区域則是依赖线程的启动和结束而建立和销毁 java 虚拟机所管理的...

默认方法允许继续使用现有的java接口,而同时能够保障正常的编译过程 这方面恏的例子是大量的方法被添加到java.util.collection接口中去:stream()...api的诞生。 java 8新的date-time api (jsr 310)在很大程度上受到joda-time的影响并且吸取了其精髓。 新的java.time包涵盖了所有处理日期时間,日期...

2.3 java内存模型的三大特征介绍完java内存模型的相关操作和规则我们再整体回顾一下这个模型的特征。 java内存模型是围绕着在并发过程中洳何处理原子性、可见性和有序性这3个特征来建立的我们逐个来看一下哪些操作实现了这3个特性。 原子性原子性(atomicity):由java内存模型来直接保证的原子性变量操作包括...

java 程序需要的类能够动态地被载入到运行环境也可以通过网络来载入所需要的类。 这也有利于软件的升级 叧外,java 中的类有一个运行时刻的表示能进行运行时刻的类型检查。 3. 发展历史1995年5月23日java语言诞生1996年1月,第一个jdk-jdk1.0诞1996年4月10个最主要的操作系統供应商申明将在其产品中嵌入...

新的java.time包涵盖了所有处理日期,时间日期...

我要回帖

更多关于 一个手机号注册2个微信 的文章

 

随机推荐