楊鎮首 李軍
(廣東工業大學自動化學院)
基于SPI接口的多機擴展和通信方法
楊鎮首 李軍
(廣東工業大學自動化學院)
以一主兩從的多機系統為例,介紹了一種多個微控制器柔性擴展和可靠通信的方法。基于SPI接口,外加一根地址分配控制線實現了對從機的地址分配,應用軟件尋址方式和自定義通信協議實現了主機對從機的數據查詢和發送。實際應用表明,該方法占用較少的I/O資源、通信速率高且穩定可靠,可推廣應用于其他多機系統。
微控制器;SPI接口;多機通信;通信協議
現代測控領域中,工業電子產品往往不是孤立存在的,而是需要能夠數據共享,實現多機通信的功能,因而在大多數電子產品的設計中要考慮多機擴展和通信問題。比如在各種采用微處理器的控制系統中,就要求能實現多微處理器的柔性擴展和它們之間的數據通信。本文以廣泛應用于工業實時控制、通信設備、家用電器等各個領域的AVR單片機組成的一主兩從系統為例,介紹一種基于SPI接口的高速可靠的多微處理器擴展和通信方法,包括該方法的實現原理、硬件連接和軟件實現。
通信接口的選擇關系到整個多機擴展的構成和通信方案的設計。微控制器的通信方式包括并行通信和串行通信,其中串行通信方式有SPI通信接口、UART通信接口、I2C通信接口等。在通信接口的選擇中,通信的可靠性要放在首位。由于并行通信方式通道間會有互相干擾,當傳輸出錯時,要重新傳送數據,而且要求數據同時到達接收端,但往往各通道由于布線長度不一等原因難以保證真正的一致性。另外采用并行通信方式占用了較多的I/O資源,不適合于小型系統,所以本文選擇了串行通信方式。基于SPI通信接口的速度較快,而且通信協議也較為簡單,相對來說也比較穩定等優點,本設計就選用SPI接口來實現多機通信。
SPI接口是全雙工同步串行外設接口,采用主從模式架構,支持單主多從模式應用。時鐘由主機控制,在時鐘移位脈沖下,數據按位傳輸,輸入輸出為全雙工通信方式。SPI數據通信時的主-從連接與數據傳送方式如圖1所示[1]。

圖1 SPI數據通信時的主-從機連接與數據傳送方式
由圖1可知,SPI數據傳輸系統是由主機和從機兩部分組成;主要是由主、從雙方的兩個移位寄存器和主機SPI時鐘發生器組成,主機為SPI數據傳輸的控制方。由SPI的主機將SS輸出線的電平拉低,作為同步數據傳輸的初始化信號,通知從機進入傳輸狀態,然后主機啟動時鐘發生器產生同步時鐘信號SCK,預先存在兩個移位寄存器中的數據在SCK的驅動下進行循環移位操作,完成主-從機之間的數據交換,傳輸的數據為8位,按位傳輸。
SPI通過一根時鐘引線SCK將主機和從機同步,主機的數據由MOSI進入從機,而同時從機的數據由MISO進入主機。因此,它的串行數據交換不需要增加起始位、停止位等用于同步的格式位,直接將要傳送的數據寫入到主機的SPI發送數據寄存器,這個寫入過程自動啟動主機的發送過程。對于從機,同樣在SCK的節拍下將出現在引腳MOSI上的數據逐位移到從機的移位寄存器,當接收完一個完整的數據塊后,設置中斷標志,通知從機這個數據塊已接收完畢,同時將移位寄存器接收到的內容復制到從機的SPI接收數據寄存器。可以看出,用戶編程只需在發送數據時寫數據到SPI發送數據寄存器,在接收數據時讀SPI接收數據寄存器,其余的移位、同步、置位收發標志等工作都由內置的SPI模塊自動完成。
以一主兩從的系統結構、主從都為Atmega128單片機為例,介紹多機擴展和通信方案。系統框圖如圖2所示,主機分別同兩個從機的SPI接口相連,另外主從機間還增加了地址分配使能線AD。在理論上這種擴展方法可以實現無數個從機的擴展和通信,筆者在實際的應用中擴展到了8個從機。下面就主從機之間的通信方法作詳細的介紹。

圖2 系統框圖
3.1 地址分配
在多機通信系統中,主機通過從機地址對各個從機進行訪問,因此,要求每個從機都有唯一的地址。為確保地址的唯一性和可靠性,就必須對從機進行統一編址。
常用編址方式是將撥碼開關連接在從機的I/O上,用人工撥碼來實現編址。撥碼開關打開和關閉分別代表著0和1,這也就代表著一定的數據,這個數據就是該從機的地址。這種硬編址方式簡單且容易操作,但是占用從機的I/O資源。當從機數量增加時,用于撥碼開關的I/O口也要相應地增加,而且編址需要人工操作來實現,在實際應用中很不方便[2]。
本文設計了一種軟件編址方式,采用主機自動給從機分配地址的方法。在硬件上,只需在SPI通信接口的基礎上增加一根地址分配使能線就能實現,如圖2所示。其實現原理是:
主機通過AD線向從機1發出處理地址分配使能信號,與此同時,從機1通過AD線禁止從機2地址分配使能,保證在地址分配期間某一時刻只有一個從機進行地址信息處理。主機通過SPI接口向各從機發出地址分配信息,從機都接收到主機傳來的地址信息,但此時只有從機1的地址分配是使能的,所以只有從機1對地址分配信息進行處理,通過以下時序對從機1進行地址分配:
① 主機向從機發送地址分配起始標識符‘(’,告訴從機此時進行地址分配操作,從機1向主機反饋確認信息;
② 主機向從機發送地址,從機1進行地址存儲并向主機反饋確認信息;
③ 主機向從機發送地址分配結束標識符‘)’,告訴從機已完成地址分配。
主機成功對從機1進行地址分配后,主機關閉從機1的地址分配使能,從機1開啟從機2的地址分配使能,同理,依照以上時序,主機完成對所有從機的地址分配。
3.2 數據查詢
主機對所有的從機進行了統一編址后,每個從機都擁有了唯一的地址,這樣主機和從機之間就可以進行數據查詢和發送操作了。
數據查詢操作時,首先主機向所有從機發出其要查詢從機的地址,所有從機接到主機發來的地址后和自己的地址信息進行比較,地址匹配的從機就響應主機并將數據傳給主機,這樣就完成了主機對一個從機的數據查詢。數據查詢操作的時序為:
① 主機向從機發送數據查詢起始標識符‘[’,從機以此識別為數據查詢操作;
② 主機向從機發送數據查詢的地址值,從機接收地址信息并和自己的地址比較,相同者才進行下面的操作,不同者就不做任何操作;
③ 對應地址的從機向主機發回數據,主機進行數據接收;
④ 從機向主機發送數據結束標識符‘]’,告訴主機數據傳送結束。
依照時序,主機就可以對全部從機或者某個從機進行數據查詢。
3.3 數據發送
數據發送操作時,首先主機向所有需要向其發送數據的從機發出地址信息,所有從機接到主機發來的地址后和自己的地址信息進行比較,地址匹配的從機就響應主機并做好接受數據的準備,這樣就完成了主機向一個從機發送數據的過程。數據發送的時序為:
① 主機向從機發送數據及起始標識符‘<’,從機以此識別為數據發送操作;
② 主機根據從機地址發送數據,從機接收地址信息并和自己的地址比較,相同者才進行下面的操作,不同者就不做任何操作;
③ 主機向從機發送數據;
④ 結束后主機向從機發送數據結束標識符‘>’,告訴從機數據傳送結束。
依照時序,主機就可以根據需要向全部或者某個從機進行數據發送。
根據以上對多機擴展和通信方法的介紹,我們可以進入軟件實現。圖3和圖4分別給出了主從機中地址分配部分的程序流程圖,根據前面介紹的原理,主從機的數據查詢和發送程序也類似于地址分配部分,限于篇幅不再贅述。
本文介紹了一種多機擴展和通信的實現方法,該方法在標準SPI接口的基礎上加上一根普通I/O線并采用軟件編址的方式來實現了對從機的地址分配,與硬件編址方式比較更節省I/O資源且簡單并容易實現,理論上這種方法擴展的從機數量可達到無數個。

圖3 地址分配程序流程圖(主機)

圖4 地址分配程序流程圖(從機)
基于SPI接口,數據查詢發送的通信速率更快,理論上可以達到從機CPU總線頻率的四分之一,筆者在擴展的8個從機系統中SPI速率完全可以達到從機總線頻率的最大值即四分之一。在擴展和通信中使用了自定義通信協議,更確保了通信的安全可靠。相比于文獻[2]~[4]介紹的方法,本文所提出的多機擴展和通信方法更為簡單可行、安全可靠。
[1] 馬潮.高檔8位單片機ATmega128原理與開發應用指南[M].北京:北京航空航天大學出版社,2004:123-130.
[2] 胡文,胥布工.一種PLC擴展板尋址方法的實現[J].制造業自動化,2003(11):36-38.
[3] 趙學軍.基于多機SPI協議的多機通信[J].單片機與嵌入式系統應用,2006(7):67-68.
[4] 張志利.基于RS232協議的單片機多機通信網絡研究[J].自動化技術與應用,2009,28(4):54-55.
A Method of Multi-Microcontroller Expansion and Communication Based on SPI Interface
Yang Zhenshou Li Jun
(School of Automation of Guangdong University of Technology.)
Taking a multi-microcontroller system with one host microcontroller and two slave microcontrollers as example, a method of multi-microcontroller’s flexible expansion and reliable communication is introduced in this paper. Based on SPI interface, the distribution of the slave address is realized with an additional address assignment control line. The dates receiving and sending between host microcontroller and slave are also realized with using the software addressing and author's communication protocol. Practice has proved that this method takes up less I/O resources, has higher communication rate and reliability communication, and can be wildly used.
Microcontroller; SPI Interface; Multi-Microcontroller Communication; Communication Protocol
楊鎮首,男,1988生,碩士研究生,主要研究方向:嵌入式測控裝置。
李軍,男,1962生,副教授,碩士生導師,主要研究方向:嵌入式測控裝置,智能控制技術。