通訊速率
對于SPI通信并沒有規(guī)范最高的通信速率,在我的開發(fā)經(jīng)驗(yàn)中有見過達(dá)到50Mbit/s的應(yīng)用場景,但通常比較常見的還是10Mbit/s左右。
具體選用多快的通信速度,還得在實(shí)際項(xiàng)目中根據(jù)情況具體設(shè)計(jì),比如:
1、當(dāng)前主從機(jī)的主頻和項(xiàng)目的具體應(yīng)用都與SPI數(shù)據(jù)的處理能力有著直接關(guān)系,一般SPI通信的時(shí)鐘頻率都是來源于主頻分頻,這就在一定程度上限制了其通信速率上限。
即使能夠達(dá)到較高速的速率,而處理器還需要處理更多的業(yè)務(wù)邏輯,再去處理SPI數(shù)據(jù)也是不夠及時(shí)的,此時(shí)高速率并沒有太大的意義了。
2、SPI硬件PCB布線長度等等影響著線路阻抗,這也同樣限制了通信速率,一般通信距離越長,通信速度越低,否則容易造成通信不穩(wěn)定。
特別是通信線路經(jīng)過一些干擾源更是影響其穩(wěn)定性,所以SPI作為一種相對高速的通信方式,一般都不會(huì)用于長距離通信中,而是大量用于微處理器與外部SPI接口的設(shè)備之間的通信,比如高速采樣芯片ADC、處理器之間等等。
3、前面說了即使SPI主機(jī)能夠達(dá)到較高的通信速率,但從機(jī)主頻或者數(shù)據(jù)處理能力不夠,這樣也是沒有太大意義的,當(dāng)你可以通過配置從機(jī)為接收隊(duì)列或者DMA等方式進(jìn)行優(yōu)化,當(dāng)然高速率在多機(jī)中能夠減少同步延時(shí)。
值得注意的是一些芯片標(biāo)稱的最高通信速率,是在比較好的外界條件下的測試值,超過了該標(biāo)稱值可能也能用,但并不會(huì)很穩(wěn)定,容易導(dǎo)致通信異常。
所以具體選用多快的通信速度,還需根據(jù)實(shí)際情況分析確認(rèn)。
容錯(cuò)性
SPI不像IIC那樣存在應(yīng)答機(jī)制,也沒有流控制機(jī)制,當(dāng)從機(jī)配置較低,如果一個(gè)報(bào)文還沒處理完,后一個(gè)報(bào)文又到來,導(dǎo)致傳輸錯(cuò)亂,其通信過程幾乎都是靠硬件來保證數(shù)據(jù)的傳輸穩(wěn)定性,是一種不可靠傳輸。
當(dāng)然如果是用于多機(jī)通信倒是可以通過制定可靠性校驗(yàn)協(xié)議來保證傳輸數(shù)據(jù)的穩(wěn)定,但這也在一定程度上會(huì)降低通信的有效數(shù)據(jù)傳輸速度。
像stm32的SPI外設(shè)發(fā)送和接收都存在獨(dú)立的CRC校驗(yàn)功能,大致的原理就是使用CRC在每個(gè)位上進(jìn)行串行計(jì)算,然后在最后一次數(shù)據(jù)傳輸結(jié)束時(shí)來傳輸CRC校驗(yàn)值,接受方接收到CRC以后自動(dòng)拿著數(shù)據(jù)和CRC值進(jìn)行比對,看是與否有數(shù)據(jù)故障,如果存在傳輸問題就會(huì)置位相應(yīng)的CRC故障標(biāo)志位告知。
當(dāng)然如果所選用的芯片SPI外設(shè)沒有獨(dú)立CRC模塊可以模擬類似的操作進(jìn)行處理,只是相對比較耗時(shí),畢竟這個(gè)CRC得軟件自己處理。
stm32的SPI外設(shè)的靈活度遠(yuǎn)不止這些,比如配置成雙線單向模式等,可以把MISO和MOSI都向一個(gè)方向傳輸,從而提高一倍的傳輸速度,感興趣可以參考一下手冊玩一下。
審核編輯:劉清
-
SPI
+關(guān)注
關(guān)注
17文章
1724瀏覽量
92255 -
PCB布線
+關(guān)注
關(guān)注
21文章
463瀏覽量
42156 -
SPI通信
+關(guān)注
關(guān)注
0文章
35瀏覽量
11436
發(fā)布評論請先 登錄
相關(guān)推薦
![](https://file1.elecfans.com/web2/M00/BE/E8/wKgaomWvi0uAIyFeAAHfG6JEnoU330.jpg)
SPI通訊協(xié)議你真的懂嗎?5分鐘教#SPI #總線 #串口通訊 #通訊 #電路知識 #電子工程師 #科工機(jī)械
關(guān)于STM32的SPI主從雙機(jī)通訊問題
SPI通訊錯(cuò)誤問題解決
nrf24l01+和stm32的spi通訊需要設(shè)置nrf24l01+的spi波特率嗎
Compact Rio下NI9401如何通過SPI通訊采集加速度信號?
nrf24l01+和stm32的spi通訊要設(shè)置nrf24l01+的spi波特率嗎?是在哪段代碼設(shè)置的
容錯(cuò)CAN收發(fā)器TJA1054電子資料
硬件SPI與軟件模擬SPI速度區(qū)別
兩塊STM32之間SPI通訊進(jìn)行的注意事項(xiàng)
硬件SPI與軟件模擬SPI速度區(qū)別實(shí)測
![硬件<b class='flag-5'>SPI</b>與軟件模擬<b class='flag-5'>SPI</b><b class='flag-5'>速度</b>區(qū)別實(shí)測](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
SPI通訊協(xié)議介紹
![<b class='flag-5'>SPI</b><b class='flag-5'>通訊</b>協(xié)議介紹](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
SPI通訊協(xié)議必備知識。
![<b class='flag-5'>SPI</b><b class='flag-5'>通訊</b>協(xié)議必備知識。](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
該如何提高代碼容錯(cuò)率、降低代碼耦合度?
![該如何提高代碼<b class='flag-5'>容錯(cuò)</b><b class='flag-5'>率</b>、降低代碼耦合度?](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
評論