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

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。

2.6K21

I2C 子系统(九)

3、I2C Register Flow /kernel-5.10/drivers/i2c/i2c-core-base.c 是 I2C 的核心部分,I2C 核心提供了一些与具体硬件无关的 API 函数 1...设备和驱动的匹配过程也是由 I2C 总线完成的,I2C 总线的数据结构为 i2c_bus_type,定义在 /kernel-5.10/drivers/i2c/i2c-core-base.c 文件,i2c_bus_type...对于一个 I2C 适配器,肯定要对外提供读写 API 函数,设备驱动程序可以使用这些 API 函数来完成读写操作。i2c_algorithm 就是 I2C 适配器与 I2C 设备进行通信的方法。...到这里,大家应该能看懂下图,这些节点在 I2C 控制器驱动加载时,自动创建的。大家在 I2C 控制器的子节点中声明的 I2C 从机设备,也会在这一步创建节点。...读 I2C 先写后读 其实所谓的 I2C 读,都是先写后读。

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

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_

78230

I2C通讯协议

同时有多于一个主机尝试控制总线 但不破坏报文 仲裁 是一个在有多个主机同时尝试控制总线,但只允许其中一个控制总线并使报文不被破坏的过程 同步 两个或多个器件同步时钟信号的过程 2、硬件结构 每一个I2C...这就是时钟同步,它解决了I2C总线的速度同步问题。...I2C位传输 数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit; 若SDA发生跳变,则用来表示一个会话的开始或结束(后面讲) 数据改变:SCL为低电平时,SDA线才能改变传输的...I2C开始和结束信号 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 ?  ...另外I2C的通信速率为100Kb,快速为400Kb

1.4K60

I2C 子系统(十一):debug

I2C 常见有两种错误:I2C ACK error、I2C timeout 1、I2C ACK error 在应该收到 ACK 信号的时候没有收到 ACK 信号,i2c controller 就会产生一个...4、检查 i2c device 信号电平是否与 AP 匹配。...I2C 读 主机从从机接收数据时,最后一个 Byte 数据时,主机不回应该从机,即 NACK. 2、I2C timeout 当 I2C 传输发生 timeout 时,一般 kernel log 会有类似如下打印...2)隐藏的 i2c address,即外设存在多个 i2c addr 或外设 HW bug,导致 i2c 通讯异常。...返回值为 -6 表示为 NACK 错误,即对方设备无应答响应,这种情况一般为外设的问题,常见的有以下几种情况: I2C 地址错误,解决方法是测量 I2C 波形,确认是否 I2C 设备地址错误; I2C

1.5K10

一文看懂I2C协议

本篇文章介绍I2C通讯协议及其FPGA实测波形。 文末有【I2C官方标准文档下载方法】。...有哪些内容 I2C是什么 5种速率 4种信号 读写时序 7位和10位地址 I2C保留字节 FPGA实测I2C波形 SPI和I2C的对比 I2C是什么 在消费电子,工业电子等领域,会使用各种类型的芯片,如微控制器...i2c_read SPI和I2C的对比 I2C是半双工,SPI是全双工。 I2C支持多主多从模式,而SPI只能有一个主机。 从GPIO占用上来看,I2C占用更少的GPIO,更节省资源。...I2C官方标准文档_UM10204 I2C的官方文档是原飞利浦(Philips)半导体事业部,现恩智浦(NXP)半导体发布的UM10204文档,全文共64页,是目前最权威最详细的I2C协议介绍文章,最新版本...TI:理解I2C文档_SLVA704 TI在2015年发布了一篇SLVA704文档, 全文共8页,精简的概括了I2C协议的电气特性,操作时序,读写时序等,比较适合I2C入门学习。 ? 3.

1.5K30

camera调试:i2c不通如何排查?

前言: 这篇文章介绍一下在调试camera驱动的过程,最常见的一个问题,i2c不通导致驱动注册不上,应该如何排查。...一、i2c地址问题: ①确认i2c地址是否配置正确: 一般sensor的datasheet都会明确给出i2c的地址,需要注意的是,大多数sensor都有SID选择引脚,有两个i2c地址可以选择,这里需要硬件确认选择是哪个地址...②i2c总线地址是否正确: 需要根据硬件原理图明确i2c是挂载在哪路i2c总线下,并在DTS正确配置。...③是否配置成8位地址: DTS中配置的i2c地址是7位地址,不包括最后的读写位,检查是否配置成8位地址,如上图展示的某sensor,其i2c地址有0x6c和0x20,这就是8位地址,在dts中需要配置为...pinctrl: 需要检查一下i2c的引脚是否正确的引用,可以先看原理图对应的gpio,在检查dts是否正确引用。

20611

I2C 子系统(四)

4、I2C Synchronization And Arbitration 本文讲解三个重要的 I2C 概念:时钟延展、同步、仲裁 Data and ACK/NACK 正常情况 主接收机必须向从机发送传输结束的信号...在 Hs 模式下,此握手功能只能在字节级别使用 I2C 主设备始终控制着时钟线 SCL,不论是往设备写还是从设备读。...这也是 I2C 通信系统中,从机唯一能控制总线的时候! 关键是很多 I2C 主机不支持 clock stretching 功能,所以,无法和带有 clock stretching 功能的从机通信!...要解决这种冲突,就要进行仲裁的判决,这就是 I2C 总线上的仲裁。 I2C 总线上的仲裁分两部分:SCL 线的同步和 SDA 线的仲裁,这两部分没有先后关系,同时进行。...SDA 线的仲裁可以保证 I2C 总线系统在多个主节点同时企图控制总线时通信正常进行并且数据不丢失。总线系统通过仲裁只允许一个主节点可以继续占据总线。

45720

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

I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。...I2C I2C最少只需要两根线,和异步串口类似,但可以支持多个slave设备。...和SPI不同的是,I2C可以支持mul-master系统,允许有多个master并且每个master都可以与所有的slaves通信(master之间不可通过I2C通信,并且每个master只能轮流使用I2C...I2C的数据传输速率位于串口和SPI之间,大部分I2C设备支持100KHz和400KHz模式。使用I2C传输数据会有一些额外消耗:每发送8bits数据,就需要额外1bit的元数据(ACK或NACK)。...所以更完整的I2C数据传输时序图为: 10-bit地址空间: 上面讲到I2C支持10-bit的设备地址,此时的时序如下图所示: 在10-bit地址的I2C系统中,需要两个帧来传输

1.2K10
领券