SPI 數(shù)據(jù)傳輸可以有兩種方式:同步方式和異步方式。
同步方式:數(shù)據(jù)傳輸?shù)陌l(fā)起者必須等待本次傳輸?shù)慕Y(jié)束,期間不能做其它事情,用代碼來解釋就是,調(diào)用傳輸?shù)暮瘮?shù)后,直到數(shù)據(jù)傳輸完成,函數(shù)才會返回。
異步方式:數(shù)據(jù)傳輸?shù)陌l(fā)起者無需等待傳輸?shù)慕Y(jié)束,數(shù)據(jù)傳輸期間還可以做其它事情,用代碼來解釋就是,調(diào)用傳輸?shù)暮瘮?shù)后,函數(shù)會立刻返回而不用等待數(shù)據(jù)傳輸完成,我們只需設置一個回調(diào)函數(shù),傳輸完成后,該回調(diào)函數(shù)會被調(diào)用以通知發(fā)起者數(shù)據(jù)傳送已經(jīng)完成。
同步方式簡單易用,很適合處理那些少量數(shù)據(jù)的單次傳輸。但是對于數(shù)據(jù)量大、次數(shù)多的傳輸來說,異步方式就顯得更加合適。
對于 SPI 控制器來說,要支持異步方式必須要考慮以下兩種狀況:
對于同一個數(shù)據(jù)傳輸?shù)陌l(fā)起者,既然異步方式無需等待數(shù)據(jù)傳輸完成即可返回,返回后,該發(fā)起者可以立刻又發(fā)起一個
message,而這時上一個message還沒有處理完。
對于另外一個不同的發(fā)起者來說,也有可能同時發(fā)起一次message傳輸請求。
隊列化正是為了為了解決以上的問題,所謂隊列化,是指把等待傳輸?shù)?message 放入一個等待隊列中,發(fā)起一個傳輸操作,其實就是把對應的 message
按先后順序放入一個等待隊列中,系統(tǒng)會在不斷檢測隊列中是否有等待傳輸?shù)?message,如果有就不停地調(diào)度數(shù)據(jù)傳輸內(nèi)核線程,逐個取出隊列中的 message
進行處理,直到隊列變空為止。SPI 通用接口層為我們實現(xiàn)了隊列化的基本框架。
spi_message 就是一次 SPI 數(shù)據(jù)交換的原子操作,不可打斷。
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
2053瀏覽量
66966 -
SPI
+關(guān)注
關(guān)注
17文章
1838瀏覽量
98883 -
同步
+關(guān)注
關(guān)注
0文章
102瀏覽量
19869
發(fā)布評論請先 登錄
SPI數(shù)據(jù)傳輸緩慢問題求解
DSP2812的SPI數(shù)據(jù)傳輸
關(guān)于數(shù)據(jù)傳輸接口
介紹一種STM32數(shù)據(jù)傳輸方式SPI
IIC是什么?IIC數(shù)據(jù)傳輸有哪幾種方式呢
手機的網(wǎng)絡數(shù)據(jù)傳輸方式有哪些?
基于SPI總線的無線數(shù)據(jù)傳輸系統(tǒng)設計

評論