協議類基礎——SPI

PO8·發表於2020-12-10

注意:有的開發板可能沒有自帶SPI
本篇隨便找了一個SPI的晶片手冊

相關引腳

MCU或SOC上的SPI相關引腳如下
M——master
O——output
I——input

S——slave(從屬)
在這裡插入圖片描述
某SPI晶片
在這裡插入圖片描述
對應如下
在這裡插入圖片描述

接線

在這裡插入圖片描述

  • SPICLK(時鐘訊號)——CSerial Clock)
    由使用SPI傳送資料的開發板給出時鐘訊號
  • SPIMOSI(SPI OUTPUT)——D(Serial Data Input)
    開發板的傳送端接上SPI晶片的接收端
  • SPIMISO(SPI INPUT)——Q(Serial Data Input)
    開發板的輸出接上SPI晶片的輸入
  • GPIO——Chip Selecct
    隨便一個GPIO設定成輸出,連線SPI晶片上的片選引腳
    SPI匯流排允許多個裝置接入,那麼怎麼分辨不同的裝置——片選引腳
    片選引腳為低電平,則選定裝置
  • Write Protect防寫
    當電平為低時,不允許寫入該晶片,只能讀
  • HOLD暫停所有操作
    低電平有效

如果不想用防寫和暫停,直接把這兩根接到電源,一直給高電平就可以了

SPI協議

在這裡插入圖片描述
在這裡插入圖片描述
對於這一款晶片,地址的A8在第一個位元組的bit3,其他晶片不一定是這樣的格式
這款晶片記憶體是512位元組,需要9個地址位,其他的一般是8個

因為是讀,所以要先寫入地址,告訴SPI晶片要讀的位置
然後SPI晶片將這個地址裡的資料給到讀它的裝置

片選引腳

  • 不使用時是高電平
  • 給與低電平後,裝置開始工作

Clock

  • SPI晶片被選中時,晶片的時鐘不斷髮送脈衝
    每來一個時鐘,傳送一個位的資料

D(serial data input)

  • 第一個位元組
    第0到2個位元組是0
    第三個位元組是的地址的第9位
    bit4和5是0
    bit6和7是11,表示讀
  • 第二個位元組
    地址的剩餘8位

Q(serial data input)

  • SPI晶片接收到兩個位元組的訊號後,知道了要讀的地址
    在第三個位元組的時序,將次地址的資訊傳送給讀取的裝置

在這裡插入圖片描述
和讀差不多

只是SPI晶片不用返回資料給連線的MCU

D(serial data input)

  • 第一個位元組
    最後兩位是10,表示寫
    其餘和上面一樣
  • 第二個位元組
    傳送要寫的地址
  • 第三個位元組
    傳送要寫入的資料

SPI控制器

例如2440
2440傳送的時鐘一定要滿足外接的SPI晶片
在這裡插入圖片描述
如這款SPI的晶片,能接受的最大達的頻率是5MHz
在這裡插入圖片描述
↑有相應的暫存器可以設定時鐘的頻率
2440最大能傳送25MHz的時鐘,但SPI只能接受5MHz的頻率,所以要配置

相關文章