微控制器模擬spi匯流排-----深入理解spi匯流排協議
spi(serial peripheral inte***cer 序列外設介面)是摩托羅拉公司推出的一種同步序列通訊介面,用於微處理器臌控制器和外圍擴充套件晶元之間的序列連線,現已發展成為一種工業標準,目前,各半導體公司推出了大量的帶有spi介面的具有各種各樣功能的晶元,如ram,eeprom,flashrom,a/d轉換器、d/a轉換器、led/led顯示驅動器、i/o介面晶元、實時時鐘、uart收發器等等,為使用者的外圍擴充套件提供了極其靈活而價廉的選擇。由於spi匯流排介面只占用微處理器四個i/o口線,採用spi匯流排介面可以簡化電路沒計,節省很多常規電路中的介面器件和i/o口線,提高設計的可靠性。
現以 at89c205l微控制器模擬spi匯流排操作序列eeprom 93ca6為例,如圖1所示,介紹利用微控制器的i/o口通過軟體模擬spi匯流排的實現方法。在這裡,僅介紹讀命令的時序和應用子程式。
93ca6作為從裝置,其spi介面使用4條i/o口線:序列時鐘線(sk)、輸出資料線do、輸入資料線di和高電平有效的從機選擇線cs。其資料的傳輸格式是高位(msb)在前,低位(lsb)在後。93c46的spi匯流排介面讀命令時序如圖2所示。
對於不帶spi序列匯流排介面的at89c2051單片 機來說,可以使用軟體來模擬spi的操作,圖1所示 為at89c2051微控制器與序列eeprom 93c46的硬體 連線圖,其中,p1.0模擬spi主裝置的資料輸出端 sdo,p1.2模擬spi的時鐘輸出端sck,p1.3模擬 spi的從機選擇端scs,p1.1模擬spi的資料輸入 sdi。
上電復位後首先先將p1.2(sck)的初始狀態設定為0(空閒狀態)。
讀操作:at89c2051首先通過p1.0口傳送1位起始位(1),2位操作碼(10),6位被讀的資料位址(a5a4a3a2a1a0),然後通過p1.1口讀1位空位(0),之後再讀l6位資料(高位在前)。
寫操作:at89c2051首先通過p1.0口傳送1位起始位(1),2位操作碼(01),6位被寫的資料位址(a5a4a3a2a1a0),之後通過p1.0口傳送被寫的l6位資料(高位在前),寫操作之前要傳送寫允許命令,寫之後要傳送寫禁止命令。
寫允許操作(wen)):寫操作首先傳送1位起始位(1),2位操作碼(00),6位資料(11***x)。
寫禁止操作(wds)):寫操作首先傳送1位起始位(1),2位操作碼(00),6位資料(00***x)。
下面介紹用c51模擬spi的子程式。
[cpp]view plain
copy
print?
//首先定義好i/o口
sbit sdo=p1^0;
sbit sdi=p1^1;
sbit sck=p1^ 2;
sbit scs=p1^3;
sbit acc_7= acc^7;
unsigned int spiread(unsigned char add)
sck=1;/*從裝置時鐘線下降沿后傳送資料,空讀1位資料*/
sck=0;
datal6<<= 1;/*讀16位資料*/
for(i=0;<16;i++)
return datal6;
}
對於不同的序列介面外圍晶元,它們的時鐘時序是不同的。上述子程式是針對在sck的上公升沿輸入(接收)資料和在下降沿輸出(傳送)資料的器件。這些子程式也適用於在序列時鐘)的上公升沿輸入和下降沿輸出的其它各種序列外圍介面晶元,只要在程式中改變p1.2(sck)的輸出電平順序進行相應調整即可。
SPI匯流排協議
spi是乙個環形匯流排結構 由ss cs sck sdi sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位暫存器進行資料交換。假設下面的8位暫存器裝的是待傳送的資料10101010,上公升沿傳送 下降沿接收 高位先傳送。那麼第乙個上公升沿來的時候 資料將會是sdo 1 暫存器 01...
SPI匯流排協議
spi serial peripheral inte ce 序列外圍裝置介面,是一種高速的,全雙工,同步的通訊匯流排,在晶元的管腳上占用四根線。spi是乙個環形匯流排結構,由cs,sck,sdi,sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位暫存器進行資料交換。上公升沿傳送 下降...
TCP協議深入理解
tcp協議在能夠傳送資料之前就建立起了 連線 要實現這個連線,啟動tcp連線的那一方首先將傳送乙個syn資料報。這只是乙個不包含資料的資料報,然後,開啟syn標記。如果另一方同時在它收到syn標記的埠通話,它將發回乙個syn ack syn和ack標誌位都被開啟,並將ack 確認 編號字段設定為剛收...