微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430与I2C总线接口技术的研究

MSP430与I2C总线接口技术的研究

时间:06-14 来源:21IC 点击:

电阻可以将该点的电平拉升为VCC,从而确保总线空闲时有稳定的高电平。

延续以上的思路可以发现,方向寄存器相应位为输入时,就等于给I2C从器件发送了逻辑'1'。那么如何发送逻辑'0'呢?将对应的方向控制位设为输出,然后输出寄存器相应位置为'0'就可以实现。再进一步,如果将输出寄存器对应为设为'0',只控制方向寄存器的变化就可以发送两种逻辑电平。这样,在发送数据时只需要控制方向寄存器。对于SDA需要频繁切换输入输出状态的特点,本方法可以减少15%左右的代码量,并使程序更清晰。这样就为第二个问题找到了很好的解决方法。

3 I2C总线控制时序的实现

以上讲述了I2C总线最基本的操作时序。I2C总线中的各种操作都是由这些基本操作组合完成的。由于I2C总线器件的类型、功能、结构不尽相同,因此每一种器件具体控制时序有所区别。图4是AT2402读取指定字节数据控制时序。从图中可以看出一个读取操作中要使用到起始、发送字节、处理回应、接收字节、停止这些基本操作。附录中的代码就实现了这个时序。对于AT2402还有其他控制的时序,如字节写时序、数据页读时序、地址读取时序等等[1]。附录中代码对基本操作分别编写为子程序。对于不同的功能时序,可以通过子程序的调用来实现。

LM92是一种高精度的温度传感器,它也采用I2C总线方式控制。图5是该器件读取温度数据的时序。因为它的功能和结构与AT2402有很大的区别,所以二者控制时序不尽相同。如图4和图5,虽然都是实现读取操作,但是二者时序差别很大,LM92的控制时序明显要复杂的多。不过仔细分析可以看出这些时序也都是由一些基本操作组合实现的。这样就可以在上述方法的基础上完善LM92所需要的基本操作子程序,进而根据时序需要安排子程序实现对LM92的各种控制。

综上所述,要实现I2C总线的控制时序,需要仔细分析各种器件的时序要求及特点,构建所有的基本操作,并按时序要求合理安排基本操作。

4结束语

应用上述的设计方法和电路,实现了MSP430与I2C总线器件的接口,很好的控制AT2402和LM92,达到了预期的目标。实践证明该方法对实现I2C总线器件控制非常有效,而且使用该方法编制的程序代码量小,执行效率高。该方法为MSP430与I2C总线接口提供了一种可行的方案。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top