51微控制器 主從機模擬 spi通訊

2021-08-10 15:42:34 字數 1770 閱讀 1422

51微控制器 主從機模擬 spi通訊

困惑我的問題:

1.sck頻率的設定問題。

2.提取ad資料的時機問題。

spi基本知識。

雙全工同步序列介面

1.工作模式

cpol=0 低電平空閒狀態

cpol=1 高電平空閒狀態

cpha=0 第乙個邊沿採集資料 第二個邊沿輸出資料

cpha=1 第二個邊沿採集資料 第乙個邊沿輸出資料

2.時序圖(擷取書本)

3.主從機的設定與區別

主機產生時鐘訊號,從機在接受到時鐘訊號才會發出資訊。從機片選訊號由主機io口控制,低電平有效。

(主機片選介面接高電平)

主機**

//    spi.h

#ifndef spi_h

#define spi_h

#include

sbit sck  = p3^4;

sbit sdo  = p3^6;

sbit sdi  = p3^5;

sbit ssl  = p3^7;

sbit led = p0^4;

void spi_init();

void spiwrite(char );

unsigned char spiread();

void delayus();

#endif

#include"spi.h"

#define uchar unsigned char

#define uint  unsigned int

void delayus()

void spi_init()

void spiwrite(uchar dat)

}uchar spiread()

return(b);

}#include"spi.h"

main()

}從機**

#ifndef spi_h

#define spi_h

#include

sbit sck  = p3^4;

sbit sdo  = p3^5;

sbit sdi  = p3^6;

sbit ssl  = p3^7;

sbit led = p0^4;

void spi_init();

void spiwrite(char );

unsigned char spiread();

void delayus();

#endif

#include"spi.h"

#define uchar unsigned char

#define uint  unsigned int

void delayus()

void spi_init()

void spiwrite(uchar dat)

{ uchar i;

while(ssl==1);

while(sck==0);       //bug1:缺失這一步有問題

while(sck==1);

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

{ while(sck==1);      

sdo=(bit)(dat&0x80);

dat<<=1;

while(sck==0);   //下降沿輸出資料

//  p1=~(1<

51微控制器串列埠通訊

1 並行通訊 傳送方和接收方用多根資料線連線,多位資料同時傳送。傳輸線多,長距離傳輸時成本大。2 序列通訊 單根資料線傳送資料,逐位傳送。長距離傳送成本低,但控制相對複雜。序列通訊又可分為 非同步序列通訊和同步序列通訊。非同步序列通訊 所謂 非同步 指的是雙方裝置使用各自的時鐘,以字元為單位傳輸,採...

51微控制器紅外通訊

本文是武漢市海聯天下物聯網 技術團隊內部學習筆記,將詳細講解紅外遙控的基本原理以及51微控制器如何利用外部中斷和定時器0對紅外訊號進行解碼。技術部 張傲 使用紅外遙控器對準hl stc51開發板紅外置收頭,按下不同的按鍵,在開發板數碼管上將顯示對應按鍵的數字。8位位址碼,8位命令碼 完整發射兩次位址...

通訊專欄 三 SPI通訊 32微控制器

通俗易懂,看這篇就夠了!spi 介面主要應用在 eeprom,flash,實時時鐘,ad 轉換器,還有數字訊號處理器和數碼訊號解碼器之間。spi,是一種高速的,全雙工,同步的通訊匯流排,並且在晶元的管腳上只占用四根線,這四根引腳分別是 spi根據時鐘極性 cpol 和時鐘相位 cpha 配置的不同,...