目录

  • I2C介绍
  • TWI 介绍
  • arduino 的iic库
  • 下一讲,具体例子

I2C介绍

I2C 是一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。简单说就是 只需要4根线(电源正、GND、SDA线和SCL线)就可以让单片机和单片机或其他设备(多达100多个设备)通讯,也就是说100多个设备互相通讯只用4根线就可以了,所以说他是串行总线。

具体来说,SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出。需通过上拉电阻接电源VCC。当总线空闲时,两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路,在总线上消耗的电流很小,因此总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容,而线路中电容会影响总线传输速度。当电容过大时,有可能造成传输错误。所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件。然后主机接收从器件发送的数据最后由主机终止接收过程。在这种情况下主机负责产生定时时钟和终止数据传送。

TWI 介绍

TWI 就是 Two—wire Serial Interface
TWI(Two—wire Serial Interface)接口是对I2C总线接口的继承和发展,完全兼容I2C总线,具有硬件实现简单、软件设计方便、运行可靠和成本低廉的优点。TWI由一根时钟线和一根传输数据线组成,以字节为单位进行传输。
在TWI总线上传送数据,首先送最高位,由主机发出启动信号,SDA在SCL 高电平期间由高电平跳变为低电平,然后由主机发送一个字节的数据。数据传送完毕,由主机发出停止信号,SDA在SCL 高电平期间由低电平跳变为高电平

arduino 的iic库

arduino 的iic库是Wire
该库使您可以与I2C / TWI设备进行通信。在具有R3布局(1.0引脚)的Arduino板上,SDA(数据线)和SCL(时钟线)位于靠近AREF引脚的引脚接头上。Arduino Due有两个I2C / TWI接口SDA1和SCL1靠近AREF引脚,另外一个在引脚20和21上。

作为参考,下表显示了I2C / TWI引脚在各种Arduino板上的位置。

板子 I2C / TWI arduino引脚(不是芯片硬件引脚)
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1

从Arduino 1.0开始,该库继承自Stream函数,使其与其他读/写库一致。因此,send()和receive()已被read()和write()取代。

特别注意:

  1. I2C地址有7位和8位版本。7位标识设备,第八位确定是正在写入设备还是从中读取设备。Wire库始终使用7位地址。如果您有一个使用8位地址的数据表或示例代码,则需要删除低位(即,将值向右移一位),从而得到0到127之间的地址。但是,地址从0到7未使用,因为保留了它们,因此可以使用的第一个地址是8。请注意,连接SDA / SCL引脚时需要一个上拉电阻。请参考示例以获取更多信息。MEGA 2560板上的板上引脚20-21具有上拉电阻。
  2. Wire库的实现使用32字节的缓冲区,因此任何通信都应在此限制之内。单次传输中超出的字节将被丢弃。

下一讲,具体例子

0021 arduino iic i2c 实例讲解 TWI是什么 arduino 的 iic 库 i2c库 arduino Wire 库相关推荐

  1. 0022 arduino 实例讲解 TWI arduino 的 iic 库 i2c库 arduino Wire 库 主机 读 的例子

    目录 硬件连接: 主机 读 的例子 硬件连接: 本次是两个Arduino 一个作为主机,一个作为从机 主机 读 的例子 // Wire Master Reader #include <Wire. ...

  2. 完整的芯片反向设计流程原来是这样的!(实例讲解)

    完整的芯片反向设计流程原来是这样的!(实例讲解) 作者:时间:2018-02-23来源:网络收藏 现代IC产业的市场竞争十分激烈,所有产品都是日新月异,使得各IC设计公司必须不断研发新产品,维持自身企 ...

  3. 【全志T113-S3_100ask】6-编写IIC驱动GY-302(twi)

    [全志T113-S3_100ask]6-编写IIC驱动GY-302(twi) 前言 (一)不使用设备树操作 1.预操作 2.使用i2c tools测试iic 3.编写测试应用 4.测试 (二)使用设备 ...

  4. Atmega的TWI通信,包含模拟IIC,硬件查询方式,以及硬件方式收发程序

    /*  * TWI.h  *  * Created: 2015/10/30 14:48:59  *  Author: Administrator  */  /********************* ...

  5. java实现页面高效刷新_selenium高效应对Web页面元素刷新的实例讲解

    当我们在页面上进行selenium.type()或者selenium.click()操作的时候,往往需要需要等待一个元素的出现,对于一般的网页,当我们进入一个新页面的时候,往往会使用selenium. ...

  6. php 返回一个json对象,PHP给前端返回一个JSON对象的实例讲解

    解决问题:用php做后台时,如何给前端发起的AJAX请求返回一个JSON格式的"对象": 说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,总感觉有点无力.最 ...

  7. python简易版实例_Python3之简单搭建自带服务器的实例讲解

    WEB开发,我们先从搭建一个简单的服务器开始,Python自带服务模块,且python3相比于python2有很大不同, 在Python2.6版本里,/usr/bin/lib/python2.6/ 目 ...

  8. 手摸手教你数据可视化!(附实例讲解)

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:CrescentAI,华南理工大学,Datawhale优秀学习者 ...

  9. 【Python基础】手把手教你数据可视化!(附实例讲解)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:CrescentAI,华南理工大学,Datawhale优秀学 ...

最新文章

  1. Mysql使用大全 从基础到存储过程
  2. JavaScript 小记 之 闭包(Closures)
  3. jquery UI入门
  4. mvc在页面上显示PDF
  5. oracle 9i sql_id,Oracle9i增添 wm_concat函数(转)
  6. sturts2标签判断多个条件
  7. 基于Java+SpringBoot+vue+element等动物救助平台设计和实现
  8. php日历排班表,日历排班表软件下载
  9. 6.6 AdaBoost实战
  10. SpringCloud-Zuul(二):自定义Filter及内部路由源码解析
  11. 远程连接另一台电脑,如何用被远程的电脑听歌
  12. multisim安装完成后显示安装程序损坏的免费解决方案
  13. 采样频率和带宽的关系_等效时间采样示波器和实时示波器的差别?
  14. toc如何判断 word_在WORD为什么点插入目录显示{TOC\o1
  15. 解决sublime中文输入问题
  16. 关于TFP.STS的一个Bug(GPU内存爆掉,无法做预测)
  17. 更改WPS云文档数据存储位置
  18. PC微信逆向HOOK消息之快速更新找到HOOK地址
  19. mysql权限和使用注意事项及mysql 数据类型详解和innodb,myisam区别
  20. 跨界也伟大:当D.E.Shaw进军医疗领域

热门文章

  1. Qt编写地图综合应用19-地图服务
  2. 大厂面试爱问的HashMap死锁问题,看这一篇就够了
  3. osg学习(二十八)有关kml和kmz
  4. 山东理工大学-2022级-程序设计基础I-实验9 字符串
  5. 利用搜索关键字爬取今日头条新闻评论信息案例
  6. 【多媒体封装格式详解】---ASF(WMV/WMA)【2】完
  7. SpringBoot-spring-data-elasticsearch7.12.0
  8. bzoj2818: Gcd 莫比乌斯繁衍
  9. VS2019配置libigl(吐血整理)
  10. 解决win10服务主机:网络服务占用网络宽带的方法(自测有效)