通訊速率
對(duì)于SPI通信并沒(méi)有規(guī)范最高的通信速率,在我的開(kāi)發(fā)經(jīng)驗(yàn)中有見(jiàn)過(guò)達(dá)到50Mbit/s的應(yīng)用場(chǎng)景,但通常比較常見(jiàn)的還是10Mbit/s左右。
具體選用多快的通信速度,還得在實(shí)際項(xiàng)目中根據(jù)情況具體設(shè)計(jì),比如:
1、當(dāng)前主從機(jī)的主頻和項(xiàng)目的具體應(yīng)用都與SPI數(shù)據(jù)的處理能力有著直接關(guān)系,一般SPI通信的時(shí)鐘頻率都是來(lái)源于主頻分頻,這就在一定程度上限制了其通信速率上限。
即使能夠達(dá)到較高速的速率,而處理器還需要處理更多的業(yè)務(wù)邏輯,再去處理SPI數(shù)據(jù)也是不夠及時(shí)的,此時(shí)高速率并沒(méi)有太大的意義了。
2、SPI硬件PCB布線長(zhǎng)度等等影響著線路阻抗,這也同樣限制了通信速率,一般通信距離越長(zhǎng),通信速度越低,否則容易造成通信不穩(wěn)定。
特別是通信線路經(jīng)過(guò)一些干擾源更是影響其穩(wěn)定性,所以SPI作為一種相對(duì)高速的通信方式,一般都不會(huì)用于長(zhǎng)距離通信中,而是大量用于微處理器與外部SPI接口的設(shè)備之間的通信,比如高速采樣芯片ADC、處理器之間等等。
3、前面說(shuō)了即使SPI主機(jī)能夠達(dá)到較高的通信速率,但從機(jī)主頻或者數(shù)據(jù)處理能力不夠,這樣也是沒(méi)有太大意義的,當(dāng)你可以通過(guò)配置從機(jī)為接收隊(duì)列或者DMA等方式進(jìn)行優(yōu)化,當(dāng)然高速率在多機(jī)中能夠減少同步延時(shí)。
值得注意的是一些芯片標(biāo)稱的最高通信速率,是在比較好的外界條件下的測(cè)試值,超過(guò)了該標(biāo)稱值可能也能用,但并不會(huì)很穩(wěn)定,容易導(dǎo)致通信異常。
所以具體選用多快的通信速度,還需根據(jù)實(shí)際情況分析確認(rèn)。
容錯(cuò)性
SPI不像IIC那樣存在應(yīng)答機(jī)制,也沒(méi)有流控制機(jī)制,當(dāng)從機(jī)配置較低,如果一個(gè)報(bào)文還沒(méi)處理完,后一個(gè)報(bào)文又到來(lái),導(dǎo)致傳輸錯(cuò)亂,其通信過(guò)程幾乎都是靠硬件來(lái)保證數(shù)據(jù)的傳輸穩(wěn)定性,是一種不可靠傳輸。
當(dāng)然如果是用于多機(jī)通信倒是可以通過(guò)制定可靠性校驗(yàn)協(xié)議來(lái)保證傳輸數(shù)據(jù)的穩(wěn)定,但這也在一定程度上會(huì)降低通信的有效數(shù)據(jù)傳輸速度。
像stm32的SPI外設(shè)發(fā)送和接收都存在獨(dú)立的CRC校驗(yàn)功能,大致的原理就是使用CRC在每個(gè)位上進(jìn)行串行計(jì)算,然后在最后一次數(shù)據(jù)傳輸結(jié)束時(shí)來(lái)傳輸CRC校驗(yàn)值,接受方接收到CRC以后自動(dòng)拿著數(shù)據(jù)和CRC值進(jìn)行比對(duì),看是與否有數(shù)據(jù)故障,如果存在傳輸問(wèn)題就會(huì)置位相應(yīng)的CRC故障標(biāo)志位告知。
當(dāng)然如果所選用的芯片SPI外設(shè)沒(méi)有獨(dú)立CRC模塊可以模擬類似的操作進(jìn)行處理,只是相對(duì)比較耗時(shí),畢竟這個(gè)CRC得軟件自己處理。
stm32的SPI外設(shè)的靈活度遠(yuǎn)不止這些,比如配置成雙線單向模式等,可以把MISO和MOSI都向一個(gè)方向傳輸,從而提高一倍的傳輸速度,感興趣可以參考一下手冊(cè)玩一下。
審核編輯:劉清
-
SPI
+關(guān)注
關(guān)注
17文章
1669瀏覽量
90742 -
PCB布線
+關(guān)注
關(guān)注
19文章
462瀏覽量
41938 -
SPI通信
+關(guān)注
關(guān)注
0文章
35瀏覽量
11319
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論