導航:首頁 > IDC知識 > spi主機

spi主機

發布時間:2020-09-04 09:11:18

1、SPI的工作原理中有一句話:如果只進行寫操作,主機只需忽略接收到的位元組。請問,如何設置主機忽略?

SLAVE是不用主動進行操作的我沒用過STM三二,不過可以從SPI介面的原理來解釋一下,一般都是按我說的方式工作SPI需要設為MASTER/SLAVE,而且必須一方為主,另一方為從,同步的時鍾信號由主設備輸出,從設備根據主設備給出的時鍾信號進行相應操作。主設備:配置好相關寄存器---->寫數據到SPI數據寄存器---->輸出時鍾脈沖的同時將數據移位輸出從設備從設備:配置好相關寄存器---->寫數據到SPI數據寄存器---->隨著主設備輸出的時鍾脈沖同時將數據移位輸出給主設備 由上可知,SPI的收發是同時進行的,這樣就有一些問題需要解釋: 一.主設備想讀從設備的數據,先發命令,這好理解,直接將命令寫到數據寄存器輸出即可,但後面讀數據的過程主設備應該發送什麼?這個問題需要先明白SPI自己並不能支持數據讀寫這樣的操作,而是用戶自己利用SPI介面擴展出來的功能,需要定製相關協議,對於讀從設備數據,數據序列一般如下。主設備:命令位元組一,命令位元組二,...,命令位元組N,任意數據一,任意數據二,...,任意數據M從設備收到命令字後知道是主設備讀數據,就會忽略主設備後面發出的數據,直接將主設備需要讀回的數據回傳給主設備,主設備發任意數據一的時候從設備回所需讀數據第一個位元組,依次類推。需要注意的是,從設備必須在主設備發送任意數據一之前就把第一個位元組寫入SPI數據寄存器,否則主設備讀到的數據會不對。 二.在主設備發數據的時候,如果從設備不寫數據到SPI數據寄存器,主設備會不會收到數據?對於主設備,只要設置成收發同時進行的模式,就是不連從設備,一樣可以收到數據,實際上是每輸出一個時鍾脈沖,主設備就會將SPI發送口設為相應狀態,並從SPI接收口讀一個狀態放入接收移位寄存器,所以從設備不寫數據到SPI數據寄存器,主設備依然可以收到數據。對於這種情況,從設備回傳的數據內容不能確定,理論上講應該是其SPI數據寄存器之前的內容。 三.有的SPI會支持FIFO、DMA等功能,這只是把軟體的工作由硬體來完成,收發流程並沒有什麼不同。 四.你所說的空位元組正確的稱呼應該是啞元位元組(my byte),意思是填充上來湊數的,沒有表示任何實際意義

2、關於SPI通信的幾個問題。。。。。。

SPI通信方式從機不能主動給主機發送數據。因為SPI是全雙工的,主機在發送數據的同時也在接收數據。所以,主機可以通過查詢(發送數據給從機,查看接收到的數據)方式來判斷從機是否有數據發送給主機,如果有,則主機繼續發送數據給從機來獲取從機想要發送給主機的數據。
可以繼續理解下SPI的工作方式~

3、兩台單片機SPI通訊時,為什麼有時兩台都作為主機,這和一台主機一台從機間通訊有什麼區別?

因為你兩個單片機都要問和回答,主從是一台問,一台答,而你現在用的有時候要發送問,接收到對方問的時候還要回答

4、spi主機與從機之間發送與接收,從機如何發送數據給主機?

1.如果用主從機切換的方法的話,切換的時機不好掌握,這個問題在主機和從機都想往對方送信的情況下尤其明顯,比較方便的方法是主機定周期發送數據(也可以是空數據包),同時收取從機數據包,一般情況下都可以滿足通信要求。 2.其實也不是,選用何種通信方式主要是取決於通信協議的要求,還有從設備的介面方式,合適的才是最好的。關於SPI通信從機送信好像還有一種辦法,就是從機有送信要求時給主機一個信號,一般用一個端子電平變化,主機利用外部中斷截獲這個信號,然後驅動通信,應該也可以。

5、spi通信從機如何告訴主機它要發數據

從機不能告訴主機它要發數據,因為數據傳輸都是由主機發起的

6、在spi傳輸協議中,從設備要發數據給主設備,這個過程具體是什麼樣子的?從設備可以很方便的發數據給主設備

利用SPI可以在軟體的控制下構成各種系統。如一個主控制器和幾個從控制器、幾個從控制器相互連接構成多主機系統(分布式系統)、一個主控制器和一個或幾個從I/O設備所構成的各種系統等。在大多數應用場合,可以使用一個主控制器作為主控機來控制數據。

並向一個或幾個從外圍器件傳送該數據。從器件只有在主控機發命令時才能接收或發送數據,其數據的傳輸格式是高位(MSB)在前,低位(LSB)在後。典型的單主系統,該系統只有一台主控制器,其他均為從控制器。


(6)spi主機擴展資料:

SPI有主從兩種工作方式。在主模式下,SPI為其他節點的SPICLK引腳提供串列時鍾,數據從SPISIMO引腳輸出,從SPISOMI引腳輸入。主控制器寫人數據到寄存器SPITXBUF便啟動發送,數據從SPITXBUF傳送到SPIDAT中再通過SPISIMO引腳發送出去,先發送最高位;

同時,主控制器接收到的數據通過SPISOMI引腳移入寄存器SPIDAT的最低位。當選定數量的位數發送完時,整個數據發送完畢。

緊接著接收完畢(通過SPISIMO引腳發送的SPIDAT的數據最高位每移出一位後就會從SPISOMI引腳移人一位到SPIDAT最低位)。首先將接收到的數據傳送到寄存器SPIRXBUF,並進行右對齊,供CPU讀取。

7、spi主設備怎麼選擇spi從設備

1. 與IIC不同,SPI沒有明文標准,只是一種事實標准,對通信操作的實現只作一般的抽象描述,晶元廠商與驅動開發者通過data sheet溝通實現上的細節。因此各種不同的多從機,多主機主要看晶元廠商對晶元的設計。(仔細看datasheet就對了)

2. 多從機的SPI正常的應用會有多根SS線(類似片選線),不同的片選連接不同的從機的SS,想要選擇哪個從機只要拉低相應的SS線就可以了。如果晶元本身沒有多根SS線,可以用普通的IO口模擬,只是這樣一來,通訊開始之前就要先操作IO口了。

8、spi協議從機可以主動傳數據給主機嗎?或者是必須由主機發起?

1.如果用主從機切換的方法的話,切換的時機不好掌握,這個問題在主機和從機都想往對方送信的情況下尤其明顯,比較方便的方法是主機定周期發送數據(也可以是空數據包),同時收取從機數據包,一般情況下都可以滿足通信要求。
2.其實也不是,選用何種通信方式主要是取決於通信協議的要求,還有從設備的介面方式,合適的才是最好的。關於SPI通信從機送信好像還有一種辦法,就是從機有送信要求時給主機一個信號,一般用一個端子電平變化,主機利用外部中斷截獲這個信號,然後驅動通信,應該也可以。

9、當單片機的SPI通信有多個從機時,是不是每一個從機上都要連接一個CSN,另外的SCK,MOSI,MISO都是並聯的?

當單片機的SPI通信有多個從機時,確實是每一個從機上都要連接一個選片信號CSN,另外的SCK,MOSI,MISO都是並聯的。見下圖SPI匯流排的結構圖。


一般情況下,從機少於4、5個時,主機用一個IO腳作從機片選還可以。但從機過多了,就不能採用這種方式片選了,佔用主機IO腳太多了,應該用74HC138實現片選,可節省主機IO腳了。

10、單片機做spi模擬時怎麼知道哪個是主機哪個是從機啊?

CLK MOSI MISO SS,你看片選SS,對主機來說是輸出,叢機來說是輸入 不是嗎?呵呵

與spi主機相關的知識