SPI是串行外設接口(Serial Peripheral Interface)的縮寫。是Motorola公司推出的一種同步串行接口技術,是一種高速的、全雙工,同步的通訊總線。加密
SPI的通訊原理很簡單,它以主從方式工做,這種模式一般有一個主設備和一個或多個從設備,須要至少4根線:它們是SDI(數據輸入)、SDO(數據輸出)、SCLK(時鐘)、CS(片選)。spa
(1)SDO/MOSI——主設備數據輸出,從設備數據輸入;調試
(2)SDI/MISO——主設備數據輸入,從設備數據輸出;接口
(3)SCLK——時鐘信號,由主設備產生;ip
(4)CS/SS——從設備使能信號,由主設備控制。同步
CS做爲片選信號不難理解。當總線上掛有多個從設備時,主機經過控制對應從設備的片選信號,便可選中激活該設備,完成與該設備的通信。通常片選爲低電平時,處於選中狀態。原理
須要說明的是,SPI通訊有4種不一樣的模式,不一樣的從設備可能在出廠時就是配置爲某種模式,這是不能改變的;但咱們的通訊雙方必須是工做在同一模式下,因此咱們能夠對咱們的主設備的SPI模式進行配置,經過CPOL(時鐘極性)和CPHA(時鐘相位)來控制咱們主設備的通訊模式,具體以下:配置
Mode0:CPOL=0,CPHA=0請求
Mode1:CPOL=0,CPHA=1技術
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1
時鐘極性CPOL是用來配置SCLK的電平出於哪一種狀態時是空閒態或者有效態,時鐘相位CPHA是用來配置數據採樣是在第幾個邊沿。
做爲特殊應用的加密芯片來講,其SPI通信大多數採用標準SPI接口協議,但也不乏例外,調試過程當中有幾點注意:
一、加密芯片做爲防盜版功能模塊或者是數據加解密模塊,大多數需做爲SPI從機設備,上位機端做爲SPI主機。
二、主機SPI設置成CKPOL=0 ,CKPHA=0。其含義:此時空閒態時,SCLK處於低電平,數據採樣是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,因此數據採樣是在上升沿,數據發送是在降低沿。
三、有些加密芯片協議特殊,並且因爲SPI沒有同步信號功能,因此加密芯片須要藉助BUSY引腳來給主機發送通知信號,當BUSY爲高電平,容許SPI主設備發送數據,反之容許主機接收數據。
四、BUSY爲SPI請求信號。當BUSY拉低時容許SPI主設備讀取數據,此時SPI主機端將CS/SS拉低,SPI_CLK產生時鐘。
五、芯片發生故障沒法正常運行時可經過復位重置。