《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于I2C总线多步进电机实验平台的开发
基于I2C总线多步进电机实验平台的开发
2015年微型机与应用第12期
晏 亮,潘贞汝,常 华
(中国农业大学 信息与电气工程学院,北京 100083)
摘要: 描述了基于I2C总线多步进电机平台的设计,介绍了I2C总线通信协议的特点,给出了I2C总线在1片主MSP430G2553和8片从MSP430G2553之间数据传输程序流程图和整个平台的硬件结构框架,完成了基于I2C总线的单主多从通信,最终实现了对多路步进电机的控制。
Abstract:
Key words :

  摘  要: 描述了基于I2C总线步进电机平台的设计,介绍了I2C总线通信协议的特点,给出了I2C总线在1片主MSP430G2553和8片从MSP430G2553之间数据传输程序流程图和整个平台的硬件结构框架,完成了基于I2C总线的单主多从通信,最终实现了对多路步进电机的控制。

  关键词: I2C总线;MSP430G2553;单主多从;步进电机

0 引言

  I2C总线是两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。本文介绍一种利用I2C总线协议,通过单主多从模式,利用1段音频信号控制8个单片机实现不同方向、速率的转动。

1 I2C总线技术

  1.1 I2C总线接口

  本文所用的芯片主要为TI公司的MSP430G2553芯片,其中的I2C模式是通过USCI_Bx模块来进行配置的,本文主要应用了USCI_B0模块[1]。在I2C模式中,USCI通过两线式I2C串行总线提供了MSP430与I2C兼容器件的连接。外部器件串行依附在I2C总线上,通过2-线I2C接口为USCI模块发送数据或从USCI接收数据。如图1所示,I2C总线由时钟线SCL和数据线SDA构成,在时钟线SCL保持高电平期间,数据线SDA上的电平被拉低(即负跳变),为I2C的开始信号[2]。在时钟线SCL保持高电平期间,数据线SDA被释放,是I2C的终止信号。

  如图2所示,进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,只有在SCL为低电平期间,才允许SDA上的电平改变状态。

  关于传输速度,I2C总线在标准模式最高为100 kb/s,高速模式最高为400 kb/s。

  1.2 I2C总线数据传输

  I2C总线传输数据必须遵循规定的数据传输格式[2],主机给每个数据传输位产生一个时钟脉冲,I2C模式对数据位进行操作。在主机设置好I2C为发送模式后,USCI模块会检测总线是否可用,产生START条件。本文中将音频信号依据频率分为8段,并且每段对应不同的从机地址,如此便可依据不同频率将音频信号发送给不同的从机。I2C模式支持7位和10位寻址模式[3],本文运用了7位寻址模式。如图3所示,在7位寻址模式中,第一个字节是7位从机地址和R/W位。接收器在每个字节结束后发送ACK位。

003.jpg

  所有挂到I2C总线的外围器件各自都有一个唯一确定的地址[2]。任何时刻总线上只有一个主控器件对总线实行控制权,分时实现点对点的数据传送。I2C总线上所有外围器件都有规范的器件地址,器件地址由7位组成,它和1位方向位(R/W)构成了I2C总线器件的寻址字节SLA,格式如图4所示。

004.jpg

  其中高4位(A6、A5、A4、A3)是I2C总线外围接口器件固有地址编码,器件出厂时已固化好。A0~A2是对从机分配的不同地址,本文中MSP430G2553的高4位为0100[1],一共可以挂接8个单片机。而最低位R/W为数据方向位,当R/W为0时,主机发送数据,当R/W为1时,主机接收数据。本文中主机只用于发送数据,故R/W位一直为0。本文中的8个从机地址分别为:40H、42H、44H、46H、48H、4AH、4CH和4EH。

  故总线上的数据传输过程[4]是:(1)主控制器发送开始信号S;(2)主控制器发送芯片寻址字节;(3)从器件发出应答信号ACK;(4)主控制器发送数据寻址字节;(5)发送者发送数据,接受者接收数据;(6)主控制器发送停止信号P终止数据传输。其流程图如图5所示。

005.jpg

2 I2C的系统硬件结构

006.jpg

  图6是本文所研究平台的整体框图,在此系统中8个从机对应8种不同音符频段,分别控制8个电机的转速。系统的主要功能是通过PC由MATLAB对给定音频进行编码[5],产生单片机可用的曲谱编码,然后通过串口将所产生的编码发送给主MSP430G2553,主机在寻址时先判断编码范围,然后通过I2C总线寻址相应的从机,并向被寻址的MSP430G2553发送相应的音频编码。从机将所接收到的音频编码作为定时器的定时周期,利用定时器产生相应的脉冲信号,从而驱动电机转动。

007.jpg

  为实现单主多从单片机MSP430G2553之间的通信,将主机I2C总线上的SCL(P1.6)和SDA(P1.7)分别与从机的SCL(P1.6)和SDA(P1.7)相连接,并且在VCC与SCL、SDA两个信号之间分别接上10 k?赘的上拉电阻,如图7所示。由此从机的P1.6就成了时钟接收端,P1.7为数据接收端。通过编程将主机发送的数据送入Buff,从机通过读Buff中的数据将其实时转换为频率改变的方波,并通过P1.5口将其发送给电机驱动器,从而实现控制步进电机的功能。

3 I2C单主多从通信

  首先将USCI模块初始化,使主机/从机可以进行接收/发送操作,初始化过程如下[6]:将USCI中软件复位位UCSWRST置位来初始化所有的USCI寄存器,配置P1.6和P1.7分别为I2C的SCL端口和SDA端口,通过UCMST和UCMODEx选择I2C模式和主机或从机模式。然后通过置位UCSEEL_2来选择主机时钟为SMCLK  (1 MHz),并将主时钟12分频为100 kHz作为主机中的SCL时钟[1]。上述模块初始化完成后,清除UCSWRST,释放USCI,使能发送中断。

  对于主发送模块,初始化之后需要把从地址设置为7 bit,再将目标从地址写入寄存器UCB0I2CSA中。本系统将所给的音频信号按照频率分为8段,每段对应不同的从机地址,使主机通过判断与不同的从机地址相匹配。初始化完成后通过置位UCRT和UCTXSTT,使主机工作在发送模式并产生一个起始条件。当地址读入UCB0I2CSA中后,硬件会自动识别并找到与之相对应的从机,一旦地址匹配则UCSTTIFG置位,主机进入LPM0模式并且触发中断,将要发送的数据写入UCB0TXBUF中,当从机地址被应答时UCTXSTT位即刻清零。本文中将音频信号装入数组中,当所有数据发送完毕后产生一个STOP条件,并将UCB0TXIFG清零同时退出低功耗模式。图8为主机发送模式流程图。

008.jpg

  对于从接收模块,由于要对主机中读取的数据进行处理,本文中选用定时器A将其数据转换为对应的脉冲波,从而达到控制电机的目的。因此需要先将定时器A初始化[7],为了不影响主机中SMCLK,本文使定时器A工作在ACLK时钟下。随后将其USCI模块设置为I2C接收模式,并且无需设置USCI时钟。一旦从设备中UCB0RXBUF接收到的新数据被读走,从设备即发送一个应答信号给主设备,然后开始下一个数据的接收。定时器A将接收到的数据通过定时器中断产生频率改变的方波,并通过P1.5口输出,从而控制步进电机依据音频信号的不同频率来变速转动。图9为从机接收模式流程图。

009.jpg

4 结论

  本文介绍的I2C总线单主多从通信系统占用I/O资源少,功耗低,传输速率高,能够以较高性能控制步进电机随音乐转动。从实验结果来看,主从单片机可以通过该总线系统进行非常可靠的通信,进而可在各个领域取得广泛应用。

参考文献

  [1] MSP430x2xx Users′ guide[Z].2004.

  [2] 沈建华,杨艳琴,翟骁曙.MSP430系列16位超低功耗单片机原理与应用[M].北京:清华大学出版社,2004.

  [3] 贾朱红,张晓冬.基于I2C总线的单主多从单片机之间的通信[J].微计算机信息,2009(8):101-102.

  [4] 邓忠华,李霞,陈浩.I2C总线技术在单片机串行扩展中的应用[J].武汉理工大学学报(交通科学与工程版),2005(2):227-229,247.

  [5] 孙金中,冯炳军.基于I2C总线控制的音频处理电路设计[J].现代电子技术,2009(18):85-88.

  [6] 吴小平,李莉,何鑫,等.I2C总线及其数据通信编程[J].微计算机信息,2000(2):11-13.

  [7] 陈光建,贾金玲.基于单片机的I2C总线系统设计[J].仪器仪表学报,2006(S3):2465-2466,2472.


此内容为AET网站原创,未经授权禁止转载。