当前位置: 首页 > news >正文

【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.mrgr.cn/news/42115.html

相关文章:

  • 滑动窗口+动态规划
  • 【课程学习】Wireless Communications
  • 基于Springboot+Vue的小区停车场管理系统登录(含源码数据库)
  • UNICODE UTF8
  • Javascript数组研究02_手写实现_at_concat_copyWithin_entries_every
  • 风格迁移项目一:如何使用
  • JQuery基本介绍和使用方法
  • CF687D Dividing Kingdom II 题解
  • 简历制作面试篇
  • pdb个人记录
  • 【算法系列-链表】交换链表节点(反转 + 交换)
  • Spring MVC的运行流程详解
  • Netty:高性能异步网络编程框架全解析
  • Python中重载操作符实现管道操作
  • python全栈学习记录(二十一)类的继承、派生、组合
  • 【C++】vector类的模拟实现
  • QT入门知识----2024.8.21-9.28
  • 如何降低接口的响应时间(RT)
  • 滚雪球学Oracle[5.2讲]:数据库备份与恢复基础
  • Servlet的生命周期及用户提交表单页面的实现(实验报告)