世纪电源网社区logo
社区
Datasheet
标题
返回顶部
原创

MSP430 Launchpad 的 I2C 通信

[复制链接]
查看: 202 |回复: 1
1
yinxiangxv
  • 积分:389
  • |
  • 主题:5
  • |
  • 帖子:15
积分:389
LV4
初级工程师
  • 2023-2-3 17:02:28
与 MSP430 Launchpad 的 I2C 通信

在庞大的嵌入式应用系统中,没有哪个微控制器可以独自完成所有活动。在某些时候它必须与其他设备通信以共享信息,有许多不同类型的通信协议可以共享这些信息,但最常用的是 USART、IIC、SPI 和 CAN。每种通信协议都有自己的优点和缺点。现在让我们关注 I2C 部分,因为这是我们将在本教程中学习的内容。

什么是 I2C 通信协议?
IIC 一词代表“内部集成电路”。它通常表示为 I2C 或 I 平方 C,甚至在某些地方表示为 2 线接口协议 (TWI),但它们的意思都是一样的。 I2C 是一种同步通信协议,意味着共享信息的两个设备必须共享一个公共时钟信号。它只有两条线来共享信息,其中一条用于时钟信号,另一条用于发送和接收数据。


I2C 通信如何工作?
I2C 通信最先由 Phillips 推出。如前所述,它有两根电线,这两根电线将连接两个设备。这里一个设备称为主设备,另一个设备称为从设备。通信应该并且将始终发生在两个主站和从站之间。 I2C 通信的优点是一个主机可以连接多个从机。


完整的通信通过这两条线进行,即串行时钟 (SCL) 和串行数据 (SDA)。
串行时钟 (SCL):与从机共享主机生成的时钟信号
串行数据 (SDA):在主机和从机之间来回发送数据。
在任何给定时间,只有主机才能启动通信。由于总线上有多个从机,主机必须使用不同的地址来引用每个从机。当被寻址时,只有具有该特定地址的从机将回复信息,而其他人则保持退出。这样我们就可以使用同一条总线与多个设备进行通信。
I2C 的电压电平没有预定义。 I2C通信是灵活的,即5v电压供电的设备可以用5v进行I2C通信,3.3v的设备可以用3v进行I2C通信。但是,如果两个运行在不同电压下的设备需要使用 I2C 进行通信怎么办? 5V I2C 总线不能连接 3.3V 设备。在这种情况下,电压转换器用于匹配两条 I2C 总线之间的电压电平。
有一些条件可以构成交易。传输初始化从 SDA 的下降沿开始,这在下图中被定义为“开始”条件,其中主机将 SCL 保持为高电平,同时将 SDA 设置为低电平。

MSP430 中的 I2C:控制 AD5171 数字电位器
Energia IDE 是对我们的 MSP430 进行编程的最简单的软件之一。它与 Arduino IDE 相同。您可以在此处了解有关使用 Energia IDE 开始使用 MSP430 的更多信息。
因此,要在 Energia IDE 中使用 I2C,我们必须只包含 wire.h 头文件。引脚声明(SDA 和 SCL)在 wire 库中,所以我们不需要在设置函数中声明。
可以在 IDE 的示例菜单中找到示例示例。下面解释了其中一个示例:
此示例说明如何控制通过 I2C 同步串行协议进行通信的 Analog Devices AD5171 数字电位器。使用 MSP 的 I2C 线库,数字电位器将逐步通过 64 级电阻,使 LED 变暗。
首先,我们将包含负责 i2c 通信的库,即 wire 库

#include <Wire.h>
void setup() {  Wire.begin();   }
byte val = 0;
void loop() {Wire.beginTransmission(44); // transmit to device #44 (0x2c)
Wire.write(byte(0x00));            // sends instruction byte Wire.write(val);             // sends potentiometer value byte
Wire.endTransmission();     // stop transmitting  val++;        // increment value  if (val == 64) {       // if reached 64th position (max)    val = 0;    // start over from lowest value  }  delay(500);}


z443233785
  • 积分:5343
  • |
  • 主题:117
  • |
  • 帖子:1003
积分:5343
LV8
副总工程师
最新回复
  • 2023-2-3 18:46:02
  • 倒数1
 
为啥I2C 通信 都上拉了两个电阻,430需要给它供电吗
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号