RK3568驱动指南|第十五篇 I2C-第166章 初步认识I2C

news2024/9/9 0:32:00

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】258811263(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第十五篇 I2C_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


第166章 初步认识I2C

166.1 I2C总线的由来

在一些复杂的电子设备内部电路中,通常需要使用大量的集成电路(IC)来实现各种功能,包括主控制器以及众多外围设备如PLL合成器、非易失性存储器、音频处理器、视频处理器和屏幕显示器等。这些IC器件之间需要相互传递数据信息,于是就需要使用大量的导线将它们连接起来,如下图所示(本图为电子数字积分计算器ENIAC I,来自维基百科):

这种众多IC器件之间的复杂互连,必然会导致芯片引脚数量庞大、PCB走线错综复杂,以及连接导线数量激增。这不仅会增加IC芯片的体积和功耗,同时也大大提高了制造成本,给IC设计制造厂商带来不利影响。同时,也给IC应用厂商和工程师们带来了极大的不便。

而为了解决这一问题,在1982年,荷兰著名电子公司飞利浦(Philips)公司发明了一种名为I2C(Inter-Integrated Circuit)的集成电路互连通信协议。该协议巧妙地利用仅两条线路就可以实现芯片之间的互连通信,大幅简化了硬件电路设计,提高了硬件资源的利用效率,给芯片设计制造商和应用商带来了极大的好处。

I2C协议的诞生,为复杂电子设备内部集成电路之间的互连通信提供了一种简单高效的解决方案,极大地促进了现代电子技术的发展。

166.2 I2C硬件连接

I2C总线在硬件上的连接非常简单,由SDA、SCL和上拉电阻构成,具体连接如下图所示:

在空闲状态下,SDA和SCL一般被上拉电阻拉高,保持高电平状态,在需要进行数据传输的时候,通过SCL和SDA的高低电平来产生I2C总线所需要的信号进行数据传递。

166.3 I2C基础知识

(1)总线拓扑结构:

I2C总线采用主从式架构,由一个主设备(Master)和一个或多个从设备(Slave)组成。主设备负责发起数据传输,从设备则响应主设备的请求。

(2)物理层接口:

   I2C总线使用两根线路进行通信:

   - SCL(Serial Clock Line)时钟线,由主设备提供时钟信号。

   - SDA(Serial Data Line)数据线,用于双向传输数据。

     这两根线通常需要上拉电阻来保持信号的高电平状态。

(3)通信协议:

I2C采用同步串行通信方式,主设备发起通信并提供时钟。主设备首先发送一个"启动"信号,然后发送从设备地址和数据传输方向(读或写)。从设备在收到自己的地址后,会发送应答信号,表示已准备好接收或发送数据。之后主设备和从设备就可以开始传输数据。通信结束时,主设备发送"停止"信号。

(4)时钟频率:

I2C总线支持多种通信速率,常见的有:

   - 标准模式(Standard mode):100kbps

   - 快速模式(Fast mode):400kbps

   - 高速模式(High-speed mode):3.4Mbps

(5)寻址机制:

I2C使用7位地址空间,最多可寻址127个从设备。地址空间的前7位用于指定从设备,最后1位用于表示读/写方向。

每一个12C外设都会对应一个唯一的地址(这个地址可以从I2C外设器件的数据手册中得到),主机和从机之间的通信就是通过这个地址来确定主机要和哪个从机进行通信的。

(6)多主机支持:

I2C总线支持多个主设备共享同一总线,通过仲裁机制避免冲突。当多个主设备同时试图占用总线时,优先级最高的主设备将获得总线控制权。

(7)其他特点:

总线最大电容限制为 400pF。

以字节为单位传输数据。

存在硬件 I2C 和软件 I2C 两种实现方式。

166.4 iTOP-RK3568开发板上的I2C接口

在RK3568数据手册中可以找到关于I2C接口的介绍,具体如下所示:

·支持 6 路 I2C 接口,分别为 I2C0、I2C1、I2C2、I2C3、I2C4、I2C5

·支持 7 位和 10 位地址模式

·软件可编程时钟频率

·I2C 总线上的数据传输速率可达:

标准模式最高 100Kbit/s

快速模式最高 400Kbit/s

快速模式加最高 1Mbit/s

其中这里的6路I2C接口指的是硬件I2C,在SOC上有专用的硬件I2C电路,关于硬件I2C的介绍如下所示:

硬件 I2C:

(1)实现方式:通过专用的硬件 I2C 接口电路来实现 I2C 总线协议。

(2)优点:

CPU 占用低,I2C 总线由硬件电路自动完成。

传输速率高,可以达到 400kbit/s 或 3.4Mbit/s。

更加可靠和稳定,不易受外部干扰。

(3)缺点:

需要专用的硬件 I2C 接口电路支持,成本相对较高。

接口固定,不如软件 I2C 那么灵活。

(4)适用范围:适用于高速、大量数据传输的场合,如 LCD、EEPROM 等外设的连接。

而软件I2C指的是通过GPIO口模拟SCL和SDA信号线,在硬件I2C不够用的情况下,可以通过GPIO来模拟软件I2C,关于软件I2C的介绍如下所示:

软件 I2C:

(1)实现方式:通过软件模拟 I2C 总线协议,使用通用 I/O 口来模拟 SCL 和 SDA 信号线。

(2)优点:

灵活性强,可以在任何 I/O 口上实现 I2C 接口。

成本低,不需要额外的硬件支持。

(3)缺点:

CPU 占用较高,因为需要在软件中模拟 I2C 时序。

传输速率较低,受 CPU 性能限制,一般在 100kbit/s 左右。

(4)适用范围:适用于低速、少量数据传输的场合。

RK3568开发板上的I2C接口具体使用情况如下表所示:

I2C0、I2C1各自只有一组pinctrl,而I2C3、I2C4、I2C5各有两组pinctrl,但某一个硬件I2C只能由一组GPIO复用。在后续的实验中将以mipi显示屏的FT5X06触摸芯片为例,逐步讲解和填充I2C驱动相关的知识,MIPI触摸屏原理图如下所示:

涉及到触摸相关的引脚为23-26,每个引脚对应的功能匹配表格如下所示:

至此,iTOP-RK3568开发板上的I2C接口就介绍完成了,会在下个章节中讲解I2C上拉电阻相关知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1883875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s流控平台apiserver详解

一、简单理解认识apiserver 1.主要功能 认证 鉴权 准入 mutating validating admission 限流 2.概念 apiserver保护etcd,缓存机制,有缓存直接返回,没缓存再去查看etcd,apiserver是担任和其他平台同信并认证 3.访问控制概览…

在postman中调试supabase的API接口

文章目录 在supabase中获取API地址和key知道它的restfull风格在postman中进行的设置1、get请求调试2、post新增用户调试3、使用patch更新数据,不用put!4、delete删除数据 总结 在supabase中获取API地址和key 首先登录dashboard后台,首页- 右…

InfluxDB时序数据库基本使用介绍

1、概要介绍 1.1、时序数据库使用场景 所谓时序数据库就是按照一定规则的时间序列进行数据读写操作的数据库。它们常被用于以下业务场景: 物联网IOT场景:可用于IOT设备的指标、状态监控数据存取。IT建设场景:可用于服务器、虚拟机、容器的…

专为运维工程师设计!阿里藏经阁出品的Python实战手册被我搞来了

Python 可能是极少数既简单又强大的编程语言中的一种。更重要的是,用它来编程是非常快乐的事。 今天给小伙伴们分享的是阿里“藏经阁”出品的专门给运维工程师设计的Python实战手册 废话不多说,下面把内容展示给大家 01 Python快速回顾 02 Python脚本…

基于大数据架构的情感分析

1 项目介绍 1.1 研究目的和意义 随着大数据时代的到来,电影产业积累了海量的用户评论数据,这些数据中蕴含着观众的情感倾向与偏好信息,为电影推荐和市场策略制定提供了宝贵资源。然而,如何高效地从这浩瀚的数据海洋中提炼出有价…

小白也能懂:逆向分析某网站加速乐Cookie参数流程详解

加速乐作为一种常见的反爬虫技术,在网络上已有大量详尽深入的教程可供参考。然而,对于那些初次接触的人来说,直接面对它可能仍会感到困惑。 声明 本文仅用于学习交流,学习探讨逆向知识,欢迎私信共享学习心得。如有侵权…

数据结构之“刷链表题”

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、相交链表 题目链接 大致思路 代码实现 二、环形链表1 题目链接 大致思路 代码实现 三、环形链表2 题目链接 大致思路 代码实…

【单片机毕业设计选题24040】-基于STM32的蓝牙防丢器设计

系统功能: 系统上电后显示“欢迎使用蓝牙防丢系统请稍后”两秒钟显示正常界面,如果蓝牙正常连接OLED显示Connected, 蓝牙未连接则显示DisConnected同时蜂鸣器报警 蓝牙正常连接后在APP上每隔三秒显示一个Connected 系统功能框图: 主要功能模块原理图: 电源时钟…

【HALCON】如何实现hw窗口自适应相机拍照成像的大小

前言 在开发一个喷码检测软件的时候碰到相机成像和hw窗体的大小不一致,hw太小显示不完全成像的图片,这使得成像不均匀,现场辨别起来比较不直观,因此需要对其进行一个调整。 解决 省略掉读取图片的环节,我们只需要将…

【论文复现|智能算法改进】基于自适应动态鲸鱼优化算法的路径规划研究

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 SCI二区|鲸鱼优化算法(WOA)原理及实现【附完整Matlab代码】 2.改进点 非线性收敛因子 WOA 主要通过控制系数向量 A 来决定鲸鱼是搜索猎物还是捕获猎物,即系数向量 A 可…

SparkSQL调优

SparkSQL调优 文章目录 SparkSQL调优Explain 查看执行计划语法执行计划处理流程 资源调优内存说明spark任务提交到yarn上运行命令 CPU优化 SparkSQL语法优化基于RBO优化基于CBO优化广播join方式一:通过参数指定自动广播方式二:强行广播 SMB Join 数据倾斜…

运维锅总详解RocketMQ

本文尝试从Apache RocketMQ的简介、主要组件及其作用、3种部署模式、Controller集群模式工作流程、最佳实践等方面对其进行详细分析。希望对您有所帮助! 一、Apache RocketMQ 简介 Apache RocketMQ 是一个开源的分布式消息中间件,由阿里巴巴集团开发并…

C++初学者指南-3.自定义类型(第一部分)-指针

C初学者指南-3.自定义类型(第一部分)-指针 文章目录 C初学者指南-3.自定义类型(第一部分)-指针1.为什么我们需要它们?2.T 类型的对象指针原始指针:T * 智能指针(C11) 3.操作符地址操作符 &解引用运算符 *成员访问操作符 ->语法重定向 4.nullptr (…

QT5:在窗口右上角显示图标

目录 一、环境与目标 二、实现逻辑(纯代码)与效果 三、参考代码 四、总结 一、环境与目标 qt版本:5.12.7 windows 11 下的 Qt Designer (已搭建) 目标:使用嵌套布局的方式将两个按钮显示在窗口右上角…

首款内置电源的迷你主机,不到千元的办公神器 | 零刻EQ13评测报告

零刻首款内置电源的迷你主机,不到千元的办公神器 | 零刻EQ13评测报告 哈喽小伙伴们好,我是Stark-C~ 众所周知,零刻作为目前国产迷你主机第一品牌,旗下系列众多,产线丰富,比如说它有针对游戏玩家的性能主机…

各类排序方法 归并排序 扩展练习 逆序对数量

七月挑战一个月重刷完Y总算法基础题,并且每道题写详细题解 进度:(3/106) 归并排序的思想也是分而治之 归并优点:速度稳定,排序也稳定 排序也稳定(数组中有两个一样的值,排序之后他们的前后顺序不发生变化,我们就说…

一句话介绍什么是AI智能体?

什么是AI智能体? 一句话说就是利用各种AI的功能的api组合,完成你想要的结果。 例如你希望完成一个关于主题为啤酒主题的小红书文案图片,那么它就可以完成 前面几个步骤类似automa的组件,最后生成一个结果。

手把手搞定报名亚马逊科技认证

引言 亚马逊云科技认证考试为我们这些技术从业者提供了提升专业技能的机会。无论选择线上还是线下考试,每种方式都有其独特的优势和挑战。选择合适的考试方式将帮助我们更好地展示自己的技术水平。以下是我对不同考试方式的优缺点介绍,以及各科目的考试…

tkinter显示图片

tkinter显示图片 效果代码解析打开和显示图像 代码 效果 代码解析 打开和显示图像 def open_image():file_path filedialog.askopenfilename(title"选择图片", filetypes(("PNG文件", "*.png"), ("JPEG文件", "*.jpg;*.jpeg&q…

哈希表(C++实现)

文章目录 写在前面1. 哈希概念2. 哈希冲突3. 哈希函数4.哈希冲突解决4.1 闭散列4.1.1 线性探测4.1.2 采用线性探测的方式解决哈希冲突实现哈希表4.1.3 二次探测 4.2 开散列4.2.2 采用链地址法的方式解决哈希冲突实现哈希表 写在前面 在我们之前实现的所有数据结构中(比如&…