Arduino - 内部集成电路.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Arduino - 内部集成电路.pdf

Arduino - 内部集成电路 内部集成电路(I2C)是⽤于微控制器和新⼀代专⽤集成电路之间的串⾏数据交换的系 统。 当 们之间的距离很短(接收器和发射器通常在同⼀个印刷电路板上)时使⽤。 通 过两根导线建⽴连接。 ⼀个⽤于数据传输,另⼀个⽤于同步(时钟信号) 。 如下图所⽰,⼀个设备始终是主设备。 在通信开始之前执⾏⼀个从芯⽚的寻址。 以这种⽅式,⼀个微控制器可以与112个不同的设备通信。 波特率通常为100 Kb / sec(标准模式)或10 Kb / sec(慢波特率模式) 。 最近出现了波特率为3.4 Mb / s的系统。 通过I2C总线通信的器件之间的距离限制为⼏⽶。 板的I2C引脚 I2C总线由两个信号SCL和SDA组成。 SCL是时钟信号,SDA是数据信号。 当前总线 主机总是产⽣时钟信号。 ⼀些从设备可能迫使时钟低时延迟主设备发送更多数据(或 者在主设备尝试将时钟发出之前需要更多时间来准备数据) 。 这被称为“时钟伸展。 以下是不同Arduino板卡的引脚 - no , Pro Mini A4 (SDA), A5 (SCL) Mega, Due 20 (SDA), 2 1 (SCL) Leonardo , Yun 2 (SDA), 3 (SCL) Arduino I2C 我们有两种模式 - 主代码和从机代码 - 使⽤I2C连接两个Arduino板。 他们是 - Master Transmitter / Slave Receiver 主发射器/从接收器 Master Receiver / Slave Transmitter 主接收器/从属发射器 主发射器/从接收器 让我们现在看看什么是主发送器和从接收器。 主发射机 以下函数⽤于初始化Wire库,并将I2C总线作为主器件或从器件加⼊。 这通常只调⽤ ⼀次。 Wire.begin(address) - 在我们的例⼦中,地址是7位从地址,因为未指定主机, 将作为主机加⼊总线。 Wire.beginTransmission(address) - 开始向给定地址的I2C从器件发送数据。 Wire.write(value) - ⽤于从主设备传输到从设备的队列字节(在 beginTransmission()和endTransmission()之间的调⽤) 。 Wire.endTransmission() - 结束由beginTransmission()开始的对从设备的传输, 并传输由wire .write()排队的字节。 ⽰例 #include Wire.h //include wire library void setup() //this will run only once { Wire.begin(); // join i c bus as master } short age = 0; void loop() { Wire.beginTransmission( ); // transmit to device # Wire.write(age is = ); Wire.write(age); // sends one byte Wire.endTransmission(); // stop transmitting delay(1000); } 从接收器 使⽤以下功能 - Wire.begin(address) - 地址是7位从机地址。 Wire.onReceive(接收数据处理程序) - 当从设备从主设备接收数据时调⽤的函 数。 Wire.available() - 返回可⽤于使⽤Wire .read()检索的字节数,应在 Wire .onReceive()处理程序中调⽤。 ⽰例 #include Wire.h //include wire library void setup() { //this will run only once Wire.begin( ); // join i c bus with address # Wire.onReceive(receiveEvent); // call receiveEvent when the mas

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档