【硬件外设使用】——I2C

news2024/9/22 7:37:25

【硬件外设使用】——I2C

  • I2C基本概念
  • I2C通信协议
  • I2C使用方法
    • pyb.i2c
    • machine.i2c
  • I2C可用的传感器

I2C基本概念

I2C是"Inter-Integrated Circuit"的缩写,也被称为TWI (Two Wire Interface)。

它是一种串行通信协议,用于连接多个设备或组件。

I2C协议使用两根总线线(数据线SDA和时钟线SCL)进行通信。它允许多个设备连接到同一个总线上,并通过独特的地址进行标识。I2C通信协议最初由飞利浦公司开发,现在广泛应用于嵌入式系统、传感器和其他电子设备中。I2C协议具有高速传输、简单灵活和可靠性高等优点。

在这里插入图片描述

I2C通信协议

I2C通信协议是一种串行通信协议,在通信中使用两根总线线(数据线SDA和时钟线SCL)。下面是I2C通讯的基本原理:

  1. 时钟同步:I2C总线上的所有设备都遵循同一个时钟信号,这意味着当主设备发送时钟脉冲时,所有连接到I2C总线上的设备都会响应。

  2. 数据传输:I2C协议是一种基于帧的协议,每个数据帧包含8位数据,其中包括7位地址和1位读/写标志位。主设备通过向从设备发送地址将其选中,并指定操作是读还是写操作。之后,数据可以被传输到或从从设备接收。

  3. 确认应答:在每个数据字节传输后,接收方必须向发送方返回一个确认应答信号以指示成功接收数据。任何设备都可以发出一个非确认应答,以表明没有成功接收数据。

  4. 多主机操作:I2C协议支持多主机操作,允许多个主机设备轮流控制I2C总线。 主机设备与其他设备之间的优先级基于其发送的起始条件的优先级。

  5. 时钟速率:I2C协议支持四种不同的时钟速率,最高可达400kHz。时钟速率越高,数据传输速度越快,但是会增加线路的电磁干扰,从而降低了可靠性。

I2C通信协议简单、可靠,并被广泛用于各种电子设备之间的通信和控制。

I2C使用方法

pyb.i2c

pyb.i2c是MicroPython中的一个模块,用于控制I2C总线。通过使用pyb.i2c模块,可以轻松地与其他设备进行通信,例如传感器、电机驱动器和显示屏等。

MicroPython的pyb.i2c模块提供了一些常用的函数,用于发送和接收数据,以及设置I2C总线的速度和地址等参数。以下是一些常用的pyb.i2c函数:

  • init(): 初始化I2C总线。
  • send(): 发送数据到指定设备。
  • recv(): 从指定设备接收数据。
  • mem_write(): 将数据写入指定设备的指定寄存器。
  • mem_read(): 从指定设备的指定寄存器读取数据。

pyb.i2c模块还提供了其他一些函数,可以根据需要进行调用。使用pyb.i2c模块,可以轻松地实现多种应用程序,例如温度传感器、加速度计和压力传感器等。

machine.i2c

machine.i2c是MicroPython中的一个类,用于控制I2C总线。它与pyb.i2c非常相似,但是machine.i2c更加通用,因为它不依赖于特定的硬件平台。

通过使用machine.i2c类,可以轻松地与其他设备进行通信,例如传感器、电机驱动器和显示屏等。与pyb.i2c相同,machine.i2c类也提供了一些常用的方法,例如read()write()方法,用于读写数据。

以下是一些常用的machine.i2c方法:

  • init(): 初始化I2C总线。
  • readfrom(): 从指定设备读取数据。
  • writeto(): 将数据写入指定设备。
  • writeto_mem(): 将数据写入指定设备的指定寄存器。
  • readfrom_mem(): 从指定设备的指定寄存器读取数据。

machine.i2c类还提供了其他一些方法,可以根据需要进行调用。使用machine.i2c类,可以轻松地实现多种应用程序,例如温度传感器、加速度计和压力传感器等。

I2C可用的传感器

下面是一些常用的基于I2C总线的传感器:

  1. 温度传感器:例如DS18B20、LM75、TMP102、AM2320等。它们通常具有高精度和快速响应时间。
    在这里插入图片描述

  2. 加速度计:例如ADXL345、LSM303等。它们通常用于测量物体在X、Y、Z三个方向上的加速度。
    在这里插入图片描述

  3. 压力传感器:例如BMP180、BMP280等。它们通常用于测量大气压力和海平面高度等相关参数。
    在这里插入图片描述

  4. 光照传感器:例如TSL2561、BH1750等。它们通常用于监测环境中的光强度和亮度。
    在这里插入图片描述

  5. 湿度传感器:例如DHT11、DHT22、HTU21D等。它们通常用于测量周围环境的相对湿度和温度。
    在这里插入图片描述

以上只是一些常见的I2C传感器,实际上,还有很多其他类型的传感器可以使用I2C进行通信,例如气体传感器、距离传感器、心率传感器等。
I2C总线具有通用性和可扩展性,可以灵活地满足各种不同应用的需求。

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

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

相关文章

记一次idea+Dockerfile+docker部署

软件版本:idea:2021.3,docker:19.03.9,服务器:centos7.8 1.centos7服务器配置 在服务器上编辑docker文件 vi /usr/lib/systemd/system/docker.service修改以ExecStart开头的行 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/ru…

计算机视觉基础__图像特征

计算机视觉基础__图像特征 本篇目录: 一、前言 二、位图和矢量图概念 三、图像的颜色特征 四、RGB 颜色空间 五、HSV 颜色空间 六、HLS 颜色空间 七、实例代码 八、参考资料 一、前言 传统图像处理,需要找出图片中的关键特征,然后对这…

30天学会《Streamlit》(5)

30学会《Streamlit》是一项编码挑战,旨在帮助您开始构建Streamlit应用程序。特别是,您将能够: 为构建Streamlit应用程序设置编码环境 构建您的第一个Streamlit应用程序 了解用于Streamlit应用程序的所有很棒的输入/输出小部件 第6天 - 将…

GO变量的使用

Go变量的使用注意事项 (1)第一种:指定了变量类型,但是声明后若不赋值,则使用默认值 (2)第二种:根据值自行判断我们的变量类型**(类型推导)** var num10.00 …

Python ---> 衍生的数据技术

我的个人博客主页:如果’真能转义1️⃣说1️⃣的博客主页 关于Python基本语法学习---->可以参考我的这篇博客:《我在VScode学Python》 随着人工智能技术的发展,挖掘和分析商业运用大数据已经成为一种推动应用, 推动社会发展起着…

接口优化方案

前言 最近随着国产化热潮,公司的用于营业的电脑全部从windows更换成了某国产化电脑,换成国产化之后,我们系统的前台web界面也由之前的jsp页面重构成vue.所以之前的一体式架构也变成了前后端分离的架构。但是在更换过程后,发现一些…

蓝绿部署技术方案

文章目录 ngx_lua介绍Nginxluangx_lua模块的原理:ngx_lua 模块执行顺序与阶段ngx_lua应用场景 JWTnginx镜像构造lua-redis蓝绿部署特性注意:蓝绿部署架构图nginx配置服务脚本部署使用职责分工 ngx_lua介绍 Nginx Nginx是Web服务器、HTTP反向代理和TCP代…

apache+tomcat实现动静分离和负载均衡

文章目录 ApacheTomcat整合环境通过JK实现动静分离编译mod_jk.so创建测试页面配置jk模块启动apache和tomcat测试。 ApacheTomcat负载均衡配置测试页配置mod_jk文件配置worker.properties测试 ApacheTomcat整合 Tomcat作为一个Servlet容器,可以用于运行Java Web应用…

Unity之c#专题篇——【不动如山核心章】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

连接VPN后无法上网 Windows Route 轻松解决

连接VPN后无法上网 Windows Route 轻松解决 引言文档添加路由 引言 很多时候,我们公司的 VPN 为了不占用公司的外网带宽和安全起见,都会禁止访问外网。我们的电脑连接 VPN 后,所有的网络数据包都会走 VPN,从而导致我们无法访问互…

ES集群配置和分词器(九)

一直在坑自己家人,对,说的就是你,大A. 上一章简单介绍了SpringBoot整合 EasyES (八), 如果没有看过,请观看上一章 一. Windows 集群部署 一.一 服务复制 将 es 复制3份 一.二 配置文件配置 每个服务节点的 config/eslsticsearch.yml 配置…

AANet: CTPA图像中肺动脉栓塞检测的动脉感知网络

AANet: Artery-Aware Network for Pulmonary Embolism Detection in CTPA Images 摘要 肺栓塞(PE)是危及生命的疾病,计算机断层肺血管造影(CTPA)是临床上最好的诊断技术 然而,在CTPA图像中,PE通常表现为血液动脉明亮区域中的黑点&#xff0…

UE4/5多人游戏详解(一、基础理论与局域网内部的连接)

目录 多人游戏理论简单讲解 点对点: 于是,服务端和客户端的概念出现了: 局域网连接: 从第三人称c项目开始 创建项目: 以一个客户端作为监听服务器 3个客户端,在场景后方使用服务器: 局…

leetcode:同构字符串(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读 题目: 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构…

数字营销(三)如何确定合适的流量渠道?

一、为什么要确定付费客户特征? 首先营销策略是什么?营销策略,即战略,就是为实现主要流量侧的长期目标,所采取的具体打法和步骤。 比如一个网站的成功离不开获取网站流量和用户信任的建立。除了谷歌 SEO 获取流量&am…

【JavaEE初阶】多线程(一)

摄影分享! 文章目录 认识线程(Thread)概念执行多线程编程创建线程的写法1.继承Thread,重写run2.实现Runnable接口3.使用匿名内部类,继承Thread4.使用匿名内部类,实现Runable5.使用Lambda表达式 Thread用法…

【ARMv8/v9 MMU 页表配置 01 】

文章目录 1.1 MMU1.1.1 虚拟地址位宽配置1.1.2 页面大小(grandule size)配置1.1.3 AArch64 页表项描述符格式1.1.4 内存属性配置 1.1 MMU 1.1.1 虚拟地址位宽配置 64 位虚拟地址中,并不是所有位都用上,除了高 16 位用于区分内核空间和用户空间的虚拟地…

SpringCloud:ElasticSearch之数据聚合

聚合(aggregations) 可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何? 实现这些统计功能的比数据…

数组题目总结 -- 双指针

目录① 快慢指针:一. 删除有序数组中的重复项1. 思路和代码I. 博主的做法:II. 东哥的做法:2. 总结二. 删除排序链表中的重复元素(扩展)1. 思路和代码I. 博主的做法:II. 东哥的做法:2. 总结三. 移…

硬件语言Verilog HDL牛客刷题day08 综合部分

1. Johnson Counter 1.题目: 请用Verilog实现4位约翰逊计数器(扭环形计数器),计数器的循环状态如下。 电路的接口如下图所示 2.解题思路 2.1 一个简单的状态机的配置。 2.2 注意 起始状态 是 0000 就行 3.解题代码 timescale …