晏 亮,潘貞汝,?!∪A(中國農(nóng)業(yè)大學(xué) 信息與電氣工程學(xué)院,北京100083)
基于I2C總線多步進(jìn)電機(jī)實(shí)驗(yàn)平臺(tái)的開發(fā)
晏亮,潘貞汝,常華
(中國農(nóng)業(yè)大學(xué)信息與電氣工程學(xué)院,北京100083)
描述了基于I2C總線多步進(jìn)電機(jī)平臺(tái)的設(shè)計(jì),介紹了I2C總線通信協(xié)議的特點(diǎn),給出了I2C總線在1片主MSP430G2553和8片從MSP430G2553之間數(shù)據(jù)傳輸程序流程圖和整個(gè)平臺(tái)的硬件結(jié)構(gòu)框架,完成了基于I2C總線的單主多從通信,最終實(shí)現(xiàn)了對多路步進(jìn)電機(jī)的控制。
I2C總線;MSP430G2553;單主多從;步進(jìn)電機(jī)
I2C總線是兩線式串行總線,用于連接微控制器及其外圍設(shè)備,是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少、控制方式簡單、器件封裝形式小、通信速率較高等優(yōu)點(diǎn)。本文介紹一種利用I2C總線協(xié)議,通過單主多從模式,利用1段音頻信號(hào)控制8個(gè)單片機(jī)實(shí)現(xiàn)不同方向、速率的轉(zhuǎn)動(dòng)。
1.1I2C總線接口
本文所用的芯片主要為TI公司的MSP430G2553芯片,其中的I2C模式是通過USCI_Bx模塊來進(jìn)行配置的,本文主要應(yīng)用了USCI_B0模塊[1]。在I2C模式中,USCI通過兩線式I2C串行總線提供了MSP430與I2C兼容器件的連接。外部器件串行依附在I2C總線上,通過2-線I2C接口為USCI模塊發(fā)送數(shù)據(jù)或從USCI接收數(shù)據(jù)。如圖1所示,I2C總線由時(shí)鐘線SCL和數(shù)據(jù)線SDA構(gòu)成,在時(shí)鐘線SCL保持高電平期間,數(shù)據(jù)線SDA上的電平被拉低(即負(fù)跳變),為I2C的開始信號(hào)[2]。在時(shí)鐘線 SCL保持高電平期間,數(shù)據(jù)線SDA被釋放,是I2C的終止信號(hào)。
圖1 I2C模塊數(shù)據(jù)傳輸圖
如圖2所示,進(jìn)行數(shù)據(jù)傳送時(shí),在SCL呈現(xiàn)高電平期間,SDA上的電平必須保持穩(wěn)定,只有在SCL為低電平期間,才允許SDA上的電平改變狀態(tài)。
圖2 I2C總線上數(shù)據(jù)轉(zhuǎn)變圖
關(guān)于傳輸速度,I2C總線在標(biāo)準(zhǔn)模式最高為100kb/s,高速模式最高為400kb/s。
1.2I2C總線數(shù)據(jù)傳輸
I2C總線傳輸數(shù)據(jù)必須遵循規(guī)定的數(shù)據(jù)傳輸格式[2],主機(jī)給每個(gè)數(shù)據(jù)傳輸位產(chǎn)生一個(gè)時(shí)鐘脈沖,I2C模式對數(shù)據(jù)位進(jìn)行操作。在主機(jī)設(shè)置好I2C為發(fā)送模式后,USCI模塊會(huì)檢測總線是否可用,產(chǎn)生START條件。本文中將音頻信號(hào)依據(jù)頻率分為8段,并且每段對應(yīng)不同的從機(jī)地址,如此便可依據(jù)不同頻率將音頻信號(hào)發(fā)送給不同的從機(jī)。I2C模式支持7位和10位尋址模式[3],本文運(yùn)用了7位尋址模式。如圖3所示,在7位尋址模式中,第一個(gè)字節(jié)是7位從機(jī)地址和R/W位。接收器在每個(gè)字節(jié)結(jié)束后發(fā)送ACK位。
圖3 I2C模式7位尋址格式
所有掛到I2C總線的外圍器件各自都有一個(gè)唯一確定的地址[2]。任何時(shí)刻總線上只有一個(gè)主控器件對總線實(shí)行控制權(quán),分時(shí)實(shí)現(xiàn)點(diǎn)對點(diǎn)的數(shù)據(jù)傳送。I2C總線上所有外圍器件都有規(guī)范的器件地址,器件地址由7位組成,它和1位方向位(R/W)構(gòu)成了I2C總線器件的尋址字節(jié)SLA,格式如圖4所示。
圖4 I2C總線器件的尋址字節(jié)格式
其中高4位(A6、A5、A4、A3)是I2C總線外圍接口器件固有地址編碼,器件出廠時(shí)已固化好。A0~A2是對從機(jī)分配的不同地址,本文中MSP430G2553的高4位為0100[1],一共可以掛接 8個(gè)單片機(jī)。而最低位R/W為數(shù)據(jù)方向位,當(dāng)R/W為0時(shí),主機(jī)發(fā)送數(shù)據(jù),當(dāng)R/W為1時(shí),主機(jī)接收數(shù)據(jù)。本文中主機(jī)只用于發(fā)送數(shù)據(jù),故R/W位一直為0。本文中的8個(gè)從機(jī)地址分別為:40H、42H、44H、46H、48H、4AH、4CH和4EH。
故總線上的數(shù)據(jù)傳輸過程[4]是:(1)主控制器發(fā)送開始信號(hào)S;(2)主控制器發(fā)送芯片尋址字節(jié);(3)從器件發(fā)出應(yīng)答信號(hào)ACK;(4)主控制器發(fā)送數(shù)據(jù)尋址字節(jié);(5)發(fā)送者發(fā)送數(shù)據(jù),接受者接收數(shù)據(jù);(6)主控制器發(fā)送停止信號(hào)P終止數(shù)據(jù)傳輸。其流程圖如圖5所示。
圖5 傳輸流程圖
圖6是本文所研究平臺(tái)的整體框圖,在此系統(tǒng)中8個(gè)從機(jī)對應(yīng)8種不同音符頻段,分別控制8個(gè)電機(jī)的轉(zhuǎn)速。系統(tǒng)的主要功能是通過PC由MATLAB對給定音頻進(jìn)行編碼[5],產(chǎn)生單片機(jī)可用的曲譜編碼,然后通過串口將所產(chǎn)生的編碼發(fā)送給主MSP430G2553,主機(jī)在尋址時(shí)先判斷編碼范圍,然后通過I2C總線尋址相應(yīng)的從機(jī),并向被尋址的MSP430G2553發(fā)送相應(yīng)的音頻編碼。從機(jī)將所接收到的音頻編碼作為定時(shí)器的定時(shí)周期,利用定時(shí)器產(chǎn)生相應(yīng)的脈沖信號(hào),從而驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)。
圖6 平臺(tái)整體框圖
為實(shí)現(xiàn)單主多從單片機(jī)MSP430G2553之間的通信,將主機(jī)I2C總線上的SCL(P1.6)和SDA(P1.7)分別與從機(jī)的SCL(P1.6)和SDA(P1.7)相連接,并且在VCC與SCL、SDA兩個(gè)信號(hào)之間分別接上10kΩ的上拉電阻,如圖7所示。由此從機(jī)的P1.6就成了時(shí)鐘接收端,P1.7為數(shù)據(jù)接收端。通過編程將主機(jī)發(fā)送的數(shù)據(jù)送入Buff,從機(jī)通過讀Buff中的數(shù)據(jù)將其實(shí)時(shí)轉(zhuǎn)換為頻率改變的方波,并通過P1.5口將其發(fā)送給電機(jī)驅(qū)動(dòng)器,從而實(shí)現(xiàn)控制步進(jìn)電機(jī)的功能。
圖7 MSP430G2553連接圖
首先將USCI模塊初始化,使主機(jī)/從機(jī)可以進(jìn)行接收/發(fā)送操作,初始化過程如下[6]:將USCI中軟件復(fù)位位UCSWRST置位來初始化所有的USCI寄存器,配置P1.6和P1.7分別為I2C的SCL端口和SDA端口,通過UCMST和UCMODEx選擇I2C模式和主機(jī)或從機(jī)模式。然后通過置位UCSEEL_2來選擇主機(jī)時(shí)鐘為SMCLK(1MHz),并將主時(shí)鐘12分頻為100kHz作為主機(jī)中的SCL時(shí)鐘[1]。上述模塊初始化完成后,清除UCSWRST,釋放USCI,使能發(fā)送中斷。
對于主發(fā)送模塊,初始化之后需要把從地址設(shè)置為7bit,再將目標(biāo)從地址寫入寄存器UCB0I2CSA中。本系統(tǒng)將所給的音頻信號(hào)按照頻率分為8段,每段對應(yīng)不同的從機(jī)地址,使主機(jī)通過判斷與不同的從機(jī)地址相匹配。初始化完成后通過置位UCRT和UCTXSTT,使主機(jī)工作在發(fā)送模式并產(chǎn)生一個(gè)起始條件。當(dāng)?shù)刂纷x入U(xiǎn)CB0I2CSA中后,硬件會(huì)自動(dòng)識(shí)別并找到與之相對應(yīng)的從機(jī),一旦地址匹配則UCSTTIFG置位,主機(jī)進(jìn)入LPM0模式并且觸發(fā)中斷,將要發(fā)送的數(shù)據(jù)寫入U(xiǎn)CB0TXBUF中,當(dāng)從機(jī)地址被應(yīng)答時(shí)UCTXSTT位即刻清零。本文中將音頻信號(hào)裝入數(shù)組中,當(dāng)所有數(shù)據(jù)發(fā)送完畢后產(chǎn)生一個(gè)STOP條件,并將UCB0TXIFG清零同時(shí)退出低功耗模式。圖8為主機(jī)發(fā)送模式流程圖。
對于從接收模塊,由于要對主機(jī)中讀取的數(shù)據(jù)進(jìn)行處理,本文中選用定時(shí)器A將其數(shù)據(jù)轉(zhuǎn)換為對應(yīng)的脈沖波,從而達(dá)到控制電機(jī)的目的。因此需要先將定時(shí)器A初始化[7],為了不影響主機(jī)中SMCLK,本文使定時(shí)器A工作在ACLK時(shí)鐘下。隨后將其USCI模塊設(shè)置為I2C接收模式,并且無需設(shè)置USCI時(shí)鐘。一旦從設(shè)備中UCB0RXBUF接收到的新數(shù)據(jù)被讀走,從設(shè)備即發(fā)送一個(gè)應(yīng)答信號(hào)給主設(shè)備,然后開始下一個(gè)數(shù)據(jù)的接收。定時(shí)器A將接收到的數(shù)據(jù)通過定時(shí)器中斷產(chǎn)生頻率改變的方波,并通過P1.5口輸出,從而控制步進(jìn)電機(jī)依據(jù)音頻信號(hào)的不同頻率來變速轉(zhuǎn)動(dòng)。圖9為從機(jī)接收模式流程圖。
圖8 主機(jī)發(fā)送模式流程圖
圖9 從機(jī)接收模式流程圖
本文介紹的I2C總線單主多從通信系統(tǒng)占用 I/O資源少,功耗低,傳輸速率高,能夠以較高性能控制步進(jìn)電機(jī)隨音樂轉(zhuǎn)動(dòng)。從實(shí)驗(yàn)結(jié)果來看,主從單片機(jī)可以通過該總線系統(tǒng)進(jìn)行非常可靠的通信,進(jìn)而可在各個(gè)領(lǐng)域取得廣泛應(yīng)用。
[1]MSP430x2xx Users′guide[Z].2004.
[2]沈建華,楊艷琴,翟驍曙.MSP430系列16位超低功耗單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2004.
[3]賈朱紅,張曉冬.基于I2C總線的單主多從單片機(jī)之間的通信[J].微計(jì)算機(jī)信息,2009(8):101-102.
[4]鄧忠華,李霞,陳浩.I2C總線技術(shù)在單片機(jī)串行擴(kuò)展中的應(yīng)用[J].武漢理工大學(xué)學(xué)報(bào)(交通科學(xué)與工程版),2005(2):227-229,247.
[5]孫金中,馮炳軍.基于I2C總線控制的音頻處理電路設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009(18):85-88.
[6]吳小平,李莉,何鑫,等.I2C總線及其數(shù)據(jù)通信編程[J].微計(jì)算機(jī)信息,2000(2):11-13.
[7]陳光建,賈金玲.基于單片機(jī)的I2C總線系統(tǒng)設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2006(S3):2465-2466,2472.
本文提出了一種基于USB接口的數(shù)據(jù)采集卡的設(shè)計(jì)方案。該方案主要利用主控制芯片PIC16F8886和USB接口芯片PDIUSBD12來實(shí)現(xiàn),采集卡電路簡單、性能穩(wěn)定,支持即插即用,克服了傳統(tǒng)總線的采集卡安裝繁瑣、傳輸速率低、可掛載的設(shè)備少等問題。該USB接口的數(shù)據(jù)采集卡適合于高速數(shù)據(jù)采集系統(tǒng)與主機(jī)進(jìn)行數(shù)據(jù)通信,同時(shí)也可為便攜式系統(tǒng)提供方便、可靠的接口解決方案。
參考文獻(xiàn)
[1]馬宗駿,張博,牛大鵬.基于USB的數(shù)據(jù)采集卡應(yīng)用[J].物聯(lián)網(wǎng)技術(shù),2011(3):68-70.
[2]PIC16F886 Data Sheet[EB/OL].[2008-02-01](2015-01-10). www.microchip.com.
[3]劉鐵.基于 USB的數(shù)據(jù)采集卡設(shè)計(jì)[J].紡織機(jī)械,2010(4):11-12.
[4]周立功.PDIUSBD12 USB固件編程與驅(qū)動(dòng)開發(fā)[M].北京:北京航空航天大學(xué)出版社,2003.
[5]張明峰.PIC單片機(jī)入門與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2004.
(收稿日期:2015-01-24)
作者簡介:
林宏泉(1991-),通信作者,男,碩士研究生,主要研究方向:電路與系統(tǒng)。E-mail:616370970@qq.com。
秦會(huì)斌(1961-),男,教授,碩士生導(dǎo)師,主要研究方向:新型材料與器件,抗干擾技術(shù)。
I2C bus-based development of test platform for multi-stepper motor
Yan Liang,Pan Zhenru,Chang Hua
(College of Information and Electrical Engineering,China Agricultural University,Beijing 100083,China)
This paper describes the design of multiple stepper motor platform based on I2C bus,introduces the feature of I2C bus communication protocols,and gives the data transmission program flowchart based on I2C bus between the one master MSP430G2553 and eight slave MSP430G2553.It also draws the hardware structure frame of the whole platform and finishes the I2C communication between single-master and multiple-slave.Finally,we complete controling the multiple stepping motor.
I2C bus;MSP430G2553;single-master and multiple-slave;stepper motor
TP273+.5
A
1674-7720(2015)12-0030-03
2015-01-26)
晏亮(1993-),男,本科在讀,主要研究方向:自動(dòng)控制與通信技術(shù)。
潘貞汝(1995-),女,本科在讀,主要研究方向:自動(dòng)控制與通信技術(shù)。
常華(1958-),男,教授,碩士生導(dǎo)師,主要研究方向:自動(dòng)化控制系統(tǒng)。