目录
I2C总线是一个世界标准的总线协议,目前在50多家公司生产的1000多个不同的集成电路中实现。此外,通用的I2C总线可用于各种控制架构,如系统管理总线(SMBus)、电源管理总线(PMBus)、智能平台管理接口(IPMI)、显示数据通道(DDC)和高级电信计算架构(ATCA)。
在消费电子产品、电信和工业电子产品中,几乎每个系统都包括:
1.一些智能控制,通常采用单片机微控制器。
2.通用电路,如LCD和LED驱动器,远程I/O端口,RAM, EEPROM,实时时钟或A/D和D/A转换器。
3.面向应用的电路,如无线电和视频系统的数字调谐和信号处理电路,温度传感器和智能卡。
为了充分利用这些相似性,使系统设计师和设备制造商都受益,同时最大限度地提高硬件效率和电路的简单性,飞利浦半导体(现在的恩智浦半导体)开发了一种简单的双向双线总线,用于高效的IC间控制。这种总线被称为Inter IC或I2C总线。所有兼容I2C总线的设备都包含一个片上接口,允许它们通过I2C总线直接相互通信。
以下是I2C总线的一些特性:
1.只需两条总线线路;一个串行数据线(SDA)和一个串行时钟线(SCL)。
2.连接到总线的每个设备都是可通过唯一地址寻址的软件,并且始终存在简单的主/从关系;master可以作为主发射机或主接收器。
3.它是一个真正的多master总线,包括碰撞检测和仲裁,以防止在两个或多个主机同时发起数据传输时发生数据损坏。
4.串行、8位、双向数据传输在Standard-mode下可达100kbit /s, Fast-mode下可达400kbit /s, Fast-mode Plus下可达1mbit /s,高速模式下可达3.4 Mbit/s。
5.串行、8位、单向数据传输在Ultra Fast-mode下高达5mbit /s。
6.片上滤波拒绝总线数据线上的峰值,以保持数据完整性。
7.可连接到同一总线的集成电路数量仅受最大总线电容的限制。
下图展示了一个I2C总线应用的示例。

微控制器的设计人员经常面临节省输出引脚的压力。I2C协议允许连接各种各样的外设,而不需要单独的寻址或芯片启用信号。此外,由于现有的外围设备种类繁多,所以包含I2C接口的微控制器在市场上更成功。

由于各种不同的技术设备(CMOS, NMOS,双极)可以连接到I2C总线,逻辑’ 0 ’ (LOW)和’ 1 ’ (HIGH)的级别不是固定的,并取决于VDD的相关级别。






传输举例:





为下表所示的目的保留了两组的8地址(0000 XXX和1111 XXX)。

广播寻址用于同时寻址连接到I2C总线的每个设备,如果设备不需要广播提供的任何数据,它可以NACK来忽略广播地址;如果设备确实需要来自广播的数据,它就会对广播地址进行ACK,并作为一个slave接收设备。
如果多个设备都发出了响应,主设备实际上并不知道有多少设备回应;每个能够处理此数据的从接收设备都会对第二个和后面的字节ACK,一般广播地址的含义总是在第二个字节中指定。(如下图)

有两种情况需要考虑,最低有效位B为0,或最低有效位为1。

最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify
一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su
一、RIPV2协议简介 RIP(RoutingInformationProtocol)路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的一种路由协议。RIP采用距离向量算法,是一种距离向量协议。RIP-1是有类别路由协议(ClassfulRoutingProtocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持非连续子网(DiscontiguousSubnet)。RIP-2是一种无类别路由协议(ClasslessRoutingProtocol),支持路由标记,在路由策略中可根据路由标记对
我尝试执行此页面中显示的ruby示例:http://tomayko.com/writings/unicorn-is-unix但我得到的只是echo.rb:9:in`bind':Addressfamilynotsupportedbyprotocolfamily-bind(2)(Errno::EAFNOSUPPORT)fromecho.rb:9:in`'有什么想法吗? 最佳答案 我遇到了同样的问题。只需将localhost更改为0.0.0.0:address=Socket.pack_sockaddr_in(4242,'0.0.0.0')
最近我使用了一个由单个开发人员创建的不错的gem,它托管在Github上。在我的工作中,我不得不对它进行一些实质性的修改,添加一些改进。有些是特定于项目的,有些是特定于gem的,还有一些是独立的改进。对于特定于gem的改进(例如,错误修复),我fork了存储库,应用了修复,并提出了拉取请求。然后,然而,我注意到独立的改进有点属于原始gem的并行、持续的分支类别。更清楚地说,你以前见过它;我重写了原始gem的View以使用TwitterBootstrap框架。因此,我也将它推送到了Github,但是,当然,我没有提出拉取请求——相反,我更新了README以解释不同之处,并感谢gem的原作
文章目录1.I2C与SPI通信协议对比2.四脚OLED与六脚OLED3.I2C驱动OLED显示oled.h&oled.c:汉字取模&oledfont.h:main.c显示示例:连线方法:4.SPI驱动OLED显示1.I2C与SPI通信协议对比I2C(Inter-IntegratedCircuit)SPI(SerialPeripheralInterface)传输方式半双工全双工传输速度低速,100Kbps----4Mbps高速,30Mbps以上几线制4线制:VCC,GND,SCL,SDA6/7线制:VCC,GND,SCLK(D0),MOSI(D1/SDA),DC,CS/SS主从模式多主机总线,通
我关注了很多关于这个问题的帖子,但没有一个对我有帮助。我正在尝试使用最简单的irb命令进行连接:require'open-uri'open('https://aristo4stu3.bgu.ac.il')奇怪的是,对于我尝试过的任何其他httpsuri,它都工作正常(即https://google.com)。出于调试目的,我什至尝试使用以下方法禁用SSL验证:OpenSSL::SSL::VERIFY_PEER=OpenSSL::SSL::VERIFY_NONE这似乎也没有帮助。我的设置是(在AWS上):$rvm-vrvm1.21.3(stable)byWayneE.Seguin,Mic
我有一个共享对话框。在开发中它看起来像:http://xxxxxx.com/stuff产品上:https://yyyyyyyyyyy.com/stuff输出#Protocol##URL#的最佳Rails方式是什么我可以在哪里设置它们?谢谢 最佳答案 request.protocolrequest.url参见requestobject. 关于ruby-on-rails-如何使用rails输出当前协议(protocol)和url?,我们在StackOverflow上找到一个类似的问题: