首页 > 其他分享 >IIC基本介绍-1

IIC基本介绍-1

时间:2023-07-16 15:11:05浏览次数:66  
标签:基本 I2C 驱动程序 控制器驱动 Driver 介绍 AT24C02 IIC i2c

1. I2C硬件框架

 

 

  • 在一个芯片(SoC)内部,有一个或多个I2C控制器

  • 在一个I2C控制器上,可以连接一个或多个I2C设备

  • I2C总线只需要2条线:时钟线SCL、数据线SDA

  • 在I2C总线的SCL、SDA线上,都有上拉电阻

 

2. I2C软件框架

 

以I2C接口的存储设备AT24C02为例:

  • APP:

    • 提出要求:把字符串"www.100ask.net"写入AT24C02地址16开始的地方

    • 它是大爷,不关心底层实现的细节

    • 它只需要调用设备驱动程序提供的接口

  • AT24C02驱动:

    • 它知道AT24C02要求的地址、数据格式

    • 它知道发出什么信号才能让AT24C02执行擦除、烧写工作

    • 它知道怎么判断数据是否烧写成功

    • 它构造好一系列的数据,发给I2C控制器

  • I2C控制器驱动

    • 它根据I2C协议发出各类信号:I2C设备地址、I2C存储地址、数据

    • 它根据I2C协议判断

3. 我们讲什么

 

3.1 对于Linux

 

从上到下:

  • 先讲I2C协议

  • APP可以通过两类驱动程序访问设备

    • I2C设备自己的驱动程序

    • 内核自带的i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间的驱动程序(i2c-dev.c)

  • I2C Device Driver

    • I2C设备自己的驱动程序

    • 内核自带的i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间的驱动程序(i2c-dev.c)

  • I2C Controller Driver

    • 芯片I2C控制器的驱动程序(称为adapter)

    • 使用GPIO模拟的I2C控制器驱动程序(i2c-gpio.c)

 

3.2 对于单片机/裸机

 

从上到下:

  • 先讲I2C协议

  • APP

  • I2C Device Driver

  • I2C Controller Driver(也被称为adapter)

标签:基本,I2C,驱动程序,控制器驱动,Driver,介绍,AT24C02,IIC,i2c
From: https://www.cnblogs.com/liusiluandzhangkun/p/17557870.html

相关文章

  • 程序员基本认知
    内容来至:人月神话,代码大全,程序员修炼之道架构认知EasierToChange优秀的设计比糟糕的设计更容易变化,为你指向正确的设计方向。可逆性想想薛定谔的猫,把你的代码比喻为装100只猫的盒子,需求比喻为猫的话,想想你的代码为多少可能提供了支持?因为改变是最稳定的,所以永不做最......
  • 新数据介绍
    spectra_truth_campus_1:4个72维度的反射率。spectra_truth_campus_3:4个72维度的反射率。gulfport_wavelength:波长。muufl_gulfport_campus_3_all4TypeLabelload('muufl_gulfport_campus_3_all4TypeLabel')w=hsi.RGBfigure(1);imshow(w);把RGB可视化了,RGB是3维的RGB通道。spe......
  • 数据类型、基本数据类型转换
    基本数据类型整型【byte,short,int,long】byte1 字节short2 字节int4 字节【默认】long8 字节(声明long型常量时,需在常量后加l或L)浮点型【float,double】float4 字节(保留8位有效数字)(声明float型常量时,需在常量后加f或F)double8 字节(保留17位有效数字)【默认】说明:1)浮点数......
  • MySQL学习-基本操作
    1.数据库操作创建数据库createdatabasetest;查看数据库showdatabases;进入数据库usetest;删除数据库dropdatabasetest;2.表格操作创建表格 createtabletable1(namevarchar(20),date1date)删除表格droptabletest1修改表格表项altertabletable1modif......
  • Maven多模块项目架构配置介绍和实战
    原文地址:https://ntopic.cn/p/2023071501/源代码先行:Gitee多模块项目仓库:https://gitee.com/obullxl/ntopic-bootGitHub多模块项目仓库:https://github.com/obullxl/ntopic-boot背景介绍我们项目采用的是Maven多模块架构,我发现项目的部分子模块的pom.xml中重复引用了相同的J......
  • RxJs 里的 using operator 的使用场景介绍
    RxJS的using操作符是一种创建可观察对象的方法,它可以处理订阅开始时和结束时的资源分配。这使得using在处理需要清理的资源(如数据库连接、文件句柄或网络连接)时非常有用。using操作符创建一个可观察对象,该对象会在订阅开始时创建一个资源,并在订阅结束时释放该资源。这使得......
  • DBGridEh 基本操作
    导出到Excel等文件类型1.导入导出引用单元useDBGridEhImpExp;类型说明类型名称说明TDbGridEhExportAsText导出到文本文件TDbGridExportAsUnicodeText导出到Unicode文本TDbGridEhExportAsCSV导出到CSVTDbGridEhAsHtml导出到HTMLTDBGridEhAsRTF......
  • Rxjs tap 操作符的使用场景介绍
    RxJS的tap操作符是一个非常有用的工具,它允许我们“查看”Observable流中的数据,同时不会对数据流产生任何影响。换句话说,它是一种副作用(sideeffect)操作符,允许我们在不更改主要数据流的情况下执行一些额外的操作,如日志记录、调试或其他副作用。在详细讨论tap操作符的使用场......
  • anchor base和anchor free的应用场景介绍
    在目标检测领域,能大规模应用在业务领域和工业领域的,很大一部分都是采用yolo来做,我们知道yolo这个系列,除了v1和v2和x以外,都是基于anchorbase的。这也从侧面说明,anchorbase其实更适用业务,我们知道业务上肯定是追求高召回和高准确率,所以anchorfree很显然不能很好满足这两个需求。......
  • day03 链表基本操作
    前置知识,链表数据结构1.移除链表元素移除链表元素不难,只需要把前一个结点的下一节点指向下一个节点的下一节点如果当前遍历的节点与所给值相等,则需要移除此元素,移除元素是将上一节点的next域设置为当前节点的next,当前节点后移一位如果当前遍历的节点值不等于所给值,则前驱......