国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SPI接口的多機(jī)擴(kuò)展和通信方法

2011-07-02 01:14:05楊鎮(zhèn)首李軍
自動(dòng)化與信息工程 2011年2期
關(guān)鍵詞:發(fā)送數(shù)據(jù)標(biāo)識(shí)符寄存器

楊鎮(zhèn)首 李軍

(廣東工業(yè)大學(xué)自動(dòng)化學(xué)院)

基于SPI接口的多機(jī)擴(kuò)展和通信方法

楊鎮(zhèn)首 李軍

(廣東工業(yè)大學(xué)自動(dòng)化學(xué)院)

以一主兩從的多機(jī)系統(tǒng)為例,介紹了一種多個(gè)微控制器柔性擴(kuò)展和可靠通信的方法?;赟PI接口,外加一根地址分配控制線實(shí)現(xiàn)了對(duì)從機(jī)的地址分配,應(yīng)用軟件尋址方式和自定義通信協(xié)議實(shí)現(xiàn)了主機(jī)對(duì)從機(jī)的數(shù)據(jù)查詢和發(fā)送。實(shí)際應(yīng)用表明,該方法占用較少的I/O資源、通信速率高且穩(wěn)定可靠,可推廣應(yīng)用于其他多機(jī)系統(tǒng)。

微控制器;SPI接口;多機(jī)通信;通信協(xié)議

1 引言

現(xiàn)代測(cè)控領(lǐng)域中,工業(yè)電子產(chǎn)品往往不是孤立存在的,而是需要能夠數(shù)據(jù)共享,實(shí)現(xiàn)多機(jī)通信的功能,因而在大多數(shù)電子產(chǎn)品的設(shè)計(jì)中要考慮多機(jī)擴(kuò)展和通信問(wèn)題。比如在各種采用微處理器的控制系統(tǒng)中,就要求能實(shí)現(xiàn)多微處理器的柔性擴(kuò)展和它們之間的數(shù)據(jù)通信。本文以廣泛應(yīng)用于工業(yè)實(shí)時(shí)控制、通信設(shè)備、家用電器等各個(gè)領(lǐng)域的AVR單片機(jī)組成的一主兩從系統(tǒng)為例,介紹一種基于SPI接口的高速可靠的多微處理器擴(kuò)展和通信方法,包括該方法的實(shí)現(xiàn)原理、硬件連接和軟件實(shí)現(xiàn)。

2 通信接口的選擇

通信接口的選擇關(guān)系到整個(gè)多機(jī)擴(kuò)展的構(gòu)成和通信方案的設(shè)計(jì)。微控制器的通信方式包括并行通信和串行通信,其中串行通信方式有SPI通信接口、UART通信接口、I2C通信接口等。在通信接口的選擇中,通信的可靠性要放在首位。由于并行通信方式通道間會(huì)有互相干擾,當(dāng)傳輸出錯(cuò)時(shí),要重新傳送數(shù)據(jù),而且要求數(shù)據(jù)同時(shí)到達(dá)接收端,但往往各通道由于布線長(zhǎng)度不一等原因難以保證真正的一致性。另外采用并行通信方式占用了較多的I/O資源,不適合于小型系統(tǒng),所以本文選擇了串行通信方式?;赟PI通信接口的速度較快,而且通信協(xié)議也較為簡(jiǎn)單,相對(duì)來(lái)說(shuō)也比較穩(wěn)定等優(yōu)點(diǎn),本設(shè)計(jì)就選用SPI接口來(lái)實(shí)現(xiàn)多機(jī)通信。

SPI接口是全雙工同步串行外設(shè)接口,采用主從模式架構(gòu),支持單主多從模式應(yīng)用。時(shí)鐘由主機(jī)控制,在時(shí)鐘移位脈沖下,數(shù)據(jù)按位傳輸,輸入輸出為全雙工通信方式。SPI數(shù)據(jù)通信時(shí)的主-從連接與數(shù)據(jù)傳送方式如圖1所示[1]。

圖1 SPI數(shù)據(jù)通信時(shí)的主-從機(jī)連接與數(shù)據(jù)傳送方式

由圖1可知,SPI數(shù)據(jù)傳輸系統(tǒng)是由主機(jī)和從機(jī)兩部分組成;主要是由主、從雙方的兩個(gè)移位寄存器和主機(jī)SPI時(shí)鐘發(fā)生器組成,主機(jī)為SPI數(shù)據(jù)傳輸?shù)目刂品?。由SPI的主機(jī)將SS輸出線的電平拉低,作為同步數(shù)據(jù)傳輸?shù)某跏蓟盘?hào),通知從機(jī)進(jìn)入傳輸狀態(tài),然后主機(jī)啟動(dòng)時(shí)鐘發(fā)生器產(chǎn)生同步時(shí)鐘信號(hào)SCK,預(yù)先存在兩個(gè)移位寄存器中的數(shù)據(jù)在SCK的驅(qū)動(dòng)下進(jìn)行循環(huán)移位操作,完成主-從機(jī)之間的數(shù)據(jù)交換,傳輸?shù)臄?shù)據(jù)為8位,按位傳輸。

SPI通過(guò)一根時(shí)鐘引線SCK將主機(jī)和從機(jī)同步,主機(jī)的數(shù)據(jù)由MOSI進(jìn)入從機(jī),而同時(shí)從機(jī)的數(shù)據(jù)由MISO進(jìn)入主機(jī)。因此,它的串行數(shù)據(jù)交換不需要增加起始位、停止位等用于同步的格式位,直接將要傳送的數(shù)據(jù)寫入到主機(jī)的SPI發(fā)送數(shù)據(jù)寄存器,這個(gè)寫入過(guò)程自動(dòng)啟動(dòng)主機(jī)的發(fā)送過(guò)程。對(duì)于從機(jī),同樣在SCK的節(jié)拍下將出現(xiàn)在引腳MOSI上的數(shù)據(jù)逐位移到從機(jī)的移位寄存器,當(dāng)接收完一個(gè)完整的數(shù)據(jù)塊后,設(shè)置中斷標(biāo)志,通知從機(jī)這個(gè)數(shù)據(jù)塊已接收完畢,同時(shí)將移位寄存器接收到的內(nèi)容復(fù)制到從機(jī)的SPI接收數(shù)據(jù)寄存器??梢钥闯觯脩艟幊讨恍柙诎l(fā)送數(shù)據(jù)時(shí)寫數(shù)據(jù)到SPI發(fā)送數(shù)據(jù)寄存器,在接收數(shù)據(jù)時(shí)讀SPI接收數(shù)據(jù)寄存器,其余的移位、同步、置位收發(fā)標(biāo)志等工作都由內(nèi)置的SPI模塊自動(dòng)完成。

3 多機(jī)擴(kuò)展和通信的實(shí)現(xiàn)原理

以一主兩從的系統(tǒng)結(jié)構(gòu)、主從都為Atmega128單片機(jī)為例,介紹多機(jī)擴(kuò)展和通信方案。系統(tǒng)框圖如圖2所示,主機(jī)分別同兩個(gè)從機(jī)的SPI接口相連,另外主從機(jī)間還增加了地址分配使能線AD。在理論上這種擴(kuò)展方法可以實(shí)現(xiàn)無(wú)數(shù)個(gè)從機(jī)的擴(kuò)展和通信,筆者在實(shí)際的應(yīng)用中擴(kuò)展到了8個(gè)從機(jī)。下面就主從機(jī)之間的通信方法作詳細(xì)的介紹。

圖2 系統(tǒng)框圖

3.1 地址分配

在多機(jī)通信系統(tǒng)中,主機(jī)通過(guò)從機(jī)地址對(duì)各個(gè)從機(jī)進(jìn)行訪問(wèn),因此,要求每個(gè)從機(jī)都有唯一的地址。為確保地址的唯一性和可靠性,就必須對(duì)從機(jī)進(jìn)行統(tǒng)一編址。

常用編址方式是將撥碼開關(guān)連接在從機(jī)的I/O上,用人工撥碼來(lái)實(shí)現(xiàn)編址。撥碼開關(guān)打開和關(guān)閉分別代表著0和1,這也就代表著一定的數(shù)據(jù),這個(gè)數(shù)據(jù)就是該從機(jī)的地址。這種硬編址方式簡(jiǎn)單且容易操作,但是占用從機(jī)的I/O資源。當(dāng)從機(jī)數(shù)量增加時(shí),用于撥碼開關(guān)的I/O口也要相應(yīng)地增加,而且編址需要人工操作來(lái)實(shí)現(xiàn),在實(shí)際應(yīng)用中很不方便[2]。

本文設(shè)計(jì)了一種軟件編址方式,采用主機(jī)自動(dòng)給從機(jī)分配地址的方法。在硬件上,只需在SPI通信接口的基礎(chǔ)上增加一根地址分配使能線就能實(shí)現(xiàn),如圖2所示。其實(shí)現(xiàn)原理是:

主機(jī)通過(guò)AD線向從機(jī)1發(fā)出處理地址分配使能信號(hào),與此同時(shí),從機(jī)1通過(guò)AD線禁止從機(jī)2地址分配使能,保證在地址分配期間某一時(shí)刻只有一個(gè)從機(jī)進(jìn)行地址信息處理。主機(jī)通過(guò)SPI接口向各從機(jī)發(fā)出地址分配信息,從機(jī)都接收到主機(jī)傳來(lái)的地址信息,但此時(shí)只有從機(jī)1的地址分配是使能的,所以只有從機(jī)1對(duì)地址分配信息進(jìn)行處理,通過(guò)以下時(shí)序?qū)臋C(jī)1進(jìn)行地址分配:

① 主機(jī)向從機(jī)發(fā)送地址分配起始標(biāo)識(shí)符‘(’,告訴從機(jī)此時(shí)進(jìn)行地址分配操作,從機(jī)1向主機(jī)反饋確認(rèn)信息;

② 主機(jī)向從機(jī)發(fā)送地址,從機(jī)1進(jìn)行地址存儲(chǔ)并向主機(jī)反饋確認(rèn)信息;

③ 主機(jī)向從機(jī)發(fā)送地址分配結(jié)束標(biāo)識(shí)符‘)’,告訴從機(jī)已完成地址分配。

主機(jī)成功對(duì)從機(jī)1進(jìn)行地址分配后,主機(jī)關(guān)閉從機(jī)1的地址分配使能,從機(jī)1開啟從機(jī)2的地址分配使能,同理,依照以上時(shí)序,主機(jī)完成對(duì)所有從機(jī)的地址分配。

3.2 數(shù)據(jù)查詢

主機(jī)對(duì)所有的從機(jī)進(jìn)行了統(tǒng)一編址后,每個(gè)從機(jī)都擁有了唯一的地址,這樣主機(jī)和從機(jī)之間就可以進(jìn)行數(shù)據(jù)查詢和發(fā)送操作了。

數(shù)據(jù)查詢操作時(shí),首先主機(jī)向所有從機(jī)發(fā)出其要查詢從機(jī)的地址,所有從機(jī)接到主機(jī)發(fā)來(lái)的地址后和自己的地址信息進(jìn)行比較,地址匹配的從機(jī)就響應(yīng)主機(jī)并將數(shù)據(jù)傳給主機(jī),這樣就完成了主機(jī)對(duì)一個(gè)從機(jī)的數(shù)據(jù)查詢。數(shù)據(jù)查詢操作的時(shí)序?yàn)椋?/p>

① 主機(jī)向從機(jī)發(fā)送數(shù)據(jù)查詢起始標(biāo)識(shí)符‘[’,從機(jī)以此識(shí)別為數(shù)據(jù)查詢操作;

② 主機(jī)向從機(jī)發(fā)送數(shù)據(jù)查詢的地址值,從機(jī)接收地址信息并和自己的地址比較,相同者才進(jìn)行下面的操作,不同者就不做任何操作;

③ 對(duì)應(yīng)地址的從機(jī)向主機(jī)發(fā)回?cái)?shù)據(jù),主機(jī)進(jìn)行數(shù)據(jù)接收;

④ 從機(jī)向主機(jī)發(fā)送數(shù)據(jù)結(jié)束標(biāo)識(shí)符‘]’,告訴主機(jī)數(shù)據(jù)傳送結(jié)束。

依照時(shí)序,主機(jī)就可以對(duì)全部從機(jī)或者某個(gè)從機(jī)進(jìn)行數(shù)據(jù)查詢。

3.3 數(shù)據(jù)發(fā)送

數(shù)據(jù)發(fā)送操作時(shí),首先主機(jī)向所有需要向其發(fā)送數(shù)據(jù)的從機(jī)發(fā)出地址信息,所有從機(jī)接到主機(jī)發(fā)來(lái)的地址后和自己的地址信息進(jìn)行比較,地址匹配的從機(jī)就響應(yīng)主機(jī)并做好接受數(shù)據(jù)的準(zhǔn)備,這樣就完成了主機(jī)向一個(gè)從機(jī)發(fā)送數(shù)據(jù)的過(guò)程。數(shù)據(jù)發(fā)送的時(shí)序?yàn)椋?/p>

① 主機(jī)向從機(jī)發(fā)送數(shù)據(jù)及起始標(biāo)識(shí)符‘<’,從機(jī)以此識(shí)別為數(shù)據(jù)發(fā)送操作;

② 主機(jī)根據(jù)從機(jī)地址發(fā)送數(shù)據(jù),從機(jī)接收地址信息并和自己的地址比較,相同者才進(jìn)行下面的操作,不同者就不做任何操作;

③ 主機(jī)向從機(jī)發(fā)送數(shù)據(jù);

④ 結(jié)束后主機(jī)向從機(jī)發(fā)送數(shù)據(jù)結(jié)束標(biāo)識(shí)符‘>’,告訴從機(jī)數(shù)據(jù)傳送結(jié)束。

依照時(shí)序,主機(jī)就可以根據(jù)需要向全部或者某個(gè)從機(jī)進(jìn)行數(shù)據(jù)發(fā)送。

4 軟件設(shè)計(jì)

根據(jù)以上對(duì)多機(jī)擴(kuò)展和通信方法的介紹,我們可以進(jìn)入軟件實(shí)現(xiàn)。圖3和圖4分別給出了主從機(jī)中地址分配部分的程序流程圖,根據(jù)前面介紹的原理,主從機(jī)的數(shù)據(jù)查詢和發(fā)送程序也類似于地址分配部分,限于篇幅不再贅述。

5 結(jié)束語(yǔ)

本文介紹了一種多機(jī)擴(kuò)展和通信的實(shí)現(xiàn)方法,該方法在標(biāo)準(zhǔn)SPI接口的基礎(chǔ)上加上一根普通I/O線并采用軟件編址的方式來(lái)實(shí)現(xiàn)了對(duì)從機(jī)的地址分配,與硬件編址方式比較更節(jié)省I/O資源且簡(jiǎn)單并容易實(shí)現(xiàn),理論上這種方法擴(kuò)展的從機(jī)數(shù)量可達(dá)到無(wú)數(shù)個(gè)。

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

圖4 地址分配程序流程圖(從機(jī))

基于SPI接口,數(shù)據(jù)查詢發(fā)送的通信速率更快,理論上可以達(dá)到從機(jī)CPU總線頻率的四分之一,筆者在擴(kuò)展的8個(gè)從機(jī)系統(tǒng)中SPI速率完全可以達(dá)到從機(jī)總線頻率的最大值即四分之一。在擴(kuò)展和通信中使用了自定義通信協(xié)議,更確保了通信的安全可靠。相比于文獻(xiàn)[2]~[4]介紹的方法,本文所提出的多機(jī)擴(kuò)展和通信方法更為簡(jiǎn)單可行、安全可靠。

[1] 馬潮.高檔8位單片機(jī)ATmega128原理與開發(fā)應(yīng)用指南[M].北京:北京航空航天大學(xué)出版社,2004:123-130.

[2] 胡文,胥布工.一種PLC擴(kuò)展板尋址方法的實(shí)現(xiàn)[J].制造業(yè)自動(dòng)化,2003(11):36-38.

[3] 趙學(xué)軍.基于多機(jī)SPI協(xié)議的多機(jī)通信[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(7):67-68.

[4] 張志利.基于RS232協(xié)議的單片機(jī)多機(jī)通信網(wǎng)絡(luò)研究[J].自動(dòng)化技術(shù)與應(yīng)用,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

楊鎮(zhèn)首,男,1988生,碩士研究生,主要研究方向:嵌入式測(cè)控裝置。

李軍,男,1962生,副教授,碩士生導(dǎo)師,主要研究方向:嵌入式測(cè)控裝置,智能控制技術(shù)。

猜你喜歡
發(fā)送數(shù)據(jù)標(biāo)識(shí)符寄存器
移動(dòng)自組網(wǎng)中MAC層協(xié)議研究
淺析5G V2X 通信應(yīng)用現(xiàn)狀及其側(cè)鏈路標(biāo)識(shí)符更新技術(shù)
基于底層虛擬機(jī)的標(biāo)識(shí)符混淆方法
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
基于區(qū)塊鏈的持久標(biāo)識(shí)符系統(tǒng)①
基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
分簇結(jié)構(gòu)向量寄存器分配策略研究*
數(shù)字美術(shù)館“數(shù)字對(duì)象唯一標(biāo)識(shí)符系統(tǒng)”建設(shè)需求淺議
使用IPSec安全傳輸數(shù)據(jù)
北川| 湛江市| 银川市| 和政县| 滨州市| 禹城市| 晋中市| 佛冈县| 松桃| 连山| 鄂托克旗| 遂溪县| 通江县| 白河县| 乌兰浩特市| 山丹县| 大理市| 永昌县| 澄城县| 河北省| 洛扎县| 三亚市| 宝应县| 温宿县| 新建县| 淮安市| 革吉县| 古田县| 江孜县| 法库县| 伽师县| 安宁市| 大冶市| 万山特区| 镇江市| 郁南县| 旬邑县| 铜川市| 蒲江县| 莒南县| 上饶市|