亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 9991.txt

?? 使用的同步串行三線SPI 接口
?? TXT
字號:
串行接口SPI 接口應用設計
作者:馬潮老師 / 整理:armok / 2005-01-17/ www.OurAVR.com
使用的同步串行三線SPI 接口,可以方便的連接采用SPI 通信協議的外圍或另一片AVR 單片機,實現在
短距離內的高速同步通信。ATmega128 的SPI 采用硬件方式實現面向字節的全雙工3 線同步通信,支持主
機、從機和2 種不同極性的SPI 時序,通信速率有7 種選擇,主機方式的最高速率為1/2 系統時鐘,從機方式
最高速率為1/4 系統時鐘。
ATmega128 單片機內部的SPI 接口也被用于程序存儲器和數據E2PROM 的編程下載和上傳。但特別需要
注意的是,此時SPI 的MOSI 和MISO 接口不再對應PB2、PB3 引腳,而是轉換到PE0、PE1 引腳上(PDI、
PDO),其詳見第二章中關于程序存儲器的串行編程和校驗部分的內容。
ATmega128 的SPI 為硬件接口和傳輸完成中斷申請,所以使用SPI 傳輸數據的有效方法是采用中斷方式+
數據緩存器的設計方法。在對SPI 初始化時,應注意以下幾點:
.正確選擇和設置主機或從機,以及工作模式(極性),數據傳輸率;
.注意傳送字節的順序,是低位優先(LSB First)還是高位優先(MSB Frist);
.正確設置MOSI 和MISO 接口的輸入輸出方向,輸入引腳使用上拉電阻,可以節省總線上的吊高電阻。
下面一段是SPI 主機方式連續發送(接收)字節的例程:
#define SIZE 100
unsigned char SPI_rx_buff[SIZE];
unsigned char SPI_tx_buff[SIZE];
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:18
void spi_stc_isr(void)
{
SPI_rx_buff[rx_wr_index] = SPDR; //從ISP 口讀出收到的字節
if (++rx_wr_index == SIZE) rx_wr_index = 0; //放入接收緩沖區,并調整隊列指針
if (++rx_counter == SIZE)
{
rx_counter = 0;
rx_buffer_overflow = 1;
}
if (tx_counter) //如果發送緩沖區中有待發的數據
{
--tx_counter;
SPDR = SPI_tx_buff[tx_rd_index]; //發送一個字節數據,并調整指針
if (++tx_rd_index == SIZE) tx_rd_index = 0;
}
}
unsigned char getSPIchar(void)
{
unsigned char data;
while (rx_counter == 0); //無接收數據,等待
data = SPI_rx_buff[rx_rd_index]; //從接收緩沖區取出一個SPI 收到的數據
if (++rx_rd_index == SIZE) rx_rd_index = 0; //調整指針
CLI();
--rx_counter;
SEI();
return data;
}
void putSPIchar(char c)
{
while (tx_counter == SIZE);//發送緩沖區滿,等待
CLI();
if (tx_counter || ((SPSR & 0x80) == 0))//發送緩沖區已中有待發數據
{ //或SPI 正在發送數據時
SPI_tx_buffer[tx_wr_index] = c; //將數據放入發送緩沖區排隊
if (++tx_wr_index == SIZE) tx_wr_index = 0; //調整指針
++tx_counter;
}
else
SPDR = c; //發送緩沖區中空且SPI 口空閑,直接放入SPDR 由SIP 口發送
SEI();
}
void spi_init(void)
{
unsigned chat temp;
DDRB |= 0x080; //MISO=input and MOSI,SCK,SS = output
PORTB |= 0x80; //MISO 上拉電阻有效
SPCR = 0xD5; //SPI 允許,主機模式,MSB,允許SPI 中斷,極性方式01,1/16 系統時鐘速率
SPSR = 0x00;
temp = SPSR;
temp = SPDR; //清空SPI,和中斷標志,使SPI 空閑
}
void main(void)
{
unsigned char I;
CLI(); //關中斷
spi_init(); //初始化SPI 接口
SEI(); //開中斷
while()
{
putSPIchat(i); //發送一個字節
i++;
getSPIchar(); //接收一個字節(第一個字節為空字節)
………
}
}
這個典型的SPI 例程比較簡單,主程序中首先對ATmega128 的硬件SPI 進行初始化。在初始化過程中,
將PORTB 的MOSI、SCLK 和SS 引腳作為輸出,同時將MISO 作為輸入引腳,并打開上拉電阻。接著對SPI
的寄存器進行初始化設置,并空讀一次SPSR、SPDR 寄存器(讀SPSR 后再對SPDR 操作將自動清零SPI 中斷
標志自動清零),使ISP 空閑等待發送數據。
AVR 的SPI 由一個16 位的循環移位寄存器構成,當數據從主機方移出時,從機的數據同時也被移入,因
此SPI 的發送和接收在一個中斷服務中完成。在SPI 中斷服務程序中,先從SPDR 中讀一個接收的字節存入接
收數據緩沖器中,再從發送數據緩沖器取出一個字節寫入SPDR 中,由ISP 發送到從機。數據一旦寫入
SPDR,ISP 硬件開始發送數據。下一次ISP 中斷時,表示發送完成,并同時收到一個數據。類似本章介紹的
USART 接口的使用,程序中putSPIchar()和getSPIchar()為應用程序的底層接口函數(SPI 驅動程序是SPI 中斷
服務程序),同時也使用了兩個數據緩沖器,分別構成循環隊列。這種程序設計的思路,不但程序的結構性完
整,同時也適當的解決了高速MCU 和低速串口之間的矛盾,實現程序中任務的并行運行,提高了MCU 的運
行效率。
本例程是通過SPI 批量輸出、輸入數據的示例,用戶可以使用一片ATmega128,將其MOSI 和MISO 兩
個引腳連接起來,構成一個ISP 接口自發自收的系統,對程序進行演示驗證。需要注意,實際接收到的字節為
上一次中斷時發出的數據,即第一個收到的字節是空字節。
讀懂和了解程序的處理思想,讀者可以根據需要對程序進行改動,適合實際系統的使用。如在實際應用中
外接的從機是一片SPI 接口的溫度芯片,協議規程為:主機先要連續發送3 個字節的命令,然后從機才返回一
個字節的數據。那么用戶程序可以先循環調用putSPIchar()函數4 次,將3 個字節的命令和一個字節的空數據
發送到從機,然后等待一段時間,或處理一些其它的操作后,再循環調用getSPIchar()函數4 次,從接收數據
緩沖器中連續讀取4 個字節,放棄前3 個空字節,第4 個字節即為從機的返回數據了。
原文出處: OurAVR.com 技術論壇,歡迎參加討論

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人官网二区| 欧美日韩精品一区二区三区蜜桃| 日韩午夜精品电影| 日本伊人色综合网| 日本一区二区三区在线观看| 99国产精品视频免费观看| 亚洲福利一二三区| 精品国产91乱码一区二区三区 | 日韩一区二区三区免费观看| www.在线欧美| 韩国三级中文字幕hd久久精品| 樱桃视频在线观看一区| 国产欧美在线观看一区| 日韩一区二区视频在线观看| 在线欧美日韩精品| 国产在线视频一区二区| 日本在线不卡一区| 亚洲第一久久影院| 亚洲乱码国产乱码精品精可以看 | 99久久精品免费精品国产| 美腿丝袜亚洲综合| 亚洲一区在线观看视频| 中文字幕在线不卡视频| 久久久久99精品一区| 日韩三级视频在线观看| 欧美精品久久久久久久多人混战| 色综合久久九月婷婷色综合| 成人a区在线观看| 国产成人午夜视频| 国产精品一区一区| 国产在线精品一区在线观看麻豆| 免费精品视频最新在线| 首页欧美精品中文字幕| 无码av中文一区二区三区桃花岛| 一区二区三区丝袜| 亚洲精品视频在线观看免费| 国产精品视频观看| 国产精品另类一区| 最新日韩在线视频| 亚洲视频一区二区免费在线观看| 国产精品三级av| 国产精品不卡一区| 亚洲人妖av一区二区| 亚洲天堂免费在线观看视频| 亚洲欧美一区二区三区国产精品 | 欧美一区二区三区免费视频| 欧美日韩1区2区| 91精品中文字幕一区二区三区| 欧美日韩视频在线观看一区二区三区 | 一本久久综合亚洲鲁鲁五月天| www.亚洲国产| 色呦呦国产精品| 欧美无砖专区一中文字| 51精品国自产在线| 精品国产乱码久久久久久免费| 国产欧美一区二区精品仙草咪| 中文字幕乱码一区二区免费| 自拍偷自拍亚洲精品播放| 一区二区成人在线视频| 亚洲电影第三页| 另类小说图片综合网| 国产一区91精品张津瑜| 91在线精品一区二区| 欧美午夜精品理论片a级按摩| 69p69国产精品| 国产偷国产偷亚洲高清人白洁| 国产精品萝li| 亚洲成人av电影| 国产伦精品一区二区三区免费| 成av人片一区二区| 欧美美女激情18p| 久久女同性恋中文字幕| 亚洲欧美日本韩国| 欧美aaa在线| 国产成人午夜视频| 欧美视频完全免费看| 欧美成人激情免费网| 中文字幕亚洲电影| 免费视频最近日韩| 大胆亚洲人体视频| 51精品久久久久久久蜜臀| 日本一区二区三区在线不卡| 亚洲国产精品视频| 国产乱码精品1区2区3区| 91福利社在线观看| 久久久综合视频| 亚洲国产欧美日韩另类综合| 韩国女主播一区二区三区| 日本韩国欧美三级| 久久免费国产精品| 亚洲最快最全在线视频| 激情五月激情综合网| 日本高清不卡一区| 国产欧美精品一区aⅴ影院| 亚洲综合丝袜美腿| 成人免费视频网站在线观看| 777亚洲妇女| 亚洲欧美视频一区| 国产精品中文欧美| 欧美一区二区视频在线观看2022 | 欧美大片一区二区三区| 亚洲日本在线a| 国产精品中文欧美| 日韩丝袜美女视频| 亚洲高清中文字幕| 99re8在线精品视频免费播放| 精品国产91洋老外米糕| 水蜜桃久久夜色精品一区的特点| av在线这里只有精品| 久久人人超碰精品| 久久er精品视频| 欧美一区二区三区在线观看| 亚洲精品国产第一综合99久久| 成人午夜又粗又硬又大| 精品久久一二三区| 免费观看日韩av| 欧美日韩在线直播| 一区二区三区精密机械公司| 成人午夜精品一区二区三区| 精品久久人人做人人爰| 麻豆精品视频在线观看免费 | 日韩午夜在线播放| 婷婷丁香久久五月婷婷| 欧美性生交片4| 一区二区三区电影在线播| 99久久国产综合色|国产精品| 久久精品一区二区三区不卡牛牛| 美日韩黄色大片| 欧美一区二区免费| 麻豆国产精品777777在线| 欧美一区二区视频网站| 欧美96一区二区免费视频| 欧美福利一区二区| 青草国产精品久久久久久| 欧美日本韩国一区| 天天操天天色综合| 在线综合亚洲欧美在线视频| 日韩va欧美va亚洲va久久| 欧美久久久久免费| 免费看精品久久片| 久久嫩草精品久久久久| 国产宾馆实践打屁股91| 国产精品久久久久久久浪潮网站| 成人av免费观看| 亚洲男女一区二区三区| 日本韩国欧美一区二区三区| 亚洲午夜免费电影| 制服.丝袜.亚洲.另类.中文 | 99久久免费视频.com| 国产精品久久久久影视| 色综合天天综合色综合av| 亚洲裸体xxx| 欧美麻豆精品久久久久久| 日本不卡的三区四区五区| 精品国产乱码久久久久久久久| 国产在线精品免费av| 欧美激情一区二区三区全黄| 色综合天天综合色综合av| 亚洲国产裸拍裸体视频在线观看乱了| 欧美精品视频www在线观看| 久久精品国产一区二区三| 国产欧美精品一区二区色综合| 一本一道波多野结衣一区二区| 午夜精品久久一牛影视| 亚洲精品一区二区三区在线观看| 国产成人鲁色资源国产91色综| 亚洲免费观看在线视频| 欧美一区二区在线播放| 成人性生交大片免费看中文网站| 亚洲精品ww久久久久久p站| 欧美一区二区三区免费视频| 国产成a人亚洲| 午夜影视日本亚洲欧洲精品| 精品噜噜噜噜久久久久久久久试看| 成人性生交大片免费看中文网站| 亚洲一区二区三区中文字幕 | 青青草原综合久久大伊人精品| 久久久精品综合| 在线免费观看不卡av| 麻豆成人久久精品二区三区红| 国产精品天干天干在观线| 欧美色图激情小说| 国产成人在线色| 香蕉乱码成人久久天堂爱免费| 久久精品视频在线看| 在线视频国内自拍亚洲视频| 久久av中文字幕片| 亚洲精品ww久久久久久p站| 26uuu亚洲| 欧美性受xxxx| 波多野结衣在线一区| 日本午夜一区二区| 亚洲乱码精品一二三四区日韩在线| 日韩精品在线看片z| 91女人视频在线观看| 国产一区高清在线| 五月婷婷激情综合网| ...中文天堂在线一区| 久久精品亚洲麻豆av一区二区| 欧美三电影在线|