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

評(píng)論