首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏RainMark 的文章

    I2C 总线协议

    1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 Master发送I2C addr(7bit)和w操作0(1bit),等待ACK 3. Slave发送ACK 4. Master发送reg addr(8bit),等待ACK 5. Master发送I2C addr(7bit)和w操作1(1bit),等待ACK 2. Slave发送ACK 3. Master发送reg addr(8bit),等待ACK 4. PowerPC的I2C实现 Mpc8560的CCSR中控制I2C的寄存器共有6个。 PPC-Linux中I2C的实现 内核代码(linux-2.6.24)中,通过I2C总线存取寄存器的函数都在文件drivers/i2c/busses/i2c-mpc.c中 最重要的函数是mpc_xfer

    1.9K20发布于 2019-09-10
  • 来自专栏linux驱动个人学习

    I2C通讯协议

    这就是时钟同步,它解决了I2C总线的速度同步问题。 4、主机发送数据流程 (1)主机在检测到总线为“空闲状态”(即 SDA、SCL 线均为高电平)时,发送一个启动信号“S”,开始一次通信的开始 (2)主机接着发送一个命令字节。 组成(此时 R/W=0) 通常最低一位就是R/W位,,“0”表示写,“1”表示读(通常读写信号中写上面有一横线,表示低电平) (3)相对应的从机收到命令字节后向主机回馈应答信号 ACK(ACK=0) (4I2C开始和结束信号 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 ?   另外I2C的通信速率为100Kb,快速为400Kb

    1.8K60发布于 2018-03-07
  • 来自专栏全栈程序员必看

    i2c总线的通信协议(i2c通信协议原理)

    I2C I2C最少只需要两根线,和异步串口类似,但可以支持多个slave设备。 I2C的数据传输速率位于串口和SPI之间,大部分I2C设备支持100KHz和400KHz模式。使用I2C传输数据会有一些额外消耗:每发送8bits数据,就需要额外1bit的元数据(ACK或NACK)。 I2C协议 I2C协议把传输的消息分为两种类型的帧: 一个地址帧 —— 用于master指明消息发往哪个slave; 一个或多个数据帧 —— 由master发往slave的数据(或由slave发往 注:协议要求每次放到SDA上的字节长度必须为8位,并且每个字节后须跟一个ACK位,在下面会讲到。 数据在SCL处于低电平时放到SDA上,并在SCL变为高电平后进行采样。 注:本文是对两篇文档中协议部分的翻译整理,并做了调整和补充,见文末的附录链接。

    2.6K10编辑于 2022-07-29
  • 来自专栏iot-me

    I2C通信协议

    简介 I2C通信协议(Inter-Integrated Circuit)是由Philips公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要使用USART、CAN等通信协议的外部收发设备,现在被广泛地用于系统内多个集成电路 (I2C)间的通信。 物理层 支持多主机从机,如下图总线上挂载了多个i2c设备,通过指定地址选择操作的设备。 当I2C设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。 (OD门可实现线与功能) 具有三种传输模式:标准模式传输速率为100kbit/s ,快速模式为 400kbit/s ,高速模式下可达 3.4Mbit/s,但目前大多I2C设备尚不支持高 速模式 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 协议层 读数据 写数据

    69920编辑于 2022-02-11
  • 来自专栏韦东山嵌入式

    Linux系统驱动之I2C协议

    协议 参考资料: i2c_spec.pdf 1. 下图:白色背景表示"主→从",灰色背景表示"从→主" 3.3 I2C信号 I2C协议中数据传输的单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。 响应信号(ACK):接收器在接收到8位数据后,在第9个时钟周期,拉低SDA SDA上传输的数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间变化 I2C协议信号如下: 3.4 协议细节 如何在SDA上实现双向传输? 当它就绪后,就可以不再驱动三极管,这是上拉电阻把SCL变为高电平,其他设备就可以继续使用I2C总线了。 对于IIC协议它只能规定怎么传输数据,数据是什么含义由从设备决定。

    3.5K20编辑于 2021-12-08
  • 来自专栏硬件大熊

    UART、SPI、I2C协议异同点

    I2C、SPI、UART都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹模块、蓝牙模块、WIFI模块也都兼容这三种通信方式的一种或几种。 对于这三种通信协议的差别,可以区分到非常细,包括信号的单位、传输协议中的封包格式等。 UART一般由TXD、RXD、GND三根线组成,是一种异步传输协议。 UART比较简单,所以CPU输出log一般都是通过一个UART口来输出,是目前最常用的调试接口,其传输速度比较慢,传统的传输速度在115200bps或以下,不过现在大部分UART控制器也能支持到4Mbps I2C是两根线,SDA(数据)和SCL(时钟),是一种半双工同步传输协议。 UART和后面两者最大的区别在于后面两者是同步的,要有统一的时钟线,而UART不需要,接线方便,但收发双方都需要配置相同的波特率,即设备要有自己的时钟源;I2C协议中是有地址规则的,因此在一对多通信的时候更有优势

    76410编辑于 2022-06-23
  • 来自专栏电子电路开发学习

    一文看懂I2C协议

    据非官方统计,90%电子行业的公众号都介绍过3种串行通讯协议:UART、SPI和I2C。这3种串行协议也是电子开发行业最常用的协议。前面介绍了串口通讯协议及其FPGA实现,SPI协议。 本篇文章介绍I2C通讯协议及其FPGA实测波形。 文末有【I2C官方标准文档下载方法】。 有哪些内容 I2C是什么 5种速率 4种信号 读写时序 7位和10位地址 I2C保留字节 FPGA实测I2C波形 SPI和I2C的对比 I2C是什么 在消费电子,工业电子等领域,会使用各种类型的芯片,如微控制器 4种信号 I2C协议最基础的几种信号:起始、停止、应答和非应答信号。 起始信号 I2C协议规定,SCL处于高电平时,SDA由高到低变化,这种信号是起始信号。 _ADDR = 4, S5_ACK2 = 5, //write: 0-1-2-3-4-5->6-7-13-14 S6W_DATA = 6, S7W_ACK3

    2.5K30发布于 2021-04-02
  • 来自专栏AI电堂

    一文带你读懂I2C协议

    1、什么是I2C协议 I2C协议是一个允许多个 “从机” 芯片和一个或更多的 “主机” 芯片进行通讯的协议。它就像串行外设接口(SPI)一样,只能用于短距离通信。 如:I2C、SPI等有时钟信号的协议,都属于这种通信方式。 异步通信: 接收方并不知道数据什么时候会到达,收发双方可以有各自自己的时钟。 (4)同步通信可用于点对多点;异步通信只适用于点对点。 400 Kbps 高速模式:High speed mode = 3.4 Mbps 超快速模式:Ultra fast mode = 5 Mbps 最大主设备数:无限制; 最大从机数:理论上是127; 4、 5、数据传输协议 主设备和从设备进行数据传输时遵循以下协议格式。数据通过一条SDA数据线在主设备和从设备之间传输0和1的串行数据。

    33.1K411编辑于 2022-12-08
  • 来自专栏码神随笔

    MCU常见通信总线串讲(三)—— I2C总线协议

    通信协议则是指在通信总线上传输数据时所遵循的规则和约定,以确保不同设备之间能够正确地交换信息,我们也可以把他叫做通信总线协议。 系列文章,主要讲解以下几个总线协议,读者可以按需选择: UART和USART RS232、RS485总线 IIC总线 SPI总线 CAN总线 USB总线 一、I2C总线的概念 其实站在我个人开发的角度来说 ,I2C使用的比SPI多,他的主要概念如下: I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接微控制器和外部设备,例如传感器、存储器芯片、显示屏等。 二、 I2C协议I2C协议层规定了在I2C通信中需要遵循的一些基本规则和标准,其中包括以下内容: 物理层规定: 定义了I2C总线的物理结构、传输介质(通常是双绞线)、电气特性(如电压电平、 I2C协议规定设备地址可以是7位或10位,实际中7位的地址应用比较广泛。 时序规定: 规定了时钟脉冲的频率、数据传输的时序要求,以确保通信的稳定性和可靠性。

    2.4K31编辑于 2023-11-09
  • 来自专栏嵌入式开发圈

    详述I2C总线协议、时序,入门不再是难事

    I2C总线数据传输 丛机地址 在I2C总线系统中,每个设备都有它的固定地址,一般由芯片的A0,A1和A2决定。丛机地址字节由七位地址位(D7-D1位)和一位方向位(为D0位)组成。 器件地址的D7-D4一般都是被厂家固定了为1111,余下的D3,D2和D1连接到芯片的A2,A1和A0决定;D0为0x00表示写,D0为0x01表示读。 EEPROM的器件地址 读写过程 1.写数据过程 1.主机发送I2C总线停止信号,防止总线忙写数据失败 2.主机发送I2C总线复位信号,确保写数据之前总线处于空闲状态 3.主机发送I2C总线开始信号 ,启动一次数据的写入 4.主机发送I2C丛机地址和写模式(W/R=0)信号,并且等待一个丛机的应答信号 5.主机接收到ACK的应答信号后,开始多个字节的写入,每写完一个字节需要等待一个丛机的应答信号 6 3.主机发送I2C总线开始信号,启动一次数据读取 4.主机发送I2C丛机地址和读模式(W/R=1)信号,并且等待一个丛机的应答信号 5.主机接收到ACK的应答信号后,开始多个字节的读取,每读完一个字节需要给丛机发送一个

    4.1K20发布于 2021-07-07
  • 来自专栏韦东山嵌入式

    第019课 I2C协议详解及裸机程序分析

    第001节_I2C协议与EEPROM I2C协议 I2C在硬件上的接法如下(图19-1)所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说 :: e.老师说下课(停止) 我们就使用这个简单的例子,来解释一下IIC的传输协议。 对于IIC协议它只能规定怎么传输数据,数据什么含义它完全不能够控制,数据的含义有从设备决定。 第002节_S3C2440的I2C控制器 在嵌入式系统里面的主控芯片一般都会有I2C控制器,要是没有可以根据I2C协议用GPIO管脚模拟,但是非常麻烦,我们要发送数据时,可以把数据放到某个寄存器,它就会自动的发出时钟 4).IICSTAT = 0xd0置IICSTAT寄存器的[5]写为0,以便发出P信号,但是由于这时IICCON[4]仍为1,P信号没有实际发出,当执行IICCON &= ~(1<<4);清除IICCON

    1.9K20发布于 2020-09-30
  • 来自专栏程序员

    IPv4协议

    IP地址(IPv4) 这里所说的IP地址是IPv4地址,IP地址由32位正整数来表示。他在计算机内部被以二进制方式处理,因此最多有2^32个IP地址,即:43亿个总IPv4地址。 IPv4数据报格式 ? 版本号:在IPv4数据报中,版本号就是4。不同的IP版本使用的数据报格式不同,IPv6的数据报不是这样的。 协议:该字段指示传输层所使用的协议类型。通过该字段指示了IP数据报应该交给哪个传输层协议。典型的有值为6的时候,表示应该交由TCP协议,值为17的时候,表示交由UDP协议。 在上层协议是UDP协议的情形下,首先在发送端主机发送IP包的时候设置分片禁止标志。途中的路由器即使遇到了包的大小超过了数据链路的MTU,也不去分片,直接将包丢弃。 在上层协议是TCP协议的情形下。由于TCP协议是面向有连接的(两台主机之间要维护这个连接)。TCP协议会根据路径MTU的大小来计算出最大段长度MSS。

    1.7K20发布于 2019-05-25
  • 来自专栏全栈程序员必看

    WebSocket 协议 1~4

    篇幅太长超过了简书的单篇最大长度,故分为两篇,此篇记录 1~4 节,其余见 WebSocket 协议 5~10 节; 1.1 背景知识 由于历史原因,在创建一个具有双向通信机制的 web 应用程序时,需要利用到 Sec-WebSocket-Protocol 子协议选项,是用于标识客户端想和服务端使用哪一种子协议(都是应用层的协议,比如 chat 表示采用 “聊天” 这个应用层协议)。 得到哈希后的内容为(使用 16 进制的数表示每一个字节中内容):0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea`,对于哈希后的内容进行 base64 | 头字段,它的值已经在第4.2.2 节中的第 4 步定义了。

    96720编辑于 2022-06-29
  • 来自专栏开源519

    I2C总线架构 之 I2C核心

    引言 在之前的 「《I2C总线架构 之 设备驱动》」 和 「《I2C总线架构 之 总线驱动》」 中一再提到i2c核心,本篇文章就总结一下i2c核心的主要功能。 分层思想 在之前的篇章中,大致能够了解i2c核心功能主要是为i2c设备驱动和i2c总线驱动的注册操作提供API。这种设计的好处在于实现:高内聚,低耦合。 i2c总线与i2c设备相互独立,互无联系;两者都是通过调用i2c核心提供的API实现匹配。即两者只与i2c核心有联系,这样也就可以实现一个固定i2c总线驱动可以和任一符合条件的设备驱动匹配。 具体API 这里对i2c总线驱动和i2c设备驱动进行分析,关键在于分析i2c_client与i2c_driver如何实现匹配的。 「传输数据:i2c_transfer」 此函数是设备驱动文件用来与i2c器件传输i2c协议数据的,封装好的i2c数据传输API。

    3.2K21发布于 2020-09-03
  • 来自专栏嵌入式、安防、流媒体、AI分析

    海康ehome协议分析(4):GPS上传

    海康带有GPS的设备,是通过报警(Alarm)服务进行GPS上传的,具体通信通道是根据配置文件,可选择UDP,UDP&TCP,MQTT方式分别对应的配置是:

    76140编辑于 2022-11-03
  • 来自专栏嵌入式、安防、流媒体、AI分析

    海康ehome协议分析(4):GPS上传

    海康带有GPS的设备,是通过报警(Alarm)服务进行GPS上传的,具体通信通道是根据配置文件,可选择UDP,UDP&TCP,MQTT方式分别对应的配置是:

    44040编辑于 2023-01-04
  • 来自专栏全栈程序员必看

    I2C电平转换电路_i2c电平转换芯片

    发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169431.html原文链接:https://javaforall.cn

    1.1K10编辑于 2022-09-22
  • 来自专栏网络安全防护

    浅谈IPv4协议与IPv6协议的区别!

    在讲IPv4协议与IPv6协议的区别前,我们必须了解什么叫IPv4协议和IPv6协议? u=274633623,1386372214&fm=15&gp=0.jpg IPv4,是互联网协议(Internet Protocol,IP)的第四版,应属第一个被广泛应用,构成现阶段互联网技术的基础的协议 现如今的全世界英特网所选用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。当前IP协议的版本号是4(简称为IPv4,v,version版本) 。 但是,现在绝大部分人使用的还是IPv4协议。 逐渐将会取代之前被广泛应用的IPv4协议。但因为IPv6比较复杂。不具备兼容性,操作现阶段的IPv4迁移到IPv6是比较困难的。

    1.5K20发布于 2019-05-22
  • 来自专栏个人路线

    I2C 同步串行总线

    I2C 概述 I2C(Inter Integrated Circuit)集成电路间总线是由 Philips 公司开发的一种简单、双向二线制同步串行总线。I2C 以主从方式工作。 I2C 的通信方式为半双工,因为只有一根 SDA 线,所以在同一时间内只可以单向通信。 I2C 接口定义了完成 I2C 传输的通用方法集合,包括: I2C 控制器管理:打开或关闭 I2C 控制器; I2C 消息传输:通过消息传输结构体数组进行自定义传输 I2C 时序主要有四个元素组成:起始信号 I2C 操作流程如下: 初始化I2C 设置I2C 波特率 I2C 写操作 I2C 读操作 I2C 模块相关 API 接口名 描述 unsigned int IoTI2cInit(unsigned int (unsigned int id, unsigned int baudrate); 设置I2C波特率 I2C 接口调用举例如下: 代码功能:定义了 I2C 接口功能以及 I2C 相关参数,GPIO_

    1.2K30编辑于 2023-02-23
  • 来自专栏用户1692782的专栏

    手撕RTSP协议系列(4)——OPTION

    上一篇,我们介绍了sdp相关信息,接下来开始我们介绍RTSP相关的选项,本篇我们首先来看一下OTPION选项。

    3.3K22发布于 2020-10-30
领券