網頁

2011年6月18日 星期六

DIY - PIC:PIC18F4550 SPI 串列介面 (八十四)

DIY - PICPIC18F4550 SPI 串列介面 (十四)

Microchip PIC18F4550 的主同步串口(Master Synchronous Serial Port,縮寫:MSSP)模組是一個串行接口,用於同其他外設或單片機器件進行通信的串列介面。 這些外設包括串列 EEPROM、移位寄存器、顯示驅動器和 A/D 轉換器等。

SPI 匯流排,單一 master 對複合 slave
MSSP 模組可以工作在以下兩種模式: 
串列外設介面(Serial Peripheral Interface,縮寫:SPI 
I2C (Inter-Integrated Circuit)


SPI 模式允許同時同步發送和接收 8 位元資料。 該模組支持SPI 的所有四種模式。 通常使用以下三個引腳來完成通信: 
串列資料輸出(Serial Data Out SDO)- RC7/RX/DT/SDO (Pin 26) 
串列資料登錄(Serial Data In SDI)- RB0/AN12/INT0/FLT0/SDI/SDA (Pin 33) 
串列時鐘(Serial Clock SCK)- RB1/AN10/INT1/SCK/SCL (Pin 34) 
串列時鐘(Chip Select CS)- RC0 (可自由選擇) (Pin 15)

18F4550 SPI 框圖
SDI數據變化在 CLK上升沿 時有效,SDO數據變化在SCK下降沿時有效。
工作原理當初始化SPI 時,需要通過對相應的控制位(SSPCON1<5:0> SSPSTAT<7:6>)編程來設置選項。 這些控制位元允許設置以下選項: 
主模式(SCK 作為時鐘輸出) 
從模式(SCK 作為時鐘輸入) 
時鐘極性(SCK 處於空閒狀態) 
輸入資料的採樣階段(資料輸出時間的中間或末端) 
時鐘邊沿(在SCK 的上升沿/ 下降沿輸出資料) 
時鐘速率(僅主模式下) 
從動選擇模式(僅從模式下)

SSPSTATMSSP 狀態寄存器 (SPI模式)
MSSP 模組由一個發送/ 接收移位寄存器(SSPSR)和一個緩衝寄存器(SSPBUF)組成。SSPSR 將數據移入/ 出器件,最高有效位在前。在新資料接收完畢前,SSPBUF保存上次寫入SSPSR 的資料。一旦8 位元資料接收完畢,該位元組就被移入SSPBUF寄存器。 然後,緩衝器滿檢測位BFSSPSTAT<0>)和中斷標誌位元SSPIF 均被置1 這種雙重緩衝資料接收方式(SSPBUF)允許在讀取剛接收的資料之前,就開始接收下一個位元組。 在資料發送/ 接收期間,任何試圖寫SSPBUF 寄存器的操作均無效,並會將寫衝突檢測位WCOLSSPCON1<7>)置1用戶必須用軟體將 WCOL 位元清零才能判斷後續對SSPBUF 寄存器的寫入是否成功。
 
為確保應用軟體能有效地接收資料,應該在要發送的下一資料位元組寫入SSPBUF 之前,讀取SSPBUF 中現有的數據。 緩衝器滿標誌位元BFSSPSTAT<0>)用於表示何時SSPBUF 載入了已接收的資料(發送完成)SSPBUF 中的資料被讀取後,BF 位即被清零。 如果SPI僅僅作為一個發送器,則不必理會該位。通常可用MSSP 中斷來判斷發送或接收何時完成。如果不使用中斷來處理資料的收發,用軟體查詢方法同樣可確保不會發生寫衝突。例19-1 顯示裝載SSPBUF SSPSR)進行資料發送的過程。用戶不能直接讀寫SSPSR 寄存器,只能通過訪問SSPBUF 寄存器來間接訪問。 此外,MSSP 狀態寄存器(SSPSTAT)指示各種狀態。

SSPCON1MSSP 控制寄存器1 (SPI模式)
要使能串口必須將MSSP使能位SSPENSSPCON1<5>1 要重定或重新配置SPI 模式應先將SSPEN位清零重新初始化SSPCON寄存器然後將SSPEN位置1 這將把SDISDOSCKSS引腳配置為串口引腳。 要讓上述引腳充當串口引腳,必須按如下說明正確設置其中一些引腳的資料方向位元(在TRIS 寄存器中): 
SDI SPI 模組自動控制 
SDO 必須將TRISC<7> 位清零 
SCK (主模式)必須將TRISB<1> 位清零 
SCK (從模式)必須將TRISB<1> 位置1 
SS 必須將TRISA<5> 位置1 
對於不需要的任何串口功能,可通過將對應的資料方向(TRIS)寄存器設置為相反值來遮罩。

沒有留言:

張貼留言