




全文預覽已結束
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
使用的同步串行三線SPI接口,可以方便的連接采用SPI通信協(xié)議的外圍或另一片AVR單片機,實現(xiàn)在短距離內(nèi)的高速同步通信。ATmega128的SPI采用硬件方式實現(xiàn)面向字節(jié)的全雙工3線同步通信,支持主機、從機和2種不同極性的SPI時序,通信速率有7種選擇,主機方式的最高速率為1/2系統(tǒng)時鐘,從機方式最高速率為1/4系統(tǒng)時鐘。ATmega128單片機內(nèi)部的SPI接口也被用于程序存儲器和數(shù)據(jù)E2PROM的編程下載和上傳。但特別需要注意的是,此時SPI的MOSI和MISO接口不再對應PB2、PB3引腳,而是轉(zhuǎn)換到PE0、PE1引腳上(PDI、PDO),其詳見第二章中關于程序存儲器的串行編程和校驗部分的內(nèi)容。ATmega128的SPI為硬件接口和傳輸完成中斷申請,所以使用SPI傳輸數(shù)據(jù)的有效方法是采用中斷方式+數(shù)據(jù)緩存器的設計方法。在對SPI初始化時,應注意以下幾點:.正確選擇和設置主機或從機,以及工作模式(極性),數(shù)據(jù)傳輸率;.注意傳送字節(jié)的順序,是低位優(yōu)先(LSB First)還是高位優(yōu)先(MSB Frist);.正確設置MOSI和MISO接口的輸入輸出方向,輸入引腳使用上拉電阻,可以節(jié)省總線上的吊高電阻。下面一段是SPI主機方式連續(xù)發(fā)送(接收)字節(jié)的例程:#Define SIZE 100Unsigned Char SPI_rx_buffSIZE;Unsigned Char SPI_tx_buffSIZE;Unsigned Char Rx_wr_index,Rx_rd_index,Rx_counter,Rx_buffer_overflow;Unsigned Char Tx_wr_index,Tx_rd_index,Tx_counter;#Pragma Interrupt_handler Spi_stc_isr:18Void Spi_stc_isr(Void)SPI_rx_buffRx_wr_index = SPDR; /從ISP口讀出收到的字節(jié)If (+Rx_wr_index = SIZE) Rx_wr_index = 0; /放入接收緩沖區(qū),并調(diào)整隊列指針I(yè)f (+Rx_counter = SIZE)Rx_counter = 0;Rx_buffer_overflow = 1;If (Tx_counter) /如果發(fā)送緩沖區(qū)中有待發(fā)的數(shù)據(jù)-Tx_counter;SPDR = SPI_tx_buffTx_rd_index; /發(fā)送一個字節(jié)數(shù)據(jù),并調(diào)整指針I(yè)f (+Tx_rd_index = SIZE) Tx_rd_index = 0;Unsigned Char GetSPIchar(Void)Unsigned Char Data;While (Rx_counter = 0); /無接收數(shù)據(jù),等待Data = SPI_rx_buffRx_rd_index; /從接收緩沖區(qū)取出一個SPI收到的數(shù)據(jù)If (+Rx_rd_index = SIZE) Rx_rd_index = 0; /調(diào)整指針CLI();-Rx_counter;SEI();Return Data;Void PutSPIchar(Char C)While (Tx_counter = SIZE);/發(fā)送緩沖區(qū)滿,等待CLI();If (Tx_counter | (SPSR & 0x80) = 0)/發(fā)送緩沖區(qū)已中有待發(fā)數(shù)據(jù) /或SPI正在發(fā)送數(shù)據(jù)時SPI_tx_bufferTx_wr_index = C; /將數(shù)據(jù)放入發(fā)送緩沖區(qū)排隊If (+Tx_wr_index = SIZE) Tx_wr_index = 0; /調(diào)整指針+Tx_counter;ElseSPDR = C; /發(fā)送緩沖區(qū)中空且SPI口空閑,直接放入SPDR由SIP口發(fā)送SEI();Void Spi_init(Void)Unsigned Chat Temp;DDRB |= 0x080; /MISO=Input And MOSI,SCK,SS = OutputPORTB |= 0x80; /MISO上拉電阻有效SPCR = 0xD5; /SPI允許,主機模式,MSB,允許SPI中斷,極性方式01,1/16系統(tǒng)時鐘速率SPSR = 0x00;Temp = SPSR;Temp = SPDR; /清空SPI,和中斷標志,使SPI空閑Void Main(Void)Unsigned Char I;CLI(); /關中斷Spi_init(); /初始化SPI接口SEI(); /開中斷While()PutSPIchar(I); /發(fā)送一個字節(jié)I+;GetSPIchar(); /接收一個字節(jié)(第一個字節(jié)為空字節(jié))這個典型的SPI例程比較簡單,主程序中首先對ATmega128的硬件SPI進行初始化。在初始化過程中,將PORTB的MOSI、SCLK和SS引腳作為輸出,同時將MISO作為輸入引腳,并打開上拉電阻。接著對SPI的寄存器進行初始化設置,并空讀一次SPSR、SPDR寄存器(讀SPSR后再對SPDR操作將自動清零SPI中斷標志自動清零),使ISP空閑等待發(fā)送數(shù)據(jù)。AVR的SPI由一個16位的循環(huán)移位寄存器構成,當數(shù)據(jù)從主機方移出時,從機的數(shù)據(jù)同時也被移入,因此SPI的發(fā)送和接收在一個中斷服務中完成。在SPI中斷服務程序中,先從SPDR中讀一個接收的字節(jié)存入接收數(shù)據(jù)緩沖器中,再從發(fā)送數(shù)據(jù)緩沖器取出一個字節(jié)寫入SPDR中,由ISP發(fā)送到從機。數(shù)據(jù)一旦寫入SPDR,ISP硬件開始發(fā)送數(shù)據(jù)。下一次ISP中斷時,表示發(fā)送完成,并同時收到一個數(shù)據(jù)。類似本章介紹的USART接口的使用,程序中PutSPIchar()和GetSPIchar()為應用程序的底層接口函數(shù)(SPI驅(qū)動程序是SPI中斷服務程序),同時也使用了兩個數(shù)據(jù)緩沖器,分別構成循環(huán)隊列。這種程序設計的思路,不但程序的結構性完整,同時也適當?shù)慕鉀Q了高速MCU和低速串口之間的矛盾,實現(xiàn)程序中任務的并行運行,提高了MCU的運行效率。本例程是通過SPI批量輸出、輸入數(shù)據(jù)的示例,用戶可以使用一片ATmega128,將其MOSI和MISO兩個引腳連接起來,構成一個ISP接口自發(fā)自收的系統(tǒng),對程序進行演示驗證。需要注意,實際接收到的字節(jié)為上一次中斷時發(fā)出的數(shù)據(jù),即第一個收到的字節(jié)是空字節(jié)。讀懂和了解程序的處理思想,讀者可以根據(jù)需要對程序進行改動,適合實際系統(tǒng)的使用。如在實際應用中外接的從機是一片SPI接口的溫度芯片,協(xié)議規(guī)程為:主機先要連續(xù)發(fā)送3個字節(jié)的命令,然后從機才返回一個字節(jié)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川節(jié)水設備項目可行性研究報告
- 私人影院可行性研究報告
- 2025年中國對溴溴芐行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- DB11T1448-2024城市軌道交通工程資料管理規(guī)程
- 2018-2024年中國安全豬肉市場深度評估及投資方向研究報告
- DB15T1895-2024建筑消防設施維護保養(yǎng)技術規(guī)程
- 初三數(shù)學培優(yōu)補差計劃
- 2025年中國微電聲器件市場競爭格局及行業(yè)投資潛力預測報告
- 新建改性磷石膏投資建設項目可行性分析研究報告(項目申請)
- 中國甲醛消除液行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告(2024-2030)
- 2024年江西省公安廳招聘警務輔助人員考試真題
- 2025年高考全國二卷數(shù)學高考真題解析 含參考答案
- 2025年日歷表全年(打印版)完整清新每月一張
- 安全生產(chǎn)費用提取計算公式(附計算模板)
- 赤平投影原理PPT
- 2021年包頭職業(yè)技術學院教師招聘試題及答案解析
- DBJ50∕T-342-2019 工程建設對既有建(構)筑物安全影響評估標準
- 信息安全等級保護測評項權重賦值表
- [論文]黃土隧道洞身開挖、支護施工技術
- 部編版選擇性必修上冊7《兼愛》知識梳理
- 廈門職稱改革領導小組
評論
0/150
提交評論