SPI是串行外設接口(Serial Peripheral Interface)的縮寫,SPI是高速的全雙工同步通訊總線,英創公司的所有工控主板都提供了一路4線SPI總線接口,4線包括片選信號(SPI_CSn)、時鐘信號(SPI_SCLK)、數據輸入(SPI_MISO)和數據輸出(SPI_MOSI)信號。
SPI以主從方式工作,英創主板SPI接口工作在主模式,SPI_CSn是SPI從設備的使能控制信號,當從設備被SPI_CSn使能時,通過SPI總線對此設備的操作才有效,因此可以在同一條SPI總線上增加片選信號來連接多個SPI設備。
一個簡單的增加片選的方法是使用GPIO來模擬SPI_CSn信號,在每傳輸一個數據之前,將相應的GPIO置低(假設從設備片選信號為低有效),選中對應的SPI從設備,傳輸結束后再將GPIO置高。SPI總線的連接如下圖:
由于每傳輸一個字(8 - 32bits)都需要操作一次GPIO,所以使用GPIO模擬SPI片選的效率不高。同時這種方法不適用于SPI的DMA傳輸,僅適合數據量少、對傳輸速度要求不同的場合。
當SPI采用DMA模式進行高速數據傳輸時,數據傳輸過程由硬件控制,片選信號也由SPI硬件直接產生輸出,所以無法實現利用GPIO模擬SPI片選,此時可通過硬件電路來擴展SPI片選信號。下面是采用3 - 8譯碼器擴展8路SPI的原理示意圖。在與一個SPI Slave通訊之前,先設置好參與譯碼的GPIO,然后直接調用SPI讀寫API函數,當SPI_CSn由驅動程序置低時,相應的YX輸出低電平,當SPI_CSn為高時,所有的YX都輸出高電平。在與同一SPI設備進行批量數據傳輸時,只需要設置一次GPIO,與使用GPIO直接模擬片選信號相比,效率大大提高了。
英創工控主板的SPI接口可以支持60Mbps甚至更高的波特率,所以需要選擇低延時的邏輯器件,同時英創工控的GPIO電平范圍是0 - 3.3V,因此選擇的器件也應該使用3.3V供電。上圖所用的74LVC138A使用3.3V供電,而且輸入與輸出的延時小于3nS(Typ),滿足SPI高速通訊的應用。最后附上74LVC138A的真值表如下:
-
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35420
發布評論請先 登錄
相關推薦
評論