新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 串行外圍接口SPI功能模塊的設計

        串行外圍接口SPI功能模塊的設計

        作者: 時間:2011-02-22 來源:網絡 收藏

          2.3 工作模式

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

          主模式:發送和接收可以同時工作在主模式下。

          主模式的顯著特征是不論是發送還是接收始終有SCLK信號,發送操作是由向發送FIFO中寫數據而觸發的。在主模式下,時鐘信號的1次作用對應一位數據的發送(MOSI)和另一位數據的接收(MISO)。

          如圖3所示,在主片中數據從移位寄存器中自右向左發出送到從片(MOSI),同時從片中的數據自左向右發到主片(MISO),經過8位時鐘周期完成1個字節的發送。輸入字節保留在移位寄存器中,此時SPI INT FLAG位自動置位(如果有中斷設置,則產生中斷),移位寄存器的數據將被鎖存到接收FIFO中,此后對接收FIFO的讀操作將把數據讀出。

          從模式:發送和接收同時工作在從模式下。從模式的顯著特征是:不論是發送還是接收始終必須在SCLK信號作用下進行,并且SSN信號必須有效。

          當SSN信號無效時,數據的發送無法進行并且輸入的數據視為無效。數據的發送和接收過程見圖3所示,與主模式下基本相似,只是移位寄存器的數據移出和輸入方向與之相反。

        主片和從片發送和接收操作


        圖3 主片和從片發送和接收操作

          3 SPI模塊功能設計

          3.1 模塊劃分

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

        數據傳輸結構


        圖4 數據傳輸結構

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

          3.2 設計方案

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

          此SPI模塊有兩種工作方式:查詢方式和DMA方式。查詢方式通過處理器核監視SPI的狀態寄存器來獲取其所處的狀態,從而決定下一步動作。

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

          外部可以通過和內部MCU通訊的方式,把從模式的SPI配置成可以解析命令的模式,這樣外部主模式的SPI可以在SSN低電平的時候連續傳輸多位數據,在下降沿的第一個數據被認為是命令。從模式的SPI可以解析這些命令然后做相應的操作。這些操作主要包括,清除接收FIFO或者發送FIFO中的數據,選擇MCU或者DMA來作為數據交互的對象等,可以大大節省和MCU交互所需要的帶寬。

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



        關鍵詞: MCU

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 汉沽区| 邢台县| 油尖旺区| 商河县| 吉林市| 密云县| 乌鲁木齐县| 昌平区| 彭泽县| 墨玉县| 昌乐县| 南江县| 绥阳县| 尖扎县| 凤翔县| 沾益县| 万宁市| 开江县| 监利县| 芮城县| 滨州市| 钟祥市| 嘉禾县| 岳阳市| 河北区| 措勤县| 沅陵县| 新绛县| 治县。| 桃园市| 莱阳市| 贡觉县| 庆云县| 丰原市| 孝义市| 吉林市| 义马市| 绥阳县| 乌苏市| 大同县| 通道|