这篇文章描述了I2C(互连集成电路,或“两线制”)接口的工作方式,特别是参考了基于ATmega328P微处理器芯片的Arduino Uno。但是,很多细节将引起人们的广泛关注。

两线接口对于连接多个设备非常有用,因为它们都可以共享相同的两个引脚(加上接地回路)。这是因为设备是“可寻址的”。每个设备都必须具有8到119范围内的唯一地址。地址0保留为“广播”地址,地址1到7保留用于其他目的,地址120到127保留以备将来使用。

因此,您可能在地址10处有一个LCD屏幕(例如),在地址11处有一个键盘,依此类推。
在Arduino Uno上,您需要的引脚是:

模拟端口4(A4)= SDA(串行数据)
模拟端口5(A5)= SCL(串行时钟)

在Arduino Mega上,SDA是数字引脚20,SCL是数字引脚21(它们在板上本身标记为SDA和SCL)。

在Arduino Leonardo上,SDA和SCL引脚是单独的引脚,因此在板上标有标记(AREF旁边)。它们还连接到D2(SDA)和D3(SCL)。

这些引脚可能需要上拉电阻(也就是说,每个引脚都通过一个4.7K电阻连接到+ 5v)。

Atmega328配置为使用内部上拉电阻器,该电阻器可能适合短电缆走线。警告:对于多个I2C器件,或更长的电缆中,4.7K的上拉电阻(每线)推荐。

有关使用不同的上拉电阻的效果的一些屏幕截图,请参见此线程的下一部分。

当然,您还需要连接GND(接地)引脚以完成电路。

引脚应连接在一起(即,如果将Arduino Unos 连接在一起,则引脚4到引脚4,引脚5到引脚5)。这是因为上拉电阻使线路保持高电平,直到其中一个设备想要通过将线路拉低来使用它为止。换句话说,您不必交换引脚(就像您在串行通信中所做的那样,在串行通信中,您将Tx连接到Rx,反之亦然)。

还要注意,Atmega规定最大总线电容为400 pf,这样可以排除较长的电缆走线。

// Written by Nick Gammon
// February 2012

#include <Wire.h>

const byte MY_ADDRESS = 25;
const byte SLAVE_ADDRESS = 42;
const byte LED = 13;

void setup()
{
Wire.begin (MY_ADDRESS);
Wire.onReceive (receiveEvent);
pinMode (LED, OUTPUT);
} // end of setup

void loop()
{

for (int x = 2; x <= 7; x++)
{
Wire.beginTransmission (SLAVE_ADDRESS);
Wire.write (x);
Wire.endTransmission ();
delay (200);
} // end of for

} // end of loop

void receiveEvent (int howMany)
{
for (int i = 0; i < howMany; i++)
{
byte b = Wire.read ();
digitalWrite (LED, b);
} // end of for loop
} // end of receiveEvent


// Written by Nick Gammon
// February 2012

#include <Wire.h>

const byte MY_ADDRESS = 42;
const byte OTHER_ADDRESS = 25;

void setup ()
{
Wire.begin (MY_ADDRESS);
for (byte i = 2; i <= 7; i++)
pinMode (i, OUTPUT);
Wire.onReceive (receiveEvent);
} // end of setup

void loop()
{
int v = analogRead (0);
Wire.beginTransmission (OTHER_ADDRESS);
Wire.write (v < 512);
Wire.endTransmission ();
delay (20);
} // end of loop

// called by interrupt service routine when incoming data arrives
void receiveEvent (int howMany)
{
for (int i = 0; i < howMany; i++)
{
byte c = Wire.read ();
// toggle requested LED
if (digitalRead © == LOW)
digitalWrite (c, HIGH);
else
digitalWrite (c, LOW);
} // end of for loop
} // end of receiveEvent
原文地址:《I2C-两线外设接口-用于ArduinoNano, uno ,Mega2560》

I2C-两线外设接口-用于ArduinoNano, uno ,Mega2560相关推荐

  1. Transifex与GTK文档翻译, Linux镜像文件, 外设接口杂谈

    Transifex与GTK文档翻译 参与GTK+开发的一段小经历(2013.10) 最近忽然对GTK+产生了浓厚的兴趣,打算研究一下.学习一个新东西,最好的方法就是先阅读一下它的文档.应该说GTK的文 ...

  2. arduino教程-9. 串行外设接口(spi)

    文章目录 相关资料 1. spi针脚 Arduino 串行外设接口 串行外设接口简介 板的SPI引脚 SPI.h 库 SPI.h官方示例 SPI为主机 例子 SPI为从机 例子 相关资料 SPI li ...

  3. 计算机主机外设接口,计算机是如何自动识别外设~~凯凯最终成果!

    存储介质一般由半导体器构成,半导体存储器可分为三大类:随机存储器.只读存储器.特殊存储器.随机存取存储器(Random Access Memory)简称RAM,其特点是可以读写,存取任一单元所需的时间 ...

  4. 计算机主机和外设的接口是,外设接口

    外设指除了主机箱.显示屏.键盘以外的设备.接口是指MD产品输入输出的地方.那么外设接口就是连接外围设备的接口. 中文名 外设接口 外文名 Peripheral Interface 英文简写 PI定   ...

  5. 嵌入式硬件协议: SPI串行外设接口 Serial Peripheral Interface

    简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在ADC.LCD 等设备与M ...

  6. 谈谈SPI (Serial Peripheral Interface,串行外设接口)

    今天我们来一起聊聊谈谈SPI (Serial Peripheral Interface,串行外设接口): 什么是SPI SPI (Serial Peripheral Interface,串行外设接口) ...

  7. 微雪树莓派PICO笔记——7. SPI(串行外设接口)

    文章目录 SPI简介 硬件连接 通讯协议详解 RP2040 SPI 主要参数 RP2040 SPI 逻辑框图 machine.SPI类函数详解 例程地址 代码示例 代码实现 SPI简介 SPI全称为串 ...

  8. 同步和串行的区别_谈谈SPI (Serial Peripheral Interface,串行外设接口)

    什么是SPI SPI (Serial Peripheral Interface,串行外设接口)是Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线: 它以主从方式 ...

  9. I2C走线技巧、及上拉电阻、电源电压、总线电容三者间的函数关系

    目录 I2C总线PCB布线注意事项: 博客其他文档可以学习:https://www.cnblogs.com/zhiqiang_zhang/ I2C总线线路的走线方式 I2C器件与I2C总线的接线方式 ...

最新文章

  1. r语言remarkdown展示图_使用R语言包circlize可视化展示blast双序列比对结果
  2. linux mysql 5.0.45_RedHat糸列Mysql-5.0.45的安装
  3. python字典经典例题_python 字典(Dictionary)的一些内置函数和经典例题
  4. socket_循环发送消息
  5. 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
  6. CRM WebClient UI里product search上下文节点渲染逻辑
  7. dubbo的Extension源码分析
  8. 故障恢复:一次底层超融合故障导致的异常处理
  9. HALCON 21.11:深度学习笔记---Data(数据)(3)
  10. VMware与宿主机同一网段
  11. PreferenceScreen 偏好显示类 的使用
  12. linux可执行文件在window,教你如何在windows下编译linux生成windows的可执行程序
  13. 故障集——user is currently used(无法删除用户)
  14. 新版悟能口罩预约小程序源码V1.1.1
  15. 计算机视觉领域经典论文源码
  16. html滤镜菜鸟教程,如何成为风光摄影菜鸟基础拍摄篇
  17. SAP Portfolio Analyzer 中 索提诺比率(Sortino Ratio)
  18. 网络测试一般使用这四个命令就可以了
  19. (附源码)计算机毕业设计SSM租房管理信息系统
  20. 阿里云服务器重装操作系统流程免费不限次数更换

热门文章

  1. LruCache的深入解析
  2. 汇编语言学习笔记06——加减乘除和其他一些指令
  3. XShell个人免费下载使用
  4. logi option闪退_罗技鼠标你终于让我心态崩了(始末)
  5. 科班出身程序员和培训出来的程序员区别在哪?
  6. 无线节点的空中唤醒技术解析
  7. cxfreeze 打包exe
  8. 基于SpringBoot+vue的前后端分离学生成绩管理系统的设计与实现--毕业设计
  9. C语言读写BMP图片(附Github下载链接和视频讲解地址)
  10. google、bing ,baidu 等搜索引擎 查询参数