




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機應用技術項目十一
SPI串行總線應用【知識目標】掌握SPI串行通信協議了解ATmega16單片機SPI串行通信接口結構了解與SPI串行通信有關的寄存器的功能了解TLC5615D/A芯片【能力目標】掌握ATmega16單片機的SPI串行通信接口相關寄存器的配置方法掌握TLC5615D/A芯片的使用方法掌握簡單的單片機SPI串行通信總線系統程序的編寫、調試方法【任務1】項目知識點學習一、SPI總線通信協議概述
SPI(SerialPeripheralInterface--串行外設接口)總線系統是一種同步外設接口,允許MCU與各種外圍設備以串行方式進行通信和數據交換。外圍設備包括FLASHRAM、A/D轉換器、網絡控制器、MCU等.一般使用4線制:串行時鐘線(SCK)
、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI
和低電平有效的從機選擇線SS
。【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程1)控制與傳輸過程如下圖所示為SPI數據傳輸系統的結構方框圖。SPI的數據傳輸系統由主機和從機兩個部分構成,主要由主、從機雙方的兩個移位寄存器和主機SPI時鐘發生器組成,主機為SPI數據傳輸的控制方。由SPI的主機將SS輸出線拉低,作為同步數據傳輸的初始化信號,通知從機進入傳輸狀態。然后主機啟動時鐘發生器,產生同步時鐘信號SCK;預先將在兩個移位寄存器中的數據在SCK的驅動下進行循環移位操作,實現了主-從之間的數據交換。主機的數據由MOSI(主機輸出-從機輸入)進入從機,而同時從機的數據MISO(主機輸入-從機輸出)進入主機。數據傳送完成,主機將SS線拉高,表示傳輸結束。
【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程1)控制與傳輸過程
【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程1)控制與傳輸過程
SPI接口的設置可分為主機和從機兩種模式。當SPI接口使能時,MOSI、MISO、SCK和SS引腳的控制和數據方向如下表引腳方向(主SPI)方向(從SPI)MOSI用戶定義輸入MISO輸入用戶定義SCK用戶定義輸入SS用戶定義輸入【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程2)SPI初始化及數據傳送程序示例
下面將以ATmega16單片機為例說明如何將SPI設置為主機,以及如何進行簡單的數據傳送。MOSI對應ATmega16單片機PB5引腳,MISO對應ATmega16單片機PB6引腳,SCK對應ATmega16單片機PB7管腳,SS對應ATmega16單片機PB4管腳。【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程2)SPI初始化及數據傳送程序示例
(1)設置SPI為主機并進行簡單的數據發送:
voidspi_masterset(void)
{
/*設置MOSI和SCK為輸出,其他為輸入*/
DDRB=(1<<DDB5)|(1<<DDB7);
/*使能SPI主機模式,設置時鐘速率為fck/16*/
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
voidspi_mastertransmit(chardata)
{
/*啟動數據傳輸*/
SPDR=data;
/*等待傳輸結束*/
while(!(SPSR&(1<<SPIF)));
}【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程2)SPI初始化及數據傳送程序示例
(2)設置SPI為從機并進行簡單的數據接收。
voidspi_slaveset(void)
{
/*設置MISO為輸出,其他為輸入*/
DDRB=(1<<DDB6);
/*使能SPI*/
SPCR=(1<<SPE);
}
charspi_slavereceive(void)
{
/*等待接收結束*/
while(!(SPSR&(1<<SPIF)));
/*返回數據*/
returnSPDR;
}【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程3)SS引腳的功能
·從機方式當SPI配置為從機時,從機選擇引腳SS總是為輸入。SS為低將激活SPI接口,MISO成為輸出(用戶必須進行相應的端口配置)引腳,其他引腳成為輸入引腳。【任務1】項目知識點學習二、ATmega16單片機SPI接口控制與數據傳輸過程3)SS引腳的功能
·主機方式當SPI被配置為主機時(寄存器SPCR的MSTR位置“1”),用戶可以決定SS引腳方向。如果SS引腳被設為輸出,該引腳將作為通用輸出口,不影響SPI系統,通常用于驅動從機的SS引腳。【任務1】項目知識點學習三、ATmega16SPI接口相關的寄存器簡單介紹
1)SPI控制寄存器-SPCR
?
Bit7–SPIE:使能SPI中斷置位后,只要SPSR寄存器的SPIF和SREG寄存器的全局中斷使能位置位,就會引發SPI中斷。?
Bit6–SPE:使能SPISPE置位將使能SPI。進行任何SPI操作之前必須置位SPE。?
Bit5–DORD:數據次序DORD置位時數據的LSB首先發送;否則數據的MSB首先發送。
【任務1】項目知識點學習三、ATmega16SPI接口相關的寄存器簡單介紹
1)SPI控制寄存器-SPCR
?Bit4–MSTR:
主/從選擇
MSTR置位時選擇主機模式,否則為從機。如果MSTR為"1”,SS配置為輸入,但被拉低,則MSTR被清零,寄存器SPSR的SPIF置位。用戶必須重新設置MSTR進入主機模式。
?Bit3–CPOL:時鐘極性
CPOL置位表示空閑時SCK為高電平;否則空閑時SCK為低電平。
?Bit2–CPHA:時鐘相位
CPHA決定數據是在SCK的起始沿采樣還是在SCK的結束沿采樣。【任務1】項目知識點學習三、ATmega16SPI接口相關的寄存器簡單介紹
1)SPI控制寄存器-SPCR
?Bits1,0–SPR1,SPR0:SPI時鐘速率選擇1與0
確定主機的SCK速率。SPR1和SPR0對從機模式沒有影響。SCK和振蕩器頻率fOSC之間的關系下表所示。SPI2XSPR1
SPR0 SCK頻率(MHz)
0
0
0
fOSC/4
0
0
1
fOSC/16
0
1
0
fOSC/64
0
1
1
fOSC/128
1
0
0
fOSC/2
1
0
1
fOSC/8
1
1
0
fOSC/32
1
1
1
fOSC/64
【任務1】項目知識點學習三、ATmega16SPI接口相關的寄存器簡單介紹
2)SPI的狀態寄存器-SPSR
?Bit7–SPIF:SPI中斷標志串行發送結束后,SPIF置位。若此時寄存器SPCR的SPIE和全局中斷使能位置位,SPI中斷即產生。如果SPI為主機,SS配置為輸入,且被拉低,SPIF也將置位。進入中斷服務程序后SPIF自動清零。或者可以通過先讀SPSR,緊接著訪問SPDR來對SPIF清零。?Bit6–WCOL:寫碰撞標志在發送當中對SPI數據寄存器SPDR寫數據將置位WCOL。WCOL可以通過先讀SPSR,緊接著訪問SPDR來清零。
【任務1】項目知識點學習三、ATmega16SPI接口相關的寄存器簡單介紹
2)SPI的狀態寄存器-SPSR
?Bit5..1–Res:保留保留位,讀操作返回值為零。?Bit0–SPI2X:SPI倍速
置位后SPI的速度加倍。若為主機,則SCK頻率可達CPU頻率的一半。若為從機,只能保證fosc/4。
【任務1】項目知識點學習三、ATmega16SPI接口相關的寄存器簡單介紹
3)SPI數據寄存器-SPDR
?
SPI數據寄存器為讀/寫寄存器,用來在寄存器文件和SPI移位寄存器之間傳輸數據。寫寄存器將啟動數據傳輸,讀寄存器將讀取寄存器的接收緩沖器。
【任務1】項目知識點學習四、DA轉換芯片TLC5615的相關知識
1)TLC5615的工作特性
TLC5615是帶有3線串行接口且具有緩沖輸入的10位DAC,輸出可達2倍Ref的變化范圍。其特點如下: ·5V單電源工作。 ·3線制串行接口。 ·高阻抗基準輸入。 ·電壓可達基準電壓兩倍。 ·內部復位。
【任務1】項目知識點學習四、DA轉換芯片TLC5615的相關知識
2)TLC5615的引腳及功能說明
TLC5615的引腳如圖所示,各引腳功能如下:
DIN:串行數據輸入端。
SCLK:串行時鐘輸入端。
CS:片選信號。
DOUT:串行數據輸出端,用于級聯。
AGND:模擬地。
REFIN:基準電壓輸入。
OUT:DAC模擬電壓輸出端。
VDD:電源端。
1)數據緩沖器UDR
UDR數據緩沖器的格式圖如圖1.7所示:
ATmega16單片機USART發送數據緩沖寄存器和USART接收數據緩沖寄存器共享相同的I/O地址,稱為USART數據寄存器或UDR。將數據寫入UDR時實際操作的是發送數據緩沖器存器(TXB),讀UDR時實際返回的是接收數據緩沖寄存器(RXB)的內容。 只有當UCSRA寄存器的UDRE標志置位后才可以對發送緩沖器進行寫操作。如果UDRE沒有置位,那么寫入UDR的數據會被USART發送器忽略。當數據寫入發送緩沖器后,若移位寄存器為空,發送器將把數據加載到發送移位寄存器。然后數據串行地從TxD引腳輸出。【任務1】項目知識點學習2)控制狀態寄存器UCSRA、UCSRB、UCSRC
(1)控制狀態寄存器UCSRA格式圖如圖1.8所示:
RXC:USART接收結束 接收緩沖器中有未讀出的數據時RXC置位,否則清零。接收器禁止時,接收緩沖器被刷新,導致RXC清零。RXC標志可用來產生接收結束中斷(見對RXCIE位的描述)。
TXC:USART發送結束 發送移位緩沖器中的數據被送出,且當發送緩沖器(UDR)為空時TXC置位。執行發送結束中斷時TXC標志自動清零,也可以通過寫1進行清除操作。TXC標志可用來產生發送結束中斷(見對TXCIE位的描述)。
RXCTXC【任務1】項目知識點學習
FE:幀錯誤 如果接收緩沖器接收到的下一個字符有幀錯誤,即接收緩沖器中的下一個字符的第一個停止位為0,那么FE置位。這一位一直有效直到接收緩沖器(UDR)被讀取。當接收到的停止位為1時,FE標志為0。對UCSRA進行寫入時,這一位要寫0。
DOR:數據溢出 數據溢出時DOR置位。當接收緩沖器滿(包含了兩個數據),接收移位寄存器又有數據,若此時檢測到一個新的起始位,數據溢出就產生了。這一位一直有效直到接收緩沖器(UDR)被讀取。對UCSRA進行寫入時,這一位要寫0。
RXCTXCUDREFEDOR【任務1】項目知識點學習
PE:奇偶校驗錯誤 當奇偶校驗使能(UPM1=1),且接收緩沖器中所接收到的下一個字符有奇偶校驗錯誤時UPE置位。這一位一直有效直到接收緩沖器(UDR)被讀取。對UCSRA進行寫入時,這一位要寫0。
U2X:倍速發送 這一位僅對異步操作有影響。使用同步操作時將此位清零。此位置1可將波特率分頻因子從16降到8,從而有效的將異步通信模式的傳輸速率加倍。
MPCM:多處理器通信模式 設置此位將啟動多處理器通信模式。MPCM置位后,USART接收器接收到的那些不包含地址信息的輸入幀都將被忽略。發送器不受MPCM設置的影響。RXCTXCUDREFEDORU2XMPCMPE【任務1】項目知識點學習(2)控制狀態寄存器UCSRB格式圖如圖1.9所示:
RXCIE:接收結束中斷使能***向量號: 置位后使能RXC中斷。當RXCIE為1,全局中斷標志位SREG置位,UCSRA寄存器的RXC亦為1時可以產生USART接收結束中斷。
TXCIE:發送結束中斷使能***向量號: 置位后使能TXC中斷。當TXCIE為1,全局中斷標志位SREG置位,UCSRA寄存器的TXC亦為1時可以產生USART發送結束中斷。
RXCIETXCIE【任務1】項目知識點學習
UDRIE:USART數據寄存器空中斷使能.置位后使能UDRE中斷。當UDRIE為1,全局中斷標志位SREG置位,UCSRA寄存器的UDRE亦為1時可以產生USART數據寄存器空中斷。***向量號:
RXEN:接收使能.置位后將啟動USART接收器。RxD引腳的通用端口功能被USART功能所取代。禁止接收器將刷新接收緩沖器,并使FE、DOR及PE標志無效。
TXEN:發送使能置.位后將啟動將啟動USART發送器。TxD引腳的通用端口功能被USART功能所取代。TXEN清零后,只有等到所有的數據發送完成后發送器才能夠真正禁止,即發送移位寄存器與發送緩沖寄存器中沒有要傳送的數據。發送器禁止后,TxD引腳恢復其通用I/O功能。RXCIETXCIEUDRIERXENTXEN【任務1】項目知識點學習
UCSZ2:字符長度 UCSZ2與UCSRC寄存器的UCSZ1:0結合在一起可以設置數據幀所包含的數據位數(字符長度)。
RXB8:接收數據位8
對9位串行幀進行操作時,RXB8是第9個數據位。讀取UDR包含的低位數據之前首先要讀取RXB8。
TXB8:發送數據位8
對9位串行幀進行操作時,TXB8是第9個數據位。寫UDR之前首先要對它進行寫操作。RXCIETXCIEUDRIERXENTXENUCSZ2RXB8TXB8【任務1】項目知識點學習(3)控制狀態寄存器UCSRC格式圖如圖1.10所示:
在ATmega16單片機中,UCSRC寄存器與UBRRH寄存器共用相同的I/O地址。對控制寄存器UCSRC的各位介紹如下:
URSEL:寄存器選擇 通過該位選擇訪問UCSRC寄存器或UBRRH寄存器。當讀UCSRC時,該位為1;當寫UCSRC時,URSEL為1。
UMSEL:USART模式選擇 當UMSEL位為0時,串行口工作于異步操作模式;當UMSEL位為1時,串行口工作于同步操作模式。URSELUMSEL【任務1】項目知識點學習UPM1:0:奇偶校驗模式.這兩位設置奇偶校驗的模式并使能奇偶校驗。如果使能了奇偶校驗,那么在發送數據,發送器都會自動產生并發送奇偶校驗位。對每一個接收到的數據,接收器都會產生一奇偶值,并與UPM0所設置的值進行比較。如果不匹配,那么就將UCSRA中的PE置位。ATmgega16單片機串行口工作時,UPM1:0的設置如表1.1所示:
USBS:停止位選擇通過這一位可以設置停止位的位數。接收器忽略這一位的設置。當USBS位為0時,停止位位數為1;當USBS位為1時,停止位位數為2。UPM1UPM0USBSURSELUMSEL首先,各位進行異或運算,然后偶校驗:結果再與0異或運算。奇校驗:結果再與1異或運算。【任務1】項目知識點學習
UCSZ1:0:字符長度.UCSZ1:0與UCSRB寄存器的UCSZ2結合在一起可以設置數據幀包含的數據位數(字符長度)。其具體設置如表所示:
UCPOL:時鐘極性.這一位僅用于同步工作模式。使用異步模式時,將這一位清零。UCPOL設置了輸出數據的改變和輸入數據采樣,以及同步時鐘XCK之間的關系。UPM1UPM0USBSURSELUMSELUCSZ1UCSZ0UCPOL【任務1】項目知識點學習3)波特率設置寄存器
波特率寄存器UBRRL、UBRRH格式:
URSEL:寄存器選擇通過該位選擇訪問UCSRC寄存器或UBRRH寄存器。當讀UBRRH時,該位為0;當寫UBRRH時,URSEL為0。Bit14:12–保留位
這些位是為以后的使用而保留的。為了與以后的器件兼容,寫UBRRH時將這些位清零。Bit11:0–UBRR11:0:USART波特率寄存器.這個12位的寄存器包含了USART的波特率信息。其中UBRRH包含了USART波特率高4位,UBRRL包含了低8位。波特率的改變將造成正在進行的數據傳
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公示牌安裝合同協議書
- 陳列活動方案協議書
- 拔出指甲治療
- 郵政掛號寄遞協議書
- 高空吊裝免責協議書
- 兒童俱樂部安全協議書
- 交行信用卡減免協議書
- csc留學資助協議書
- 農村搬遷房轉讓協議書
- 飯店著火賠償協議書
- DBJ50-T-078-2016重慶市城市道路工程施工質量驗收規范
- MOOC 跨文化交際通識通論-揚州大學 中國大學慕課答案
- 量表開發與檢驗(課堂PPT)
- 艾默生PEX系列精密空調技術手冊
- 煉鐵廠魚雷罐、鐵水罐穿包緊急預案
- 10kV備自投調試報告
- 《電路分析基礎》試題及答案
- 電氣設備調試定額
- 儲能技術-儲能材料-新能源材料-鋰電池儲能(PPT100頁)
- 商品銷售明細單(樣本)
- 食堂管理處罰通知單
評論
0/150
提交評論