I2C-两线外设接口-用于ArduinoNano, uno ,Mega2560
这篇文章描述了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相关推荐
- Transifex与GTK文档翻译, Linux镜像文件, 外设接口杂谈
Transifex与GTK文档翻译 参与GTK+开发的一段小经历(2013.10) 最近忽然对GTK+产生了浓厚的兴趣,打算研究一下.学习一个新东西,最好的方法就是先阅读一下它的文档.应该说GTK的文 ...
- arduino教程-9. 串行外设接口(spi)
文章目录 相关资料 1. spi针脚 Arduino 串行外设接口 串行外设接口简介 板的SPI引脚 SPI.h 库 SPI.h官方示例 SPI为主机 例子 SPI为从机 例子 相关资料 SPI li ...
- 计算机主机外设接口,计算机是如何自动识别外设~~凯凯最终成果!
存储介质一般由半导体器构成,半导体存储器可分为三大类:随机存储器.只读存储器.特殊存储器.随机存取存储器(Random Access Memory)简称RAM,其特点是可以读写,存取任一单元所需的时间 ...
- 计算机主机和外设的接口是,外设接口
外设指除了主机箱.显示屏.键盘以外的设备.接口是指MD产品输入输出的地方.那么外设接口就是连接外围设备的接口. 中文名 外设接口 外文名 Peripheral Interface 英文简写 PI定 ...
- 嵌入式硬件协议: SPI串行外设接口 Serial Peripheral Interface
简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在ADC.LCD 等设备与M ...
- 谈谈SPI (Serial Peripheral Interface,串行外设接口)
今天我们来一起聊聊谈谈SPI (Serial Peripheral Interface,串行外设接口): 什么是SPI SPI (Serial Peripheral Interface,串行外设接口) ...
- 微雪树莓派PICO笔记——7. SPI(串行外设接口)
文章目录 SPI简介 硬件连接 通讯协议详解 RP2040 SPI 主要参数 RP2040 SPI 逻辑框图 machine.SPI类函数详解 例程地址 代码示例 代码实现 SPI简介 SPI全称为串 ...
- 同步和串行的区别_谈谈SPI (Serial Peripheral Interface,串行外设接口)
什么是SPI SPI (Serial Peripheral Interface,串行外设接口)是Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线: 它以主从方式 ...
- I2C走线技巧、及上拉电阻、电源电压、总线电容三者间的函数关系
目录 I2C总线PCB布线注意事项: 博客其他文档可以学习:https://www.cnblogs.com/zhiqiang_zhang/ I2C总线线路的走线方式 I2C器件与I2C总线的接线方式 ...
最新文章
- r语言remarkdown展示图_使用R语言包circlize可视化展示blast双序列比对结果
- linux mysql 5.0.45_RedHat糸列Mysql-5.0.45的安装
- python字典经典例题_python 字典(Dictionary)的一些内置函数和经典例题
- socket_循环发送消息
- 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
- CRM WebClient UI里product search上下文节点渲染逻辑
- dubbo的Extension源码分析
- 故障恢复:一次底层超融合故障导致的异常处理
- HALCON 21.11:深度学习笔记---Data(数据)(3)
- VMware与宿主机同一网段
- PreferenceScreen 偏好显示类 的使用
- linux可执行文件在window,教你如何在windows下编译linux生成windows的可执行程序
- 故障集——user is currently used(无法删除用户)
- 新版悟能口罩预约小程序源码V1.1.1
- 计算机视觉领域经典论文源码
- html滤镜菜鸟教程,如何成为风光摄影菜鸟基础拍摄篇
- SAP Portfolio Analyzer 中 索提诺比率(Sortino Ratio)
- 网络测试一般使用这四个命令就可以了
- (附源码)计算机毕业设计SSM租房管理信息系统
- 阿里云服务器重装操作系统流程免费不限次数更换