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

瑞芯微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上拉电阻相关知识。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无线物联网练习题

文章目录 选择填空简答大题 选择 不属于物联网感知技术的是(A) A:ZigBee B:红外传感器 C:FRID D:传感器 ZigBee是一种无线通信技术,虽然它常用于物联网中作为设备之间的通信手段,但它本身并不是一种感知技术 关于物联网于与互联网的区别的描述&#xff…

在线疫苗预约小程序的设计

管理员账户功能包括:系统首页,个人中心,工作人员管理,管理员管理,用户管理,疫苗管理,论坛管理,公告管理 微信端账号功能包括:系统首页,公告,疫苗…

机器人控制系列教程之并联机器人简介

背景 根据其构件的连接是否构成闭环形式,机器人可分为串联机器人和并联机器人两种。对于串联机器人,其所有的构件以串联的结构形式连接起来,在空间组成一种开环结构,因而具有工作空间大,灵活性好等优点,但…

MySQL之高可用性和应用层优化(一)

高可用性 故障转移和故障恢复 在应用中处理故障转移 有时候让应用来处理故障转移会更加简单或者更加灵活。例如,如果应用遇到一个错误,这个错误外部观察者正常情况下是无法察觉的,例如关于数据库损坏的错误日志信息,那么应用可…

C++算法学习心得八.动态规划算法(6)

1.最长递增子序列(300题) 题目描述: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如&…

Kaggle竞赛——房价预测

目录 1. 特征分析1.1 数据集导入1.2 统计缺失值1.3 可视化缺失值1.4 缺失值相关性分析1.5 训练集和测试集缺失数据对比1.6 统计特征的数据类型1.7 数值型特征分布直方图1.8 数值型特征与房价的线性关系1.9 非数值型特征的分布直方图1.10 非数值型特征箱线图1.11 数值型特征填充…

代码随想录算法训练营第55天(py)| 单调栈 | 42. 接雨水*、84.柱状图中最大的矩形

42. 接雨水* 力扣链接 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 思路1 暴力 按列来计算。每一列雨水的高度,取决于,该列 左侧最高的柱子和右侧最高的柱子中,…

WMS、ERP、MES之间的关系

WMS(仓库管理系统)、ERP(企业资源计划)、MES(制造执行系统)是企业管理和运作中常见的三种系统,它们在不同的层面上发挥作用,但之间又有紧密的联系。三者之间的区别如下: …

【哈哈大一上学的全忘了,重开!!】STM32从零入门物联网开发

本笔记资料来源 :STM32物联网入门30步=单片机物联网入门教程 WIFI连接阿里云物联网CubeMXHAL库蓝牙ESP8266杜洋主讲_哔哩哔哩_bilibili IOT:Internet of things 学习目标: 1.掌握洋桃IoT开发板的各功能以及驱动与基本应用 2.掌…

【C++11:右值引用,列表初始化】

统一列表初始化: 构造函数的函数名与函数体之间增加一个列表,用于对成员初始化 在实例化对象时,支持单/多参数的隐式转化,同时也可以省略符号,让代码更简洁 右值的引用 左值: 左值与右值的重要区别就是能…

tkinter显示图片

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

专题五:Spring源码之初始化容器上下文

上一篇我们通过如下一段基础代码作为切入点,最终找到核心的处理是refresh方法,从今天开始正式进入refresh方法的解读。 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(…

2.3章节Python中的数值类型

1.整型数值 2.浮点型数值 3.复数   Python中的数值类型清晰且丰富,主要分为以下几种类型,每种类型都有其特定的用途和特性。 一、整型数值 1.定义:整数类型用于表示整数值,如1、-5、100等。 2.特点: Python 3中的…

面试题-Spring家族与SpringIOC

1.spring家族的介绍 Spring简单图: 2.IOC原理 IOC就是原先代码里需要开发者实现对象的创建和关系依赖,反转交给SpringIOC容器管理对象的生命周期和对象之间的依赖关系。 依赖注入的方式: Setter:实现特定属性的public sette…

RedHat9 | podman容器-续集

一、管理容器存储和网络资源 使用容器来运行简单的进程,然后退出。可以配置容连续运行特定服务,如数据库服务。如果持续运行服务,需要向容器添加更多的资源,如持久存储或对其他网络的访问权限。 针对企业容器平台上的大型部署&a…

数据资产安全策略的定制化之道:深入了解各企业独特需求,量身打造个性化的数据资产保护方案,确保数据安全无虞,助力企业稳健发展

目录 一、引言 二、企业数据资产安全现状分析 (一)数据安全风险多样化 (二)传统安全措施难以满足需求 (三)企业数据资产安全意识亟待提高 三、定制化数据资产安全策略的重要性 (一&#…

SuperMap GIS基础产品FAQ集锦(20240701)

一、SuperMap iDesktopX 问题1:对于数据提供方提供的osgb格式的数据,如何只让他生成一个s3mb文件呢?我用倾斜入库的方式会生成好多个s3mb缓存文件 11.1.1 【解决办法】不能控制入库后只生成一个s3mb文件;可以在倾斜入库的时候设…

永磁同步电机离线参数识别

引言 永磁同步电机(PMSM)因其结构简单、功率密度高、转矩惯量比大和效率高等优点,在工业生产、航空航天和新能源交通等领域得到了广泛应用。然而,传统的参数辨识方法依赖位置传感器,这不仅增加了硬件成本,…

如何借用物联网快速实现高标准农田信息化

如何借用物联网快速实现高标准农田信息化 高标准农田信息化,作为现代农业发展的重要基石,是指在建设高产、稳产、节水、环保的农田基础上,深度融合现代信息技术,实现农田管理的精准化、智能化和高效化。物联网(Intern…

sql server启动、连接 与 navicat连接sql server

一、sql server 启动 1.搜索cmd->以管理员身份运行 2.输入以下命令 net start mssqlserver 3.服务器启动成功 二、sql server连接 1.打开ssms,输入,连接 2.右键,属性 3.连接,勾选允许远程连接到此服务器 三、navicat连接sq…