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位。
所有挂到I2C总线的外围器件各自都有一个唯一确定的地址[2]。任何时候总线上只有一个主控器件对总线实施掌握权,分时实现点对点的数据传送。I2C总线上所有外围器件都有规范的器件地址,器件地址由7位组成,它和1位方向位(R/W)构成了I2C总线器件的寻址字节SLA,格式如图4所示。
个中高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所示。
2 I2C的系统硬件构造
图6是本文所研究平台的整体框图,在此系统中8个从机对应8种不同音符频段,分别掌握8个电机的转速。系统的紧张功能是通过PC由MATLAB对给定音频进行编码[5],产生单片机可用的曲谱编码,然后通过串口将所产生的编码发送给主MSP430G2553,主机在寻址时先判断编码范围,然后通过I2C总线寻址相应的从机,并向被寻址的MSP430G2553发送相应的音频编码。从机将所吸收到的音频编码作为定时器的定时周期,利用定时器产生相应的脉冲旗子暗记,从而驱动电机迁徙改变。
为实现单主多从单片机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为主机发送模式流程图。
对付从吸收模块,由于要对主机中读取的数据进行处理,本文中选用定时器A将其数据转换为对应的脉冲波,从而达到掌握电机的目的。因此须要先将定时器A初始化[7],为了不影响主机中SMCLK,本文使定时器A事情在ACLK时钟下。随后将其USCI模块设置为I2C吸收模式,并且无需设置USCI时钟。一旦从设备中UCB0RXBUF吸收到的新数据被读走,从设备即发送一个应答旗子暗记给主设备,然后开始下一个数据的吸收。定时器A将吸收到的数据通过定时器中断产生频率改变的方波,并通过P1.5口输出,从而掌握步进电机依据音频旗子暗记的不同频率来变速迁徙改变。图9为从机吸收模式流程图。
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.