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