1.SPI子系統框圖詳解:
SPI總線上有兩類設備:一類是主控端,通常作為SOC系統的一個子模塊出現,比如很多嵌入式MPU中都常常包含SPI模塊。一類是受控端,例如一些SPI接口的Flash、傳感器等等。主控端是SPI總線的控制者,通過使用SPI協議主動發起SPI總線上的會話。而受控端則被動接受SPI主控端的指令,並作出響應的響應。
如圖1所示,linux下的spi子系統主要涉及3個部分:spi核心、spiprotocol驅動和spi主控制器驅動。如圖1.1,spi核心負責抽象出所有控制器都具備的功能代碼,同時向上為spiprotocol驅動提供接口比如spi_message、spi_transfer,spi_async等,具體可參見linux/spi/spi.h文件,需要自己寫客戶驅動的可以詳細了解一下spi.h文件。
spi控制器驅動負責與具體的控制器硬件溝通,進行bit級的數據傳輸。
spi客戶驅動,即protocol驅動負責從控制器端接收數據,然後按照“protocol”將其解釋為有意義的數據格式。
圖2則顯示了Linux下SPI子系統所涉及的大部分結構和函數調用,其中一些細節可以在這裡找到你想要得。