基于I2C总线的MSP430应用系统设计

发布者:太白山人最新更新时间:2014-11-21 来源: 21ic关键字:I2C总线  MSP430 手机看文章 扫描二维码
随时随地手机看文章

       引言      

       串行护展总线技术是新一代单片机技术发展的一个显著特点。其中PHILIPS公司推出的I2C总线最为著名,它包括一个两端接口,通过一个带有缓冲区的接口,数据可以被I2C发送或接收,控制和状态信息则通过一套内存映射寄存器来传送。与并行扩展总线相比,串行扩展总线有突出的优点:电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等。本文是把I2C总线应用到MSP430单片机温度控制系统中的一个典型实例。      

       I2C总线是用2根双向I/O信号线(串行时钟线SCL和串行数据线SDA)把多种器件连接起来,并实现器件之间的串行通讯。      

       MSP430是TI公司一种具有超低功耗的功能强大的16位单片机,MSP430F169是该系列中的一种型号。它内部集成2个16位定时器,1个高速12位A/D转换器,12位或8位的双重D/A转换器,2个通用同步/异步通讯接口和1个I2C模块。我们就是利用其I2C模块来对MSP430F169单片机进行扩展。 

       系统硬件设计      

       该系统实现对曲轴的热处理进行温度控制。曲轴的热处理工艺为:曲轴放入淬火加热炉以350℃~400℃/h加热,到910℃~930℃保温1.5h,淬火冷却至室温,进炉550℃〜600℃回火2.5h。因此,系统需要同时对淬火炉和回火炉进行温度控制。在此系统中,我们需要分别设计键盘模块和LED显示模块,通过键盘实现温度、PID参数、时间周期等参数的人工输入设定,通过LED分别实时显示淬火炉和回火炉的温度。在以往的单片机应用系统中,键盘接口和LED显示接口一般是通过并行总线扩展的,其特点是信息传送速度快,但占用的口线多,电路复杂。有了I2C BUS后,可通过I2C BUS进行系统扩展,这时只要用SCL和SDA两根信号线就可将单片机与外围器件连接起来,使占用的信号线少,电路大大简化,系统电路结构如图1所示。

系统硬件电路图

图1  系统硬件电路图

       图中键盘接口是通过PCF8574扩展的,PCF8574是8位I/O扩展器,具有8位准双向口和I2C总线接口,每位都可单独设为输入或输出,功耗低,输出有锁存,驱动能力强,还具有中断请求功能。本方案中,该芯片作为4×4矩阵式键盘与单片机接口,初始化后,P0-P3为输出低电平,P4-P7为输入,平时单片机执行其它程序,当有任一键按下时,该芯片在INT端产生中断请求信号,CPU响应中断进入中断服务程序。

       在该芯片中,A2-A0为地址引脚,由引脚电平确定,在该系统中A0接高电平,A1、A2接地;P0-P7为准双向口;INT为中断请求输出,低电平有效,需要注意的是该端应通过上拉电阻上拉。当单片机主节点对PCF8574进行一个字节的写操作时,即实现了I/O口的数据输出。I2C总线发送到PCF8574中的串行数据,在应答位后出现在I/O端口上,I2C总线不断送数,I/O上的数据不断更迭。当单片机主节点对PCF8574读操作时,即可实现I/O端口数据的输入,读入的数据存放在接收缓冲区MRD中。当PCF8574输入端电平状态改变时,中断请求输出端INT出现低电平,中断输出有效,在对其读写操作后,中断请求复位。I2C总线对PCF8574 I/O口的输入操作是一个字节的读出操作,该系统中PCF8574的SLAW/SLAR为42H/43H。      

       图中SAA1064为4位带小数点的七段LED显示器驱动电路,该器件可静态驱动2位LED、动态驱动4位LED,只有一个地址引脚ADR,但可选择4种电平状态。SAA1064中有动态驱动控制电路,不须外部动态驱动管理。在该芯片中,ADR为地址引脚端,4个模拟电平状态对应4个引脚地址;CEXT为时钟振荡器外接电容,典型值为2.7nF;P1-P16为段驱动输出端口,口锁存器置1时,端口状态为低电平;MX1、MX2为动态显示方式下,公共段驱动输出端,外部应用驱动晶体

 

管。SAA1064的器件地址是0111,地址引脚只有一个,即ADR,引脚地址A2、A1、A0采取ADR模拟电平的比较编址,ADR引脚电平为0、3/8VDD、5/8VDD 、VDD时,相应引脚地址A2、A1、A0为000、001、010、011。

       在该系统中,两片SAA1064的ADR一个接地,一个接VDD,按图中接法,左边SAA1064的SLAW/SLAR为70H / 71H,右边SAA1064的SLAW/SLAR为76H/77H。应用动态驱动方式在两片SAA1064上分别接3个LED,都采用P1-P8口动态驱动两位LED显示,P9-P16口单独驱动一位LED显示。SAA1064中有5个寄存器单元,分别为1个控制寄存器和4个显示寄存器,地址单元00H的装载内容为控制命令COM,地址单元01H、02H、03H、04H的装载内容分别为显示段码1、显示段码2、显示段码3、显示段码4,在本系统中,只用到前3个显示段码。单片机可从芯片中读出状态字节,该状态字节只用到最高位PR。PR=1表示从上次读状态后出现过掉电和加电,读状态字节后,PR清“0”。单片机也可向芯片写入地址字节、指令字节、控制字节和数据字节,指令字节(00000SC SB SA)中的SC、SB、SA规定指令字节后的数据字节从哪个单元开始写入,以后地址自动增量。  

       系统软件设计      

       MSP430F169中的I2C控制器是通用串行同步/异步USART外围模块中的一部分,且只在USART0中具有I2C模式,其个别位的定义与SPI或UART模式不同。U0CTL寄存器的默认值是UART模式,寄存器包含下面这些位:必须设置SYNC位才能选择SPI或I2C模式,当SWRST=1时,设置SYNC位选择SPI模式,当SYNC=1设置I2C位选择I2C模式,对USART0来说,SYNC位和I2C位可以在一条指令中同时设置使其运行在I2C模式。 

主发送程序流程图图

图2  主发送程序流程图图

主接收程序流程图

图3  主接收程序流程图

       MSP430F169内部的I2C模块可以运行在主发送、主接收、从发送或从接收方式,本应用系统为单主系统,所以单片机只运行在主发送和主接收方式。MSP430F169单片机中用于管理I2C总线的寄存器有:中断使能寄存器I2CIE,中断标志寄存器I2CIFG,数据量寄存器I2CNDAT,通用串行同步/异步模块寄存器U0CTL,发送控制寄存器I2CTCTL,数据控制寄存器I2CDCTL,分频计数寄存器I2CPSC,时钟高电平寄存器I2CSCL

 

H,时钟低电平寄存器I2CSCLL,数据寄存器I2CDR,主地址寄存器I2COA,从地址寄存器I2CSA,中断向量寄存器I2CIV。在主运行模式中,发送和接收操作主要由I2CRM、I2CSTT、I2CSTP三个位来控制,这三个位都是发送控制寄存器I2CTCTL中的位,其中I2CRM是循环重复模式控制位,其为0表示由I2CNDAT定义发送的字节数,其为1表示发送的字节数由软件控制,I2CNDAT不用。

       I2CSTT是启动发送控制位,其设置为1用来启动数据发送,一旦数据传送开始,这个位自动清零。I2CSTP是停止发送控制位,这个位置1表示停止数据发送,一旦数据发送停止,该位自动清零。在主发送模式中,一旦从地址字节和读写方向位发送之后,通过设置I2CTRX=0即可进入主接收模式。主发送程序流程图如图2所示,主接收程序流程图如图3所示。 

       结语      

       由于把I2C总线技术引入到系统设计中,使该系统硬件电路变得非常简单,同时利用新型16位微处理器MSP430F169构成整个控制系统的核心,因其自带I2C接口,使系统的软件编程也比较简单,因此不失为一种良好的系统设计方案。 


参考文献: 
1.    MSP430X1XX Family user,s Guide.Texas Instruments Incorporation, 2003 

关键字:I2C总线  MSP430 引用地址:基于I2C总线的MSP430应用系统设计

上一篇:基于MCU的电容感应式触摸按键方案
下一篇:基于MSP430和CPLD的冷媒中心控制系统的研制

推荐阅读最新更新时间:2024-03-16 13:47

基于MSP430FE42x的防窃电电能表及其应用分析
当前,电子式电能表的防窃电技术在电能表行业中的地位越来越重要,不同国家、地区的电能表市场都在不同程度上要求电能表的防窃电计量。人们所意识到的窃电现象和防窃电技术的类型在不断增多,而且每年都会针对新的窃电行为,研究出相应的防窃电技术。 在传统的电子式电能表设计中,由于以下几点原因,导致它们不能较完善的检测或处理窃电行为:仅使用进线端的电压和火线的进出端所流经的电流作为电能计量的依据;绝大多数没有使用很可靠的铅封;一些窃电方式很容易操作,但是很难检测。 MSP430FE42x系列单片机是美国德州仪器公司新推出的单相防窃电多功能电能表专用芯片,它是德州仪器MSP430系列产品的成员,是一款超低功耗的16位单片机。MSP430FE42
[应用]
MSP430学习笔记-USART
Note: Initializing or Re-Configuring the USART Module The required USART initialization/re-configuration process is: 1) Set SWRST (BIS.B #SWRST,&UxCTL) 2) Initialize all USART registers with SWRST = 1 (including UxCTL) 3) Enable USART module via the MEx SFRs (URXEx and/or UTXEx) 4) Clear SWRST via software (BIC.B #SWR
[单片机]
MSP430F5529 (六)定时器Timer_A-1
MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器)、Timer1_A(3个)、Timer2_A(3个)、Timer0_B(7个)。 这一章,我们讲定时器Timer0_A.(A类的都一样) 注意:下面所提到的所有寄存器,在TA后面插入0或1或2就分别表示Timer0_A、Timer1_A、Timer2_A(我这里省略了数字) 定时器很重要啊! 6.1 简介一下 定时器A是一个复合了捕获/比较寄存器的十六位的定时(加减)计数器。定时器A支持多重捕获/比较,PWM输
[单片机]
<font color='red'>MSP430</font>F5529 (六)定时器Timer_A-1
如何提高MSP430 C语言代码的执行效率
关于代码效率 ——————— MSP430系列的程序设计准则,有利于提高代码效率。应该指出,这些准则基本上是基于MSP430系列的硬件结构特点而提出的。 1.位域类型的执行时很慢的,所以应当在仅仅为了节省数据存储空间时才使用位域方式。如果用户必须使用位域存储,可以用char或unsigned int的位屏蔽操作来代替位域操作。 2.在模块之外不使用的变量应当声明为static,这样在编译时有可能使这些变量分配在寄存器中暂存,从而提高了代码效率。 3.尽可能使用unsigned数据类型。许多情况下,对unsigned数据类型的操作,比对signed数据类型的操作效率更高,尤其对于除法和求模运算更是如此。 4.程序设计
[单片机]
基于MSP430F169的多路电阻测量系统设计
0引言 在实际工作中,对于多路电阻进行测量,一般采用直接测量法人工操作进行,虽然这种方法很成熟,但所用的配套设备较多,测量数据手工纪录、人工计算,操作繁琐、效率较低,事后的数据处理及出具测量报告既费时又费力,易出现人为因素造成的错判、漏判等,难以保证测量质量,影响了科研、实验生产任务的顺利进行。 针对这些问题本文设计了一种基于MSP430单片机的电阻多路测量系统,系统采用2个MSP430F169单片机,利用该型号单片机自身集成的I2C通信模块实现双单片机系统。使用双机结构的增强了系统的抗干扰能力和可靠性,提高了测量的精度的和稳定性。该多路电阻测量系统具有结构简单、成本低廉、功耗低等特点,其测量范围为10μΩ~3 kΩ、测量精度
[单片机]
基于<font color='red'>MSP430</font>F169的多路电阻测量系统设计
MSP430学习之时钟
时钟初始化和GPIO 概述: 本实验的目的是了解用于执行对MSP430 Value Line设备的初始化过程的步骤。在这个练习中,您将编写初始化代码,并运行该设备使用各种时钟资源。 1、写初始化代码 2、运行CPU的MCLK的来源方式:VLO 、32768晶体、DCO 3、主体程序部分 4、观察LED闪光灯速度 MSP430时钟: 1、在MSP430单片机中一共有三个或四个时钟源: (1)LFXT1CLK,为低速/高速晶振源,通常接32.768kHz,也可以接(400kHz~16Mhz); (2)XT2CLK,可选高频振荡器,外接标准高速晶振,通常是接8Mhz,也可以接(400kHz~16Mhz); (3
[单片机]
MSP430晶振配置详解
MSP430(F5529)相比MSP430(F149)来讲,功能更加强大。 UCS简介 MSP430F5XX/MSP430F6XX系列器件的UCS包含有五种时钟源,依次是:XT1CLK、VLOCLK、REFOCLK、DCOCLK和XT2CLK。这五种时钟的详细介绍请参考该系列芯片的指导手册,其中XT1CLK、VLOCLK、REFOCLK和XT2CLK跟MSP430F1XX系列没有太大区别,学习配置起来也比较简单。 UCS上电默认状态 PUC后,UCS模块的默认状态如下: 在CODE上查看代码片派生到我的代码片 (1)XT1处于LF模式作为XT1CLK时钟源。ACLK选通为XT1CLK。 (2)MCLK选通为DCO
[单片机]
<font color='red'>MSP430</font>晶振配置详解
MSP430系列单片机-Timer_A实现PWM
概念 PWM信号是一种具有固定周期、不定占空比的数字信号。 如果Timer_A的计数器工作在增计数模式,输出采用输出模式7(复位/置位模式) 利用寄存器TAxCCR0控制PWM波形的周期,用其他某个寄存器TAxCCRx来控制占空比(t高电平/ T周期) 题目 设ACLK = TACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCOCLK = 32 * ACLK = 1.048576MHz,利用Timer_A输出周期 512/32768 = 15.625ms,占空比分别为75%和25%的PWM矩波形。 代码如下: #include msp430x44x.h void main()
[单片机]
<font color='red'>MSP430</font>系列单片机-Timer_A实现PWM
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved