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 配置的不同,...