首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

简介 I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。...在I2C的基础上,1995年Intel提出了“System Management Bus” (SMBus),用于低速设备通信,SMBus 把时钟频率限制在10kHz~100kHz,但I2C可以支持0kHz...和SPI不同的是,I2C可以支持mul-master系统,允许有多个master并且每个master都可以与所有的slaves通信(master之间不可通过I2C通信,并且每个master只能轮流使用I2C...I2C支持双向数据交换,由于仅有一根数据线,故通信是半双工的。 硬件复杂度也位于串口和SPI之间,而软件实现可以相当简单。...在整个通信期间,可以存在多个start来开启每一次新的通信序列(communication sequence),而无需先放弃总线的控制权,后面会讲到这种机制。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

浅谈总线通信机制(通信基础+串口+I2C)

接下来,我们来说说I2C协议,I2C协议是什么鬼?I2C是(Inter-Integrated Circuit)的英文缩写,是Philips公司开发的一个通信协议,只有两根线是用来通信的。...我先来说下上面这幅图具体是什么含义,然后接下来再来说说I2C是怎么操作数据的。I2C总线就是通过SDA总线(数据)、SCL总线(时钟)来传输数据的,那为什么I2C总线上还要接两个上拉电阻呢?...根据I2C规格设计上手册上了解到,由于I2C接口设计大多采用的是集电极开路或者是开漏输出的接口,当总线为空闲的时候,两根线均为高电平,由于I2C的SDA和SCL都具有线与功能,什么是线与?...上拉电阻取值要取什么值,这个电阻取大取小对I2C通信的时候有什么影响,应该取什么值最合适?既然有上拉电阻,那是不是有下拉电阻?...为什么我看有些I2C的外设接在MCU的IO口里,也没有看见接上拉电阻啊,那为什么通信也正常?

1.8K10

树莓派学习-I2c通信

其中以树莓派的I2C通信为最。 一、I2C简介 I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。...是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。 I2C 总线支持任何IC 生产工艺(CMOS、双极型)。...i2cdetect -y -a 1 其中2a就是我们的ldc1314模块的i2c通信地址 三、对i2c设备寄存器的读写 1、设备所有数据的读出 sudo i2cdump -y 1 0x2a -y 代表取消用户交互过程...设备而言100KZH还是太快了,那么也可以修改I2C的速率使得通信更稳定。...Tools的安装和使用 树莓派与i2c设备的通信 树莓派学习笔记——I2C设备装入和速率设置 树莓派系列教程11:I2C编程 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

1.1K10

通信专栏】STM32单片机I2C通信(上篇)

本文使用STM32FI03RCT6型号的单片机, 基于正点原子的函数库进行总结讲解 想来单片机这块儿除了USART串口通信外,常见的便是I2C通信了,因为I2C通信 硬件连接简单,可扩展性强,但是这种硬件连线的简洁...I2C通信是一种半双工通信,也就是可以双向传输数据但不能同时进行。...STM32单片机是可以进行硬件I2C通信或者软件模拟进行I2C通信的,硬件I2C通信只需要对I2C引脚以及通信模式这两个结构体进行初始化即可,但I2C硬件通信由于硬件原因并不稳定(原子哥说的),不过在STM32F4...---- 下面我们基于软件I2C模拟进行说明。 I2C通信物理层原理 1:二线传输:I2C通信除了地线GND和电源线VCC外,只需要两条线,一条双向串行数据线(SDA),一条时钟线(SCL)。...如何结合I2C时序编写对某外设的读写操作 这些内容我们在"STM32单片机/I2C通信(下篇)"进行介绍。

1.7K20

STM32通信硬件 I2C

20.1关于 I2C STM32F103系列的I²C控制器,可作为通信主机或从机,因此有四种工作模式可选择:主机发送模式、主机接收模式、从机发送模式、从机接收模式。...初始化I2C协议相关参数:设置速度、寻址长度模式等; 初始化I2C硬件相关参数:I2C时钟使能、GPIO端口时钟使能、GPIO引脚设置为I2C复用; 使用HAL提供的I2C对AP3426读写,封装AP3426...初始化函数、数据读取函数; 主函数编写控制逻辑:按下按键KEY1(KEY_U),读取一次AP3426数据,并将数据通过串口打印; 本实验配套代码位于“5_程序源码\12_通信—硬件I2C\”。...// 按键按下 { key_flag = 0; AP3426_ReadDataTest(); // 读取 AP3426 数据 } } 20.4 实验效果 本实验对应配套资料的“5_程序源码\ 12_通信...—硬件I2C\”。

92110

STM32通信模拟 I2C

19.1 关于I2C 19.1.1 I2C 协议 I²C(Inter-Integrated Circuit),常读作“I方C”,它是一种多主从架构串行通信总线。...如今在嵌入式领域是非常常见通信协议,常用于MPU/MCU与外部设备连接通信、数据传输。 I²C由两条线组成,一条双向串行数据线SDA,一条串行时钟线SCL。...从上面的例子可知,都是老师(主机)主导传球,按照规范的流程(通信协议),以保证传球的准确性, 收发球的流程总结如下: ① 老师说开始了,表示开始信号(start); ② 老师提醒某个学生要发球,表示发送地址和方向...; 主函数,每按一次按键,写一次AT24C02,接着读出来验证是否和写的数据一致; 本实验配套代码位于“5_程序源码\11_通信—模拟I2C\”。...); memset((uint8_t*)rx_buffer, 0, sizeof(rx_buffer)); // 清空接收的数据 } } 19.4 实验效果 本实验对应配套资料的“5_程序源码\11_通信

82210

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

I2C使用的比SPI多,他的主要概念如下: I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接微控制器和外部设备,例如传感器、存储器芯片、显示屏等。...二、 I2C的协议层 I2C协议层规定了在I2C通信中需要遵循的一些基本规则和标准,其中包括以下内容: 物理层规定: 定义了I2C总线的物理结构、传输介质(通常是双绞线)、电气特性(如电压电平、...I2C总线上的每个设备都有自己的独立地址,主机发起通信时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机。...I2C协议规定设备地址可以是7位或10位,实际中7位的地址应用比较广泛。 时序规定: 规定了时钟脉冲的频率、数据传输的时序要求,以确保通信的稳定性和可靠性。...主机写数据到从机 主机读数据在从机 复和形式 读和写数据除了基本的读写,I2C通信更常用的是复合格式,该传输过程有两次起始信号(S)。

30830

Linux系统驱动之I2C协议

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 I2C协议 参考资料: i2c_spec.pdf 1....硬件连接 I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。 2....传输数据类比 怎么通过I2C传输数据,我们需要把数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。...下图:白色背景表示"主→从",灰色背景表示"从→主" 3.3 I2C信号 I2C协议中数据传输的单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。

2.8K20

Linux系统驱动之I2C视频介绍

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...I2C硬件框架 在一个芯片(SoC)内部,有一个或多个I2C控制器 在一个I2C控制器上,可以连接一个或多个I2C设备 I2C总线只需要2条线:时钟线SCL、数据线SDA 在I2C总线的SCL、SDA...I2C控制器驱动 它根据I2C协议发出各类信号:I2C设备地址、I2C存储地址、数据 它根据I2C协议判断 3....我们讲什么 3.1 对于Linux 从上到下: 先讲I2C协议 APP可以通过两类驱动程序访问设备 I2C设备自己的驱动程序 内核自带的i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间的驱动程序...: 先讲I2C协议 APP I2C Device Driver I2C Controller Driver(也被称为adapter)

2.3K40

Linux进程通信

Linux进程通信 1 管道(pipe) 1.1 无名管道 1.1.1 概念和相关知识 1.1.2 相关函数 1.2 命名管道 1.2.1 概念及相关知识 1.2.2 相关函数 2 信号量(semaphore...在Linux系统中专门设置了一种特殊的系统文件-管道文件——FIFO的文件形式存在于文件系统中,这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就可以通过FIFO进行彼此间的通信...比如,登录Linux时,系统会自动分配给登录用户一个控制终端,在这个终端运行的所有程序,包括前台和后台进程组,一般都属于同一个会话。...6 套接字(socket) 套接字是一种进程间通信机制,可用于不同机器间的进程通信。...在Linux系统中,1024以下的端口只有拥有root权限的程序才能绑定。

1.9K20

终于搞清了:SPI、UART、I2C通信的区别与应用!

电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议。 之前有单独地分享了SPI、UART、I2C通信的文章,这篇对它们做一些对比。...UART代表通用异步接收器/发送器也称为串口通讯,它不像SPI和I2C这样的通信协议,而是微控制器中的物理电路或独立的IC。...通信 I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。...I2C是串行通信协议,因此数据沿着SDA一点一点地传输。与SPI一样,I2C也需要时钟同步信号且时钟始终由主机控制。...寻址 由于I2C没有像SPI那样的片选线,因此它需要使用另一种方式来确认某一个从设备,而这个方式就是 —— 寻址 。 主机将要通信的从机地址发送给每个从机,然后每个从机将其与自己的地址进行比较。

76832

LinuxI2C驱动框架分析

I2C总线、USB总线、PCI总线等等。以I2C总线为例,在同一组I2C总线上连接着不同的I2C设备。 设备 设备代表真实的、具体的物理器件,在软件上用器件的独特的参数属性来代表该器件。...Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。之所以会形成这样的框架,很重要的原因是为了代码的复用性。...为了提高驱动的可移植性,Linux抽象出一套管理资源的函数。设备是存在的硬件,在设备里包含自己的属性,也包含需要用到的资源。...3.LinuxI2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法...(3)I2C设备驱动:I2C设备驱动(也称为客户驱动)是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据。 ?

4.5K11

Linux】进程通信之匿名管道通信

一、进程间进行通信的目的 我们往往需要多个进程协同,共同完成一些事情。 数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。...操作系统提供的资源不同,就决定了有不同的通信方式。 二、管道通信 2.1、匿名管道通信的原理 基于文件的方式,让不同进程看到同一份资源的通信方式,叫做管道,管道通信只能为单向通信。...前面也说过,管道通信为单向通信,所以如果想让父进程写子进程读,就关闭父进程的读端关闭子进程的写端,反之亦然。...匿名管道只能让具有血缘关系的进程进行进程通信,常用于父子进程之间进行进程通信。...2.3、匿名管道通信的简单实现 #include #include #include #include #include

12610
领券