位置:51电子网 » 技术资料 » 测试测量

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

发布时间:2008/5/27 0:00:00 访问次数:829

        

    

    引言

    msp430单片机自从2000年问世以来,就以其功能完善、超低功耗、开发简便的特点得到了许多设计人员的青睐。msp430与传统的51单片机在结构上有很大的区别。其中之一就是:在msp430的外围接口电路中,没有提供像51那样控制外设读、写、地址锁存信号的硬件电路。与这种接口电路相适应,msp430更倾向使用i2c总线以及isp等基于串行接口的外围器件。另一方面,随着i2c技术的发展和成熟,其硬件结构简单、高速传输、器件丰富等特点使该类器件的应用越来越广泛。因此研究新型单片机msp430与i2c总线接口技术有着重要的意义。本文针对这一问题进行研究,分析研究了msp430与i2c总线接口的原理和方法,提出了高效的接口方法,介绍了优化的程序。

    1 msp430单片机i/o端口控制特点

    与8031单片机相比,msp430的i/o端口的功能要强大的多,其控制的方法也更为复杂。msp430的i/o端口可以实现双向的输入、输出;完成一些特殊功能如:驱动lcd、a/d转换、捕获比较等;实现i/o各种中断。msp430采用了传统的8位端口方式保证其兼容性,即每个i/o端口控制8个i/o引脚。为了实现对i/o端口每一个引脚的复杂控制,msp430中的每个i/o口都对应一组8位的控制寄存器(如图1)。寄存器中的每一位对应一个i/o引脚,实现对该引脚的独立控制。寄存器的功能和数目是由该i/o口所能完成的功能以及类型确定的。[2]

    图1为msp430的一个i/o端口的控制结构示意图。对于最基本的只能完成输入、输出功能的i/o端口其控制寄存器只有3个。其中,输入寄存器保存输入状态;输出寄存器保存输出的状态,方向寄存器控制对应引脚的输入、输出状态。本文中用来实现i2c总线接口的p6.6、p6.7都属于这类的端口。此外,有些i/o端口不但可以用作基本的输入输出,而且可以用作其他用途,比如可以作为lcd的驱动控制引脚。这类端口的控制功能寄存器实现引脚功能状态的切换。再者,有一类端口不但可以完成上述两种端口的功能,而且可以实现中断功能。该类端口拥有图1中所有的寄存器,中断触发的方式以及中断的屏蔽性都可以通过相应的寄存器控制。本文中使用的p2.0就属于该类端口,利用它来接收lm92发出的中断。

    

    

    

    通过上述的控制结构,msp430的i/o端口可以实现很丰富的功能。不仅如此,其中一些i/o口还可以与msp430中的特殊模块相结合完成更为复杂的工作。如与捕获比较模块相结合可以实现串行通信,与a/d模块结合实现a/d转换等。此外,msp430 i/o端口的电器特性也十分突出,几乎所有的i/o口都有20ma的驱动能力,对于一般的led、蜂鸣器可以直接驱动无需辅助电路。许多端口内部都集成了上拉电阻,可以方便与外围器件的接口。

    2 msp430与i2c总线器件接口

    通过上述的介绍了解了msp430中i/o口的一些控制特点。以下介绍如何利用这些特点实现i2c总线的接口。如图2所示,使用41系列单片机的p6.6产生i2c总线的时序同步信号;使用p6.7完成i2c总线的串行数据输入输出;利用p2.0接收lm92产生的中断信号。基于i2c总线规范,通过对lm92的a0、a1和at240的a0、a1、a2设定不同的器件地址,两个器件可以共用scl、sda。

    

    

    

    2.1 i/o端口引脚控制

    与8031不同,msp430没有位空间,也没有专门执行位操作的控制电路。那么对于一个指定的i/o端它是如何进行控制的呢?msp430中有关位操作的指令都是通过逻辑运算实现的。[3]例如:

    bisb #01000010b,p1out ; 将p1.6和p1.1置位xorb #01000010b,p1out ; 逻辑或运算

    该例中的置位指令bisb是用原操作数(01000010)与目的操作数(p1out)做逻辑或运算得到的。因此该命令与第二行的指令是等效的。虽然,这样的控制方法比起8031略显复杂,但它的控制能力有所增强。从例子中不难看出,这种方式可以同时控制多个端口位。

    2.2 简化i2c接口的方法

    众所周知,实现i2c总线协议主要是控制sda、scl使其产生协议所规定的各种时序。要控制p6.7、p6.6产生i2c总线要求的各种时序,就要频繁使用到输入、输出以及方向寄存器。而要减少代码的量,简化接口控制,最直接的方法就是减少有关寄存器操作次数。要实现这一想法需要软硬件结合,充分利用i/o口的特点以

        

    

    引言

    msp430单片机自从2000年问世以来,就以其功能完善、超低功耗、开发简便的特点得到了许多设计人员的青睐。msp430与传统的51单片机在结构上有很大的区别。其中之一就是:在msp430的外围接口电路中,没有提供像51那样控制外设读、写、地址锁存信号的硬件电路。与这种接口电路相适应,msp430更倾向使用i2c总线以及isp等基于串行接口的外围器件。另一方面,随着i2c技术的发展和成熟,其硬件结构简单、高速传输、器件丰富等特点使该类器件的应用越来越广泛。因此研究新型单片机msp430与i2c总线接口技术有着重要的意义。本文针对这一问题进行研究,分析研究了msp430与i2c总线接口的原理和方法,提出了高效的接口方法,介绍了优化的程序。

    1 msp430单片机i/o端口控制特点

    与8031单片机相比,msp430的i/o端口的功能要强大的多,其控制的方法也更为复杂。msp430的i/o端口可以实现双向的输入、输出;完成一些特殊功能如:驱动lcd、a/d转换、捕获比较等;实现i/o各种中断。msp430采用了传统的8位端口方式保证其兼容性,即每个i/o端口控制8个i/o引脚。为了实现对i/o端口每一个引脚的复杂控制,msp430中的每个i/o口都对应一组8位的控制寄存器(如图1)。寄存器中的每一位对应一个i/o引脚,实现对该引脚的独立控制。寄存器的功能和数目是由该i/o口所能完成的功能以及类型确定的。[2]

    图1为msp430的一个i/o端口的控制结构示意图。对于最基本的只能完成输入、输出功能的i/o端口其控制寄存器只有3个。其中,输入寄存器保存输入状态;输出寄存器保存输出的状态,方向寄存器控制对应引脚的输入、输出状态。本文中用来实现i2c总线接口的p6.6、p6.7都属于这类的端口。此外,有些i/o端口不但可以用作基本的输入输出,而且可以用作其他用途,比如可以作为lcd的驱动控制引脚。这类端口的控制功能寄存器实现引脚功能状态的切换。再者,有一类端口不但可以完成上述两种端口的功能,而且可以实现中断功能。该类端口拥有图1中所有的寄存器,中断触发的方式以及中断的屏蔽性都可以通过相应的寄存器控制。本文中使用的p2.0就属于该类端口,利用它来接收lm92发出的中断。

    

    

    

    通过上述的控制结构,msp430的i/o端口可以实现很丰富的功能。不仅如此,其中一些i/o口还可以与msp430中的特殊模块相结合完成更为复杂的工作。如与捕获比较模块相结合可以实现串行通信,与a/d模块结合实现a/d转换等。此外,msp430 i/o端口的电器特性也十分突出,几乎所有的i/o口都有20ma的驱动能力,对于一般的led、蜂鸣器可以直接驱动无需辅助电路。许多端口内部都集成了上拉电阻,可以方便与外围器件的接口。

    2 msp430与i2c总线器件接口

    通过上述的介绍了解了msp430中i/o口的一些控制特点。以下介绍如何利用这些特点实现i2c总线的接口。如图2所示,使用41系列单片机的p6.6产生i2c总线的时序同步信号;使用p6.7完成i2c总线的串行数据输入输出;利用p2.0接收lm92产生的中断信号。基于i2c总线规范,通过对lm92的a0、a1和at240的a0、a1、a2设定不同的器件地址,两个器件可以共用scl、sda。

    

    

    

    2.1 i/o端口引脚控制

    与8031不同,msp430没有位空间,也没有专门执行位操作的控制电路。那么对于一个指定的i/o端它是如何进行控制的呢?msp430中有关位操作的指令都是通过逻辑运算实现的。[3]例如:

    bisb #01000010b,p1out ; 将p1.6和p1.1置位xorb #01000010b,p1out ; 逻辑或运算

    该例中的置位指令bisb是用原操作数(01000010)与目的操作数(p1out)做逻辑或运算得到的。因此该命令与第二行的指令是等效的。虽然,这样的控制方法比起8031略显复杂,但它的控制能力有所增强。从例子中不难看出,这种方式可以同时控制多个端口位。

    2.2 简化i2c接口的方法

    众所周知,实现i2c总线协议主要是控制sda、scl使其产生协议所规定的各种时序。要控制p6.7、p6.6产生i2c总线要求的各种时序,就要频繁使用到输入、输出以及方向寄存器。而要减少代码的量,简化接口控制,最直接的方法就是减少有关寄存器操作次数。要实现这一想法需要软硬件结合,充分利用i/o口的特点以

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!