* UART、 I2C 和 SPI 是單片機(jī)系統(tǒng)中最常用的三種通信協(xié)議。*
1、SPI簡(jiǎn)介:
SPI 是一種高速的、全雙工、同步通信總線,標(biāo)準(zhǔn)的 SPI 也僅僅使用 4 個(gè)引腳,常用于單片機(jī)和 EEPROM、FLASH、實(shí)時(shí)時(shí)鐘、數(shù)字信號(hào)處理器等器件的通信。 SPI 通信原理比 I2C要簡(jiǎn)單,它主要是主從方式通信,這種模式通常只有一個(gè)主機(jī)和一個(gè)或者多個(gè)從機(jī),標(biāo)準(zhǔn)的 SPI 是 4 根線,分別是 SSEL( 片選,也寫作 SCS)、 SCLK( 時(shí)鐘,也寫作 SCK)、 MOSI( 主機(jī)輸出從機(jī)輸入Master Output/Slave Input) 和 MISO( 主機(jī)輸入從機(jī)輸出 Master Input/Slave Output)。
SSEL:從設(shè)備片選使能信號(hào)。如果從設(shè)備是低電平使能的話,當(dāng)拉低這個(gè)引腳后,從設(shè)備就會(huì)被選中,主機(jī)和這個(gè)被選中的從機(jī)進(jìn)行通信。
SCLK:時(shí)鐘信號(hào),由主機(jī)產(chǎn)生,和 I2C通信的 SCL 有點(diǎn)類似。
MOSI:主機(jī)給從機(jī)發(fā)送指令或者數(shù)據(jù)的通道。
MISO:主機(jī)讀取從機(jī)的狀態(tài)或者數(shù)據(jù)的通道。
2、程序設(shè)計(jì)
發(fā)送一個(gè)字節(jié)
void SPISendByte(unsigned char ch)
{
unsigned char idata n = 8; //向SDA上發(fā)送一位數(shù)據(jù)字節(jié),共八位
SCLK = 1 ; //時(shí)鐘置高
SSEL = 0 ; //選擇從機(jī)
while(n--)
{
delayNOP();
SCLK = 0 ; //時(shí)鐘置低
if((ch & 0x80) == 0x80) //若要發(fā)送的數(shù)據(jù)最高位為1則發(fā)送位1
{
MOSI = 1; //傳送位1
}
else
{
MOSI = 0; //否則傳送位0
}
delayNOP();
ch = ch << 1; //數(shù)據(jù)左移一位
SCLK = 1 ; //時(shí)鐘置高
}
}
接收一個(gè)字節(jié)
unsigned char SPIreceiveByte()
{
unsigned char idata n = 8; // 從MISO線上讀取一上數(shù)據(jù)字節(jié),共八位
unsigned char tdata;
SCLK = 1; //時(shí)鐘為高
SSEL = 0; //選擇從機(jī)
while(n--)
{
delayNOP();
SCLK = 0; //時(shí)鐘為低
delayNOP();
tdata = tdata << 1; // 左移一位,或_crol_(temp,1)
if(MISO == 1)
{
tdata = tdata | 0x01;
}// 若接收到的位為1,則數(shù)據(jù)的最后一位置1
else
{
tdata = tdata & 0xfe;
}// 否則數(shù)據(jù)的最后一位置0
SCLK = 1;
}
return(tdata);
}
每次開始,時(shí)鐘線SCLK都為高電平,MISO是數(shù)據(jù)接收位,先接受最高位,通過左移8次,得到數(shù)據(jù),MOSI是數(shù)據(jù)發(fā)送位,先發(fā)送數(shù)據(jù)最高位。
數(shù)據(jù)的發(fā)送和接收都是在SCLK=0;與SCLK=1;語句之間執(zhí)行,即:
SCLK = 0;
數(shù)據(jù)的收發(fā)與移位
SCLK = 1;
即數(shù)據(jù)的收發(fā)都是以SCLK的下降沿開始,上升沿結(jié)束。
---------------------
作者:濁之清
來源:CSDN
原文:https://blog.csdn.net/qq_34706280/article/details/78702106
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
上一篇:8051單片機(jī)波特率計(jì)算公式(配套C語言例程)
下一篇:兩種紅外解碼方法(RC-5)
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 智能護(hù)眼臺(tái)燈設(shè)計(jì)
- 蓄電池高能脈沖充電系統(tǒng)設(shè)計(jì)
- 基于51單片機(jī)定時(shí)器的電子時(shí)鐘設(shè)計(jì)方案
- 瑞薩電子推出面向單電機(jī)應(yīng)用優(yōu)化的卓越MCU, 涵蓋電動(dòng)工具、家用電器等廣泛應(yīng)用場(chǎng)景
- 地平線陳黎明:中高階智能駕駛拐點(diǎn)已到,將迎來快速增長(zhǎng)
- 格芯收購MIPS:RISC-V技術(shù)路線的新變量
- 消息稱蜂巢能源獲smart電池項(xiàng)目定點(diǎn)
- 極氪9X有哪些豪華混動(dòng)技術(shù)?
- 重磅!電動(dòng)汽車換電新國(guó)標(biāo)發(fā)布!
- 緊跟全球行業(yè)變革浪潮 采埃孚引領(lǐng)汽車底盤技術(shù)革新
- 英特爾前 CEO 帕特?基辛格再創(chuàng)業(yè):評(píng)估 AI 模型是否符合特定的人類價(jià)值觀
- 汽車動(dòng)力傳動(dòng)機(jī)引擎及機(jī)械/實(shí)體參數(shù)測(cè)試
- 車云一體數(shù)據(jù)閉環(huán)的趨勢(shì)
- 車云一體其他層面的架構(gòu)設(shè)計(jì)借鑒-上
- 中國(guó)移動(dòng)與Nokia簽訂10億歐元框架協(xié)議
- 華為申請(qǐng)新款Mate系列手機(jī)名稱:Mate 20/30/40/50
- Xperia XZ2 Premium賣不掉怎么辦 279美元耳機(jī)打包送
- 蘋果正著手設(shè)計(jì)可折疊的iPhone手機(jī):屏幕會(huì)變薄
- 全力備戰(zhàn)新iPhone 蘋果iPhone X或今秋停產(chǎn)
- 晶體管微縮難上加難,廠商們各出奇招
- STM32輸入捕獲(一)
- 華爾街日?qǐng)?bào):芯片制造業(yè)上演新紛爭(zhēng),但競(jìng)爭(zhēng)格局恐難改變
- 科學(xué)的規(guī)劃和布局是振興半導(dǎo)體的關(guān)鍵
- STM32串口通信USART(二)---DMA方式
- 第一代還沒玩夠,ST又推出第二代多區(qū)飛行時(shí)間傳感器VL53L8
- 向大家請(qǐng)教 有關(guān)判斷串口接收數(shù)據(jù) 以及使用AT COMMAND 控制手機(jī)收發(fā)短信的問題。
- 液晶只顯示一半???
- 多普達(dá)的 原始紅外 開發(fā)
- 蒸汽熨斗自動(dòng)保護(hù)電路圖
- EEWORLD大學(xué)堂----野火FreeRTOS內(nèi)核實(shí)現(xiàn)與應(yīng)用開發(fā)實(shí)戰(zhàn)指南
- 51的定時(shí)器問題
- MSP430單片機(jī)中, 當(dāng)只用AD4一個(gè)端口的時(shí)候, 為什么跳不到中斷中去? 每次中斷標(biāo)志都是顯示
- 樣片申請(qǐng)進(jìn)展
- 關(guān)于串口通訊(RS485)