劉悅
【摘要】 標(biāo)準(zhǔn)RS232接口常用于單片機(jī)或微處理機(jī)配合PC上位機(jī)進(jìn)行串口通信,SPI總線可以使處理器與外部設(shè)備以串行方式通信。本文介紹了RS232接口與SPI串行通信接口在可編程邏輯器件中實(shí)現(xiàn)通信協(xié)議轉(zhuǎn)換,實(shí)現(xiàn)PC端對外圍設(shè)備(SPI接口)的調(diào)試與控制使用。
【關(guān)鍵字】 協(xié)議轉(zhuǎn)換 FPGA 串口通信 SPI總線
一、 前言
SPI總線廣泛應(yīng)用于Flash存儲(chǔ)器、ADC/DAC器件、數(shù)字信號處理機(jī)、實(shí)時(shí)時(shí)鐘。它在器件僅占用4根引腳控制數(shù)據(jù)的傳輸,線路簡單,節(jié)省布局空間。由于PC沒有SPI接口,PC無法實(shí)現(xiàn)對這類外圍器件的直接通信,在某種程度上,增加調(diào)試的難度。因此,本文利用可編程邏輯器件(FPGA)設(shè)計(jì)通信協(xié)議轉(zhuǎn)換邏輯,實(shí)現(xiàn)RS232與SPI的協(xié)議轉(zhuǎn)換,間接完成PC對外圍器件的數(shù)據(jù)傳輸。
二、設(shè)計(jì)思路
SPI作為一種同步串行接口技術(shù),實(shí)現(xiàn)處理器與器件的全雙工高速通信。而RS232則是一種異步串口通信接口,因此使用PC的RS232接口無法直接對具有SPI總線接口的器件進(jìn)行操作。因此,設(shè)計(jì)中選用FPGA作為完成通信協(xié)議轉(zhuǎn)換的橋梁。FPGA邏輯設(shè)計(jì)靈活,可設(shè)計(jì)RS232接口電路完成對PC端串口數(shù)據(jù)的接收。解析串口協(xié)議后,獲取操作器件的有用信息,通過SPI接口將數(shù)據(jù)傳輸至器件本身,最終實(shí)現(xiàn)PC對FPGA外圍器件的控制。當(dāng)然,協(xié)議轉(zhuǎn)換的過程是可逆的,器件信息也可通過SPI回傳至FPGA,供PC讀取使用。
設(shè)計(jì)中電路較為簡單,使用MAX3232完成RS232電平到TTL電平轉(zhuǎn)化,便于FPGA與PC上位機(jī)正常通信使用。電路結(jié)構(gòu)框圖如圖2-1所示:
三、協(xié)議轉(zhuǎn)換流程
協(xié)議轉(zhuǎn)換過程分為FPGA與PC的異步串口通信,F(xiàn)PGA與外圍器件的SPI同步串行通信。
在PC與FPGA通信中,F(xiàn)PGA檢測PC端發(fā)送信號標(biāo)志,即自身RXD信號拉低,串口通信起始位開始,此時(shí)FPGA開始進(jìn)行數(shù)據(jù)接收。PC對外圍器件的控制指令依次發(fā)送至FPGA用作解析,在PC發(fā)送數(shù)據(jù)量較大的情況下,為避免數(shù)據(jù)在通信中出錯(cuò),便于對器件的靈活控制,可對PC端數(shù)據(jù)幀打包修飾,方便FPGA解析控制器件的可靠指令。FPGA的TXD引腳可向PC端返回外圍器件的可用信息。
在FPGA解析串口數(shù)據(jù)后,可執(zhí)行對外圍器件的驅(qū)動(dòng)操作。FPGA將PC對外圍器件的控制指令,在SDI,CS,SCLK引腳的配合下發(fā)送至目標(biāo)器件。SPI通信中,CS信號始終拉低,系統(tǒng)共用SCLK時(shí)鐘脈,在上升沿模式下,數(shù)據(jù)SDI在SCLK上升沿輸入至器件,在SCLK下升沿由FPGA改變數(shù)據(jù)SDI的值。當(dāng)器件需要返回FPGA內(nèi)部信息時(shí),數(shù)據(jù)在CS,SCLK的協(xié)同下,由SDO發(fā)送至FPGA。
FPGA操作流程圖如圖3-1所示:
四、 總結(jié)
使用可編程邏輯器件FPGA作為通信協(xié)議轉(zhuǎn)換芯片,設(shè)計(jì)靈活,拓展性強(qiáng),可用于RS232轉(zhuǎn)SPI總線、I2C總線、CAN總線等的協(xié)議轉(zhuǎn)換。本文中利用FPGA可實(shí)現(xiàn)RS232與SPI的協(xié)議轉(zhuǎn)換,間接完成PC上位機(jī)對某些具有SPI總線接口器件的直觀控制。PC通過發(fā)送簡單的串口指令至FPGA解析,由FPGA通過SPI接口實(shí)現(xiàn)對外圍器件的配置操作,解決了以往收、發(fā)端,因通信協(xié)議不匹配,導(dǎo)致無法進(jìn)行數(shù)據(jù)交互的弊端,具有較高的使用價(jià)值。
參 考 文 獻(xiàn)
[1]李忠橋, 游小杰, 鄭瓊林. 單片機(jī)SPI通信中數(shù)據(jù)流的同步問題研究[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2007(1):11-13.
[2]蘇明, 姚冬蘋. 專用異步串口通信電路的FPGA實(shí)現(xiàn)[J]. 物聯(lián)網(wǎng)技術(shù), 2011(3):65-67.
[3]張海林, 楊勇. 自動(dòng)化系統(tǒng)中的串行通信協(xié)議的設(shè)計(jì)[J]. 計(jì)算機(jī)工程與應(yīng)用, 2003, 39(31):159-160.
[4]丁超, 范征宇. 通信協(xié)議轉(zhuǎn)換在嵌入式控制器上的實(shí)現(xiàn)[J]. 自動(dòng)化儀表, 2007, 28(9):35-37.
[5]桑偉, 王少榮. 基于ARM的通信協(xié)議轉(zhuǎn)換器的設(shè)計(jì)[J]. 電工技術(shù), 2007(4):44-46.
[6]王謙, 張洪濤, 張棟冰,等. 基于嵌入式控制器的通信協(xié)議轉(zhuǎn)換[J]. 湖北工業(yè)大學(xué)學(xué)報(bào), 2005, 20(6):11-14.