新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 串行外圍接口SPI功能模塊的設(shè)計(jì)

串行外圍接口SPI功能模塊的設(shè)計(jì)

作者: 時(shí)間:2011-02-22 來(lái)源:網(wǎng)絡(luò) 收藏

  2.3 工作模式

  SPI有兩種工作模式,可以通過外部引腳跳線的方式來(lái)切換。

  主模式:發(fā)送和接收可以同時(shí)工作在主模式下。

  主模式的顯著特征是不論是發(fā)送還是接收始終有SCLK信號(hào),發(fā)送操作是由向發(fā)送FIFO中寫數(shù)據(jù)而觸發(fā)的。在主模式下,時(shí)鐘信號(hào)的1次作用對(duì)應(yīng)一位數(shù)據(jù)的發(fā)送(MOSI)和另一位數(shù)據(jù)的接收(MISO)。

  如圖3所示,在主片中數(shù)據(jù)從移位寄存器中自右向左發(fā)出送到從片(MOSI),同時(shí)從片中的數(shù)據(jù)自左向右發(fā)到主片(MISO),經(jīng)過8位時(shí)鐘周期完成1個(gè)字節(jié)的發(fā)送。輸入字節(jié)保留在移位寄存器中,此時(shí)SPI INT FLAG位自動(dòng)置位(如果有中斷設(shè)置,則產(chǎn)生中斷),移位寄存器的數(shù)據(jù)將被鎖存到接收FIFO中,此后對(duì)接收FIFO的讀操作將把數(shù)據(jù)讀出。

  從模式:發(fā)送和接收同時(shí)工作在從模式下。從模式的顯著特征是:不論是發(fā)送還是接收始終必須在SCLK信號(hào)作用下進(jìn)行,并且SSN信號(hào)必須有效。

  當(dāng)SSN信號(hào)無(wú)效時(shí),數(shù)據(jù)的發(fā)送無(wú)法進(jìn)行并且輸入的數(shù)據(jù)視為無(wú)效。數(shù)據(jù)的發(fā)送和接收過程見圖3所示,與主模式下基本相似,只是移位寄存器的數(shù)據(jù)移出和輸入方向與之相反。

主片和從片發(fā)送和接收操作


圖3 主片和從片發(fā)送和接收操作

  3 SPI模塊功能設(shè)計(jì)

  3.1 模塊劃分

  根據(jù)功能定義及SPI的工作原理,將整個(gè)SPI IP劃分為8個(gè)子模塊:APB接口模塊、時(shí)鐘分頻模塊、發(fā)送數(shù)據(jù)FIFO模塊、接收數(shù)據(jù)FIFO模塊、寄存器控制模塊、命令解析模塊、中斷處理模塊及發(fā)送接收數(shù)據(jù)模塊。整個(gè)SPI模塊劃分結(jié)構(gòu)圖如圖4所示。

數(shù)據(jù)傳輸結(jié)構(gòu)


圖4 數(shù)據(jù)傳輸結(jié)構(gòu)

  在這些模塊中,Tx—FIFO和Rx—FIFO用來(lái)做接收發(fā)送數(shù)據(jù)的FIFO。DMA/INT是中斷控制模塊,通知或者DMA發(fā)送或者接收數(shù)據(jù)的FIFO。CMD ANALYSIS模塊用來(lái)解析在從模式下Host發(fā)過來(lái)的命令。CTRl/Register用來(lái)放置寄存器,供讀寫配置SPI的各種參數(shù)。Shifter用來(lái)做串并轉(zhuǎn)換,收發(fā)送數(shù)據(jù)。Clock模塊用來(lái)產(chǎn)生主模式下時(shí)鐘。

  3.2 設(shè)計(jì)方案

  通過深入分析SPI的四種傳輸協(xié)議可以發(fā)現(xiàn),根據(jù)一種協(xié)議,只要對(duì)串行同步時(shí)鐘進(jìn)行轉(zhuǎn)換,就能得到其余的三種協(xié)議。為了簡(jiǎn)化設(shè)計(jì),規(guī)定如果要連續(xù)傳輸多個(gè)數(shù)據(jù),在兩個(gè)數(shù)據(jù)傳輸之問插入一個(gè)串行時(shí)鐘的空閑等待,這樣狀態(tài)機(jī)只需兩種狀態(tài)(空閑和工作)就能正確工作。相比其它設(shè)計(jì),在基本不降低性能的前提下,思路比較精煉、清晰,能夠大大縮短寫代碼的時(shí)間,降低出錯(cuò)率。

  此SPI模塊有兩種工作方式:查詢方式和DMA方式。查詢方式通過處理器核監(jiān)視SPI的狀態(tài)寄存器來(lái)獲取其所處的狀態(tài),從而決定下一步動(dòng)作。

  DMA方式由DMA模塊控制數(shù)據(jù)在內(nèi)存和SPI間的交換,而不需要處理器核的參與,有效提高了總線利用率。

  外部可以通過和內(nèi)部MCU通訊的方式,把從模式的SPI配置成可以解析命令的模式,這樣外部主模式的SPI可以在SSN低電平的時(shí)候連續(xù)傳輸多位數(shù)據(jù),在下降沿的第一個(gè)數(shù)據(jù)被認(rèn)為是命令。從模式的SPI可以解析這些命令然后做相應(yīng)的操作。這些操作主要包括,清除接收FIFO或者發(fā)送FIFO中的數(shù)據(jù),選擇MCU或者DMA來(lái)作為數(shù)據(jù)交互的對(duì)象等,可以大大節(jié)省和MCU交互所需要的帶寬。

  作為主要組成部分的寄存器控制模塊和SPI核心模塊采用同步電路設(shè)計(jì),它們之間的通訊采用異步電路設(shè)計(jì)。這些主要是考慮到SPI的帶寬通過MCU的控制是可調(diào)的。SPI核心部分的時(shí)鐘頻率可調(diào),可實(shí)現(xiàn)多種帶寬,增加了本設(shè)計(jì)SPI的靈活性。



關(guān)鍵詞: MCU

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉