當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]十、ATMEGA16的同步串行接口十—(01)、ATMEGA16的同步串行接口的介紹1、ATMEGA16的SPI特點串行外設(shè)接口SPI 允許ATmega16 和外設(shè)或其他AVR 器件進行高速的同步數(shù)據(jù)傳輸。ATmega16 SPI 的特點如下:? 全雙工, 3 線同

十、ATMEGA16的同步串行接口

十—(01)、ATMEGA16的同步串行接口的介紹

1、ATMEGA16的SPI特點

串行外設(shè)接口SPI 允許ATmega16 和外設(shè)或其他AVR 器件進行高速的同步數(shù)據(jù)傳輸。
ATmega16 SPI 的特點如下:
? 全雙工, 3 線同步數(shù)據(jù)傳輸
? 主機或從機操作
? LSB 首先發(fā)送或MSB 首先發(fā)送
? 7 種可編程的比特率
? 傳輸結(jié)束中斷標(biāo)志
? 寫碰撞標(biāo)志檢測
? 可以從閑置模式喚醒
? 作為主機時具有倍速模式(CK/2)



2、主機與從機之間的SPI連接以及原理

主機和從機之間的SPI 連接如Figure 66 所示。 系統(tǒng)包括兩個移位寄存器和一個主機時鐘
發(fā)生器。通過將需要的從機的 SS 引腳拉低,主機啟動一次通訊過程。主機和從機將需要
發(fā)送的數(shù)據(jù)放入相應(yīng)的移位寄存器。主機在SCK 引腳上產(chǎn)生時鐘脈沖以交換數(shù)據(jù)。主機
的數(shù)據(jù)從主機的MOSI 移出,從從機的MOSI 移入;從機的數(shù)據(jù)從從機的MISO 移出,從
主機的MISO 移入。主機通過將從機的SS 拉高實現(xiàn)與從機的同步。
配置為SPI 主機時, SPI 接口不自動控制 SS 引腳,必須由用戶軟件來處理。(還有~~就是主機和從機的兩個移位寄存器可以被認(rèn)定為一個公開的16位環(huán)形移位寄存器)對 SPI 數(shù)
據(jù)寄存器寫入數(shù)據(jù)即啟動SPI 時鐘,將8 比特的數(shù)據(jù)移入從機。傳輸結(jié)束后SPI 時鐘停
止,傳輸結(jié)束標(biāo)志SPIF 置位。如果此時SPCR 寄存器的SPI 中斷使能位SPIE 置位,中
斷就會發(fā)生。主機可以繼續(xù)往SPDR 寫入數(shù)據(jù)以移位到從機中去,或者是將從機的SS 拉
高以說明數(shù)據(jù)包發(fā)送完成。最后進來的數(shù)據(jù)將一直保存于緩沖寄存器里。

配置為從機時,只要SS 為高,SPI 接口將一直保持睡眠狀態(tài),并保持MISO 為三態(tài)。在
這個狀態(tài)下軟件可以更新SPI 數(shù)據(jù)寄存器SPDR 的內(nèi)容。即使此時SCK 引腳有輸入時
鐘,SPDR 的數(shù)據(jù)也不會移出,直至SS 被拉低。一個字節(jié)完全移出之后,傳輸結(jié)束標(biāo)志
SPIF置位。如果此時SPCR寄存器的SPI中斷使能位SPIE置位,就會產(chǎn)生中斷請求。在讀
取移入的數(shù)據(jù)之前從機可以繼續(xù)往SPDR 寫入數(shù)據(jù)。最后進來的數(shù)據(jù)將一直保存于緩沖
寄存器里。



SPI 系統(tǒng)的發(fā)送方向只有一個緩沖器,而在接收方向有兩個緩沖器。也就是說,在發(fā)送時
一定要等到移位過程全部結(jié)束后才能對SPI 數(shù)據(jù)寄存器執(zhí)行寫操作。而在接收數(shù)據(jù)時,需
要在下一個字符移位過程結(jié)束之前通過訪問SPI 數(shù)據(jù)寄存器讀取當(dāng)前接收到的字符。否則
第一個字節(jié)將丟失。
工作于SPI 從機模式時,控制邏輯對SCK 引腳的輸入信號進行采樣。為了保證對時鐘信
號的正確采樣, SPI 時鐘不能超過fosc/4。



下面的例程說明如何將SPI 初始化為主機,以及如何進行簡單的數(shù)據(jù)發(fā)送。例子中
DDR_SPI必須由實際的數(shù)據(jù)方向寄存器代替;DD_MOSI、DD_MISO和DD_SCK必須由

實際的數(shù)據(jù)方向代替。比如說, MOSI 為PB5 引腳,則DD_MOSI 要用DDB5 取代,
DDR_SPI 則用DDRB 取代。

void SPI_MasterInit(void)
{

DDR_SPI = (1<
SPCR = (1<}
void SPI_MasterTransmit(char cData)
{

SPDR = cData;

while(!(SPSR & (1<;
}

void SPI_SlaveInit(void)
{

DDR_SPI = (1<
SPCR = (1<}
char SPI_SlaveReceive(void)
{

while(!(SPSR & (1<;

return SPDR;
}

3、SS 引腳的功能

從機模式

當(dāng)SPI 配置為主機時,從機選擇引腳SS 總是為輸入。SS 為低將激活SPI 接口, MISO
成為輸出( 用戶必須進行相應(yīng)的端口配置) 引腳,其他引腳成為輸入引腳。當(dāng)SS 為高時
所有的引腳成為輸入, SPI 邏輯復(fù)位,不再接收數(shù)據(jù)。
SS引腳對于數(shù)據(jù)包/字節(jié)的同步非常有用,可以使從機的位計數(shù)器與主機的時鐘發(fā)生器同
步。當(dāng)SS 拉高時SPI從機立即復(fù)位接收和發(fā)送邏輯,并丟棄移位寄存器里不完整的數(shù)據(jù)。
主機模式

當(dāng)SPI 配置為主機時(MSTR 的SPCR 置位),用戶可以決定SS 引腳的方向。
若SS 配置為輸出,則此引腳可以用作普通的I/O 口而不影響SPI 系統(tǒng)。典型應(yīng)用是用來
驅(qū)動從機的SS 引腳。
如果SS 配置為輸入,必須保持為高以保證SPI 的正常工作。若系統(tǒng)配置為主機, SS 為
輸入,但被外設(shè)拉低,則SPI 系統(tǒng)會將此低電平解釋為有一個外部主機將自己選擇為從
機。為了防止總線沖突, SPI 系統(tǒng)將實現(xiàn)如下動作:
1. 清零SPCR 的MSTR 位,使SPI 成為從機,從而MOSI 和SCK 變?yōu)檩斎搿?br/>2. SPSR 的SPIF 置位。若SPI 中斷和全局中斷開放,則中斷服務(wù)程序?qū)⒌玫綀?zhí)行。
因此,使用中斷方式處理SPI 主機的數(shù)據(jù)傳輸,并且存在SS 被拉低的可能性時,中斷服
務(wù)程序應(yīng)該檢查MSTR 是否為"1”。若被清零,用戶必須將其置位,以重新使能SPI 主機
模式。

4、SPI的相關(guān)寄存器

1)SPI控制寄存器



? Bit 7 – SPIE: 使能SPI 中斷
置位后,只要SPSR 寄存器的SPIF 和SREG 寄存器的全局中斷使能位置位,就會引發(fā)
SPI 中斷。
? Bit 6 – SPE: 使能SPI
SPE 置位將使能SPI。進行任何SPI 操作之前必須置位SPE。
? Bit 5 – DORD: 數(shù)據(jù)次序
DORD 置位時數(shù)據(jù)的LSB 首先發(fā)送;否則數(shù)據(jù)的MSB 首先發(fā)送。
? Bit 4 – MSTR: 主/ 從選擇
MSTR置位時選擇主機模式,否則為從機。如果MSTR為"1”,SS配置為輸入,但被拉低,
則MSTR 被清零,寄存器SPSR 的SPIF 置位。用戶必須重新設(shè)置MSTR 進入主機模式。

? Bit 3 – CPOL: 時鐘極性
CPOL 置位表示空閑時SCK 為高電平;否則空閑時SCK 為低電平。請參考 Figure 67 與
Figure 68。 CPOL 功能總結(jié)如下:



? Bit 2 – CPHA: 時鐘相位
CPHA 決定數(shù)據(jù)是在SCK 的起始沿采樣還是在SCK 的結(jié)束沿采樣。請參考Figure 67 與
Figure 68 。



? Bits 1, 0 – SPR1, SPR0: SPI 時鐘速率選擇1 與0
確定主機的SCK 速率。SPR1 和SPR0 對從機沒有影響。SCK 和振蕩器的時鐘頻率fosc
關(guān)系如下表所示:


2)SPI狀態(tài)寄存器



? Bit 7 – SPIF: SPI 中斷標(biāo)志
串行發(fā)送結(jié)束后,SPIF 置位。若此時寄存器SPCR 的SPIE 和全局中斷使能位置位,SPI
中斷即產(chǎn)生。如果SPI 為主機, SS 配置為輸入,且被拉低, SPIF 也將置位。進入中斷
服務(wù)程序后SPIF自動清零。或者可以通過先讀SPSR,緊接著訪問SPDR來對SPIF清零。
? Bit 6 – WCOL: 寫碰撞標(biāo)志
在發(fā)送當(dāng)中對SPI 數(shù)據(jù)寄存器SPDR寫數(shù)據(jù)將置位WCOL。WCOL可以通過先讀SPSR,
緊接著訪問SPDR 來清零。
? Bit 5..1 – Res: 保留
保留位,讀操作返回值為零。
? Bit 0 – SPI2X: SPI 倍速
置位后SPI 的速度加倍。若為主機( 見 Table 58),則SCK 頻率可達(dá)CPU 頻率的一半。
若為從機,只能保證fosc /4。

3)SPI 數(shù)據(jù)寄存器- SPDR


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉