C51 模擬spi協議

2021-06-16 15:52:09 字數 1992 閱讀 7671

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的子程式。

//設定io口

sbit sck = p1^2;

sbit scs = p1^3;

sbit sdo = p1^0;

sbit sdi = p1^1;

int spi_read(unsigned char addr)

sck = 1; //下降沿接收空位

sck = 0;

data=data<<1;

for(i = 0;i< 16;i ++) //讀取16位資料

return data;

}int spi_write(unsigned char addr,unsigned int data_16)

sdo = 1; //起始位(1)

sck = 0;

sck = 1; //首先傳送1位起始位(1)

for(i = 0; i < 16;i++)

//寫入16位資料

sdo = 1; //起始位(1)

sck = 0;

sck = 1; //首先傳送1位起始位(1)

for(i = 0; i < 8; i ++) //寫禁止操作

return 0;

}

對於不同的序列介面外圍晶元,它們的時鐘時序是不同的。上述子程式是針對在sck的上公升沿輸入(接收)資料和在下降沿輸出(傳送)資料的器件。這些子程式也適用於在序列時鐘)的上公升沿輸入和下降沿輸出的其它各種序列外圍介面晶元,只要在程式中改變p1.2(sck)的輸出電平順序進行相應調整即可。

模擬SPI傳輸協議

spi傳輸協議最重要的是相位和極性,通俗講是spi時鐘空閒時是高電平或低,取樣模式是上公升沿或下降沿。硬體spi一般廠家給予庫函式使用,只需要根據demo稍做修改即可,但是需要對主控晶元有個大體了解,移植起來不方便。軟體spi是通過i o口模擬spi通訊的協議,簡單快速,移植性好,但是要根據時序圖配...

c51為啥要巨集定義時鐘 c51時鐘

程式效果 時鐘,包括時間可調,定時到了鬧鐘響,用蜂鳴器,本程式已經除錯通過 喇叭接在p2.0上.埠均可自行更改.include 標頭檔案 include define uchar unsigned char 巨集定義 define uint unsigned int sbit key1 p3 5 位...

51微控制器與C51

微控制器又稱單片微控制器,是在一塊晶元中整合了cpu 處理器 ram 資料儲存器 rom 程式儲存器 定時器 計數器和多種功能的i o 輸入 輸出 介面等一台計算機所需要的基本功能部件,從而可以完成複雜的運算 邏輯控制 通訊等功能。51微控制器是對所有相容intel 8031指令系統的微控制器的統稱...