晏 亮,潘貞汝,常 華(中國農業(yè)大學 信息與電氣工程學院,北京100083)
基于I2C總線多步進電機實驗平臺的開發(fā)
晏亮,潘貞汝,常華
(中國農業(yè)大學信息與電氣工程學院,北京100083)
描述了基于I2C總線多步進電機平臺的設計,介紹了I2C總線通信協(xié)議的特點,給出了I2C總線在1片主MSP430G2553和8片從MSP430G2553之間數據傳輸程序流程圖和整個平臺的硬件結構框架,完成了基于I2C總線的單主多從通信,最終實現(xiàn)了對多路步進電機的控制。
I2C總線;MSP430G2553;單主多從;步進電機
I2C總線是兩線式串行總線,用于連接微控制器及其外圍設備,是微電子通信控制領域廣泛采用的一種總線標準。它是同步通信的一種特殊形式,具有接口線少、控制方式簡單、器件封裝形式小、通信速率較高等優(yōu)點。本文介紹一種利用I2C總線協(xié)議,通過單主多從模式,利用1段音頻信號控制8個單片機實現(xiàn)不同方向、速率的轉動。
1.1I2C總線接口
本文所用的芯片主要為TI公司的MSP430G2553芯片,其中的I2C模式是通過USCI_Bx模塊來進行配置的,本文主要應用了USCI_B0模塊[1]。在I2C模式中,USCI通過兩線式I2C串行總線提供了MSP430與I2C兼容器件的連接。外部器件串行依附在I2C總線上,通過2-線I2C接口為USCI模塊發(fā)送數據或從USCI接收數據。如圖1所示,I2C總線由時鐘線SCL和數據線SDA構成,在時鐘線SCL保持高電平期間,數據線SDA上的電平被拉低(即負跳變),為I2C的開始信號[2]。在時鐘線 SCL保持高電平期間,數據線SDA被釋放,是I2C的終止信號。
圖1 I2C模塊數據傳輸圖
如圖2所示,進行數據傳送時,在SCL呈現(xiàn)高電平期間,SDA上的電平必須保持穩(wěn)定,只有在SCL為低電平期間,才允許SDA上的電平改變狀態(tài)。
圖2 I2C總線上數據轉變圖
關于傳輸速度,I2C總線在標準模式最高為100kb/s,高速模式最高為400kb/s。
1.2I2C總線數據傳輸
I2C總線傳輸數據必須遵循規(guī)定的數據傳輸格式[2],主機給每個數據傳輸位產生一個時鐘脈沖,I2C模式對數據位進行操作。在主機設置好I2C為發(fā)送模式后,USCI模塊會檢測總線是否可用,產生START條件。本文中將音頻信號依據頻率分為8段,并且每段對應不同的從機地址,如此便可依據不同頻率將音頻信號發(fā)送給不同的從機。I2C模式支持7位和10位尋址模式[3],本文運用了7位尋址模式。如圖3所示,在7位尋址模式中,第一個字節(jié)是7位從機地址和R/W位。接收器在每個字節(jié)結束后發(fā)送ACK位。
圖3 I2C模式7位尋址格式
所有掛到I2C總線的外圍器件各自都有一個唯一確定的地址[2]。任何時刻總線上只有一個主控器件對總線實行控制權,分時實現(xiàn)點對點的數據傳送。I2C總線上所有外圍器件都有規(guī)范的器件地址,器件地址由7位組成,它和1位方向位(R/W)構成了I2C總線器件的尋址字節(jié)SLA,格式如圖4所示。
圖4 I2C總線器件的尋址字節(jié)格式
其中高4位(A6、A5、A4、A3)是I2C總線外圍接口器件固有地址編碼,器件出廠時已固化好。A0~A2是對從機分配的不同地址,本文中MSP430G2553的高4位為0100[1],一共可以掛接 8個單片機。而最低位R/W為數據方向位,當R/W為0時,主機發(fā)送數據,當R/W為1時,主機接收數據。本文中主機只用于發(fā)送數據,故R/W位一直為0。本文中的8個從機地址分別為:40H、42H、44H、46H、48H、4AH、4CH和4EH。
故總線上的數據傳輸過程[4]是:(1)主控制器發(fā)送開始信號S;(2)主控制器發(fā)送芯片尋址字節(jié);(3)從器件發(fā)出應答信號ACK;(4)主控制器發(fā)送數據尋址字節(jié);(5)發(fā)送者發(fā)送數據,接受者接收數據;(6)主控制器發(fā)送停止信號P終止數據傳輸。其流程圖如圖5所示。
圖5 傳輸流程圖
圖6是本文所研究平臺的整體框圖,在此系統(tǒng)中8個從機對應8種不同音符頻段,分別控制8個電機的轉速。系統(tǒng)的主要功能是通過PC由MATLAB對給定音頻進行編碼[5],產生單片機可用的曲譜編碼,然后通過串口將所產生的編碼發(fā)送給主MSP430G2553,主機在尋址時先判斷編碼范圍,然后通過I2C總線尋址相應的從機,并向被尋址的MSP430G2553發(fā)送相應的音頻編碼。從機將所接收到的音頻編碼作為定時器的定時周期,利用定時器產生相應的脈沖信號,從而驅動電機轉動。
圖6 平臺整體框圖
為實現(xiàn)單主多從單片機MSP430G2553之間的通信,將主機I2C總線上的SCL(P1.6)和SDA(P1.7)分別與從機的SCL(P1.6)和SDA(P1.7)相連接,并且在VCC與SCL、SDA兩個信號之間分別接上10kΩ的上拉電阻,如圖7所示。由此從機的P1.6就成了時鐘接收端,P1.7為數據接收端。通過編程將主機發(fā)送的數據送入Buff,從機通過讀Buff中的數據將其實時轉換為頻率改變的方波,并通過P1.5口將其發(fā)送給電機驅動器,從而實現(xiàn)控制步進電機的功能。
圖7 MSP430G2553連接圖
首先將USCI模塊初始化,使主機/從機可以進行接收/發(fā)送操作,初始化過程如下[6]:將USCI中軟件復位位UCSWRST置位來初始化所有的USCI寄存器,配置P1.6和P1.7分別為I2C的SCL端口和SDA端口,通過UCMST和UCMODEx選擇I2C模式和主機或從機模式。然后通過置位UCSEEL_2來選擇主機時鐘為SMCLK(1MHz),并將主時鐘12分頻為100kHz作為主機中的SCL時鐘[1]。上述模塊初始化完成后,清除UCSWRST,釋放USCI,使能發(fā)送中斷。
對于主發(fā)送模塊,初始化之后需要把從地址設置為7bit,再將目標從地址寫入寄存器UCB0I2CSA中。本系統(tǒng)將所給的音頻信號按照頻率分為8段,每段對應不同的從機地址,使主機通過判斷與不同的從機地址相匹配。初始化完成后通過置位UCRT和UCTXSTT,使主機工作在發(fā)送模式并產生一個起始條件。當地址讀入UCB0I2CSA中后,硬件會自動識別并找到與之相對應的從機,一旦地址匹配則UCSTTIFG置位,主機進入LPM0模式并且觸發(fā)中斷,將要發(fā)送的數據寫入UCB0TXBUF中,當從機地址被應答時UCTXSTT位即刻清零。本文中將音頻信號裝入數組中,當所有數據發(fā)送完畢后產生一個STOP條件,并將UCB0TXIFG清零同時退出低功耗模式。圖8為主機發(fā)送模式流程圖。
對于從接收模塊,由于要對主機中讀取的數據進行處理,本文中選用定時器A將其數據轉換為對應的脈沖波,從而達到控制電機的目的。因此需要先將定時器A初始化[7],為了不影響主機中SMCLK,本文使定時器A工作在ACLK時鐘下。隨后將其USCI模塊設置為I2C接收模式,并且無需設置USCI時鐘。一旦從設備中UCB0RXBUF接收到的新數據被讀走,從設備即發(fā)送一個應答信號給主設備,然后開始下一個數據的接收。定時器A將接收到的數據通過定時器中斷產生頻率改變的方波,并通過P1.5口輸出,從而控制步進電機依據音頻信號的不同頻率來變速轉動。圖9為從機接收模式流程圖。
圖8 主機發(fā)送模式流程圖
圖9 從機接收模式流程圖
本文介紹的I2C總線單主多從通信系統(tǒng)占用 I/O資源少,功耗低,傳輸速率高,能夠以較高性能控制步進電機隨音樂轉動。從實驗結果來看,主從單片機可以通過該總線系統(tǒng)進行非常可靠的通信,進而可在各個領域取得廣泛應用。
[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].現(xiàn)代電子技術,2009(18):85-88.
[6]吳小平,李莉,何鑫,等.I2C總線及其數據通信編程[J].微計算機信息,2000(2):11-13.
[7]陳光建,賈金玲.基于單片機的I2C總線系統(tǒng)設計[J].儀器儀表學報,2006(S3):2465-2466,2472.
本文提出了一種基于USB接口的數據采集卡的設計方案。該方案主要利用主控制芯片PIC16F8886和USB接口芯片PDIUSBD12來實現(xiàn),采集卡電路簡單、性能穩(wěn)定,支持即插即用,克服了傳統(tǒng)總線的采集卡安裝繁瑣、傳輸速率低、可掛載的設備少等問題。該USB接口的數據采集卡適合于高速數據采集系統(tǒng)與主機進行數據通信,同時也可為便攜式系統(tǒng)提供方便、可靠的接口解決方案。
參考文獻
[1]馬宗駿,張博,牛大鵬.基于USB的數據采集卡應用[J].物聯(lián)網技術,2011(3):68-70.
[2]PIC16F886 Data Sheet[EB/OL].[2008-02-01](2015-01-10). www.microchip.com.
[3]劉鐵.基于 USB的數據采集卡設計[J].紡織機械,2010(4):11-12.
[4]周立功.PDIUSBD12 USB固件編程與驅動開發(fā)[M].北京:北京航空航天大學出版社,2003.
[5]張明峰.PIC單片機入門與實戰(zhàn)[M].北京:北京航空航天大學出版社,2004.
(收稿日期:2015-01-24)
作者簡介:
林宏泉(1991-),通信作者,男,碩士研究生,主要研究方向:電路與系統(tǒng)。E-mail:616370970@qq.com。
秦會斌(1961-),男,教授,碩士生導師,主要研究方向:新型材料與器件,抗干擾技術。
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-),男,本科在讀,主要研究方向:自動控制與通信技術。
潘貞汝(1995-),女,本科在讀,主要研究方向:自動控制與通信技術。
常華(1958-),男,教授,碩士生導師,主要研究方向:自動化控制系統(tǒng)。