SPI 總線技術是Motorola公司推出的一種同步串行接口。它可以使MCU與各種外圍設備以串行方式進行通信以交換信息,并且硬件連接較少,編程方便。 SPI接口已經是一種標準外設接口,目前已有很多MCU及外設都帶有SPI接口。MCS51雖然也有帶SPI接口的單片機——AT89S8252,但價格相對較高。在開發基于RFID的自助語音導游系統中,由于RFID讀卡模塊帶有SCI接口,XF-S4240語音合成模塊帶有SCI及SPI接口,如采用不帶有SPI接口的AT89C51單片機,必然存在擴展接口的問題。本文介紹的C51軟件模擬實現SPI通信接口的方法,編程簡單,有效降低了系統的成本。該方法已在項目開發中得到了驗證。 1 語音模塊XF-S4240 XF-S4240中文語音合成模塊是中科大訊飛信息科技有限公司面向高端應用推出的嵌入式中文語音合成模塊,可支持任意的中文文本、英文字母的語音合成。該模塊可以通過異步串口(UART)、SPI接口及I2C總線3種方式接收待合成的文本,直接合成為語音輸出。 XF-S4240語音模塊封裝成16引腳形式,其13~16腳就是SPI通信接口。 其命令格式由幀頭、數據長度區及數據區3部分組成。如要合成“歡迎您參觀莫高窟。”,只需對模塊發送格式為GB2312的文本代碼: 其中0xFD為幀頭,0x00為數據區長度的高字節,0x14為數據區長度的低字節(注意:長度字節為合成代碼字節長+2),0x01為語音合成命令,0x00為GB2312的命令碼。0xBB、0xB6為“歡”的GB2312碼,0xD3、0xAD為“迎”的G132312碼……0xA1、 0xA3為“!钡腉B2312碼。 2 XF-S4240的SPl通信方式 2.1 XF-S4240的SPI通信說明 XF-S4240模塊的SPI接口是4線全雙工同步串行通信接口。模塊在SPI通信中設置為Slave身份,SPI通信所需的時鐘信號由上位機提供,即上位機作為SPI通信中的Master身份,傳輸數據的位數為8位。 圖 1是SPI通信的時序。SPI通信屬于同步串行通信。在與模塊的通信中,上位機將提供SCK同步時鐘信號。在SCK的上升沿,模塊和上位機同時鎖存1位數據,每傳輸8位數據完成1字節數據的傳輸。使用SSEL選擇使能信號,是為了方便用戶在SPI通信接口上掛接多個XF-S4240板卡(或其他SPI接口的設備)。在與選定的XF-S4240板卡通信時,要將此設備的SSEL置為低電平,否則無法正常通信。 在本項目中,單片機是主設備,語音模塊是從設備。主模式的顯著特征是:不論是發送還是接收,始終有SPI-CLK信號,SPISTE信號不是必需的。因為SPI串口只能有1片主機,因而不存在主機選擇問題,而且主模式下,同步時鐘SPICLK應由主機提供。 2.2 SPI通信的工作原理 要模擬SPI接口的工作過程,必須先了解SPI通信的工作原理。 在主機發送數據時,直接將要發送的數據寫到主機的數據發送寄存器SPIDAT。這個寫操作就自動地啟動了主機的發送過程,即在同步時鐘SPICLK的節拍下將SPIDAT的內容按位送到引腳SPISIMO上。經過8位時鐘周期完成1字節的發送。當SPIDAT的內容移送完畢時,硬件將置一個中斷標志 SPIINT FLAG,通知主機這個數據塊發送完畢。 對于從機,在同步時鐘SPICLK的作用下,將引腳SPISI-MO上的數據按位接收到移位寄存器SPIDAT。當一個完整的數據塊接收完畢后,將置一個中斷標志SPIINT FLAG,通知從機這個數據塊接收完畢;同時將這個數據塊的內容復制到從機的SPI數據接收寄存器SPIRXBUF中,并進行右對齊。SPI通信中主機和從機的連接如圖2所示。 3 軟件模擬SPI接口的實現 3.1 XF-S4240語音模塊與單片機的連接 本設計中,AT89C51的SCI接口已被RFID讀卡模塊WM-01TA占用,由于AT89C51不帶有SPI接口,需要用I/O口模擬實現SPI接口來實現與XF-S4240的通信。為了保持電路與AT89S8252電路的一致性,在AT89C51的P1口(其中的P1.4~P1.7)上擴展了SPI接口。 SS(P1.4):從使能輸入腳,低電平有效。 MOSI(P1.5):主數據輸出或從數據輸入腳。 MISO(P1.6):主數據輸入或從數據輸出腳。 SCK(P1.7):主時鐘輸出或從時鐘輸入腳。 CS(P1.1):片選。 RST(P1.0):語音模塊復位。 XF-S4240與單片機的連接如圖3所示。 3.2 虛擬SPI通信的軟件模擬流程及驗證 虛擬與SPI流程如圖4所示。 虛擬SPI通信程序及驗證如下: 利用此SPI通信子程序,實現了需要的語音合成功能。 結語 SPI接口現已廣泛應用于各種數字電路中,能夠與很多種微處理器及外設相連。在沒有設置SPI專用接口的場合,采用虛擬SPI的方法是一種簡便易行的解決方案。實踐證明,虛擬SPI時序技術實現的通信具有簡單、穩定、易用的特點,對于提高系統的性價比有現實意義。 |