【Orange Pi 5 嵌入应用编程】-用户空间I2C通信

用户空间I2C通信

文章目录

  • 用户空间I2C通信
    • 1、理解I2C协议
      • 1.1 什么是I2C协议
      • 1.2 I2C协议如何工作
      • 1.3 I2C数据传输步骤
      • 1.4 单主机多从机
      • 1.5 多主机多从机
      • 1.6 I2C的优缺点
    • 2、嵌入式Linux系统中的I2C
    • 3、Orange Pi 5的I2C配置及编程
      • 3.1 I2C配置
      • 3.2 I2C通信实现
        • 3.2.1 I2C通信函数定义
        • 3.2.2 I2C通信函数实现

1、理解I2C协议

1.1 什么是I2C协议

I2C或IC间通信是嵌入式系统中非常常见的低速通信方法。I2C 的最大优势在于易于实现,被半导体制造商广泛采用,并且能够在同一总线上轻松添加多个节点,从而实现更高效的设计(甚至可能更具成本效益)。I2C由飞利浦半导体公司定义,后来被恩智浦半导体公司收购。I2C 基本上是主从总线,是纯粹的半双工。

I2C 是一种简单的低速 2 线总线,在嵌入式板上很常见,通常用于访问不在 SoC 上的外设,例如显示控制器、摄像头传感器、GPIO 扩展器等。在PC上可以找到一种称为系统管理总线(System Manager Bus,SMBus)的相关标准,用于访问温度和电压传感器。SMBus 是 I2C 的一个子集。

I2C 是一种主从协议,主设备是 SoC 上的一个或多个主机控制器。 从设备具有制造商分配的 7 位地址(阅读数据表),每条总线最多允许 128 个节点,但保留了 16 个节点,因此实际上只允许 112 个节点。主设备可以与其中一个从设备发起读取或写入事务。通常,第一个字节用于指定从机上的寄存器,其余字节是从该寄存器读取或写入该寄存器的数据。


http://www.niftyadmin.cn/n/5689222.html

相关文章

Python知识点:如何使用Edge Impulse与Python进行机器学习模型部署

开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 使用Edge Impulse与Python进行机器学习模型部署 在物联网和边缘计算领域&#x…

【前沿 热点 顶会】NIPS 2024中分割有关的论文

XMask3D:开放词汇 3D 语义分割的跨模式 Masking 推理 开放词汇 3D 语义切分的现有方法主要集中在建立包含 3D、 2D 和文本形态的统一特征空间。然而,传统的技术,如全局特征对齐或视觉语言模型蒸馏,往往只强制实施近似对应&#x…

演示:基于WPF的DrawingVisual开发的频谱图和律动图

一、目的:基于WPF的DrawingVisual开发的频谱图和律动图 二、效果演示 波形图 极坐标 律动图极坐标图 律动图柱状图 Dock布局组合效果 三、环境 VS2022,Net7,Win10,NVIDIA RTX A2000 四、主要功能 支持设置起始频率,终止频率,中心…

Java 之深入理解 String、StringBuilder、StringBuffer

前言 由于发现 String、StringBuilder、StringBuffer 面试的时候会经常问到,这里就顺便总结一下:本文重点会以这三个字符串类的性能、线程安全、存储结构这三个方面进行分析 ✨上期回顾:Java 哈希表 ✨目录 前言 String 介绍 String 的不可变…

浅析Golang的Context

文章目录 1. 简介2. 常见用法2.1 控制goroutine的生命周期(cancel)2.2 传递超时(Timeout)信息2.3 传递截止时间(Deadline)2.4 传递请求范围内的全局数据 (value) 3 特点3.1 上下文的…

解决pycharm中matplotlab画图不能显示中文的错误

大家在用matplotlab画图时想要设置的中文字体通常显示不出来,这是因为Matplotlib在渲染图形时找不到某些特定的字形(Glyph),尤其是中文字符。这些字符在你的默认字体中不存在,因此Matplotlib无法正确显示它们。 可以通…

zookeeper 服务搭建(单机)

安装步骤 从码云下载 git clone apache-zookeeper-3.5.9-bin: apache-zookeeper-3.5.9-bin重命名 mv apache-zookeeper-3.5.9-bin/ apache-zookeeper-3.5.9添加执行权限 进入bin目录 cd bin/添加可执行权限 chmod ux *.sh在安装目录下创建data目录 mkdir data 修改配置文件 修…

PADS自动导出Gerber文件 —— 6层板

在出GERBER文件之前要给PCB文件铺完铜并且检查连接性和安全间距无错误。进入CAM中之后点自动定义。如果电气层不需要用到2D线,保险起见在电气层中把2D线和文本去掉(在DRC检查时2D线不会报错,文本是会报错的),因为有些时…