Microchip PIC24FJ64GA008 內置的串列外設介面模組(Serial Peripheral Interface,縮寫:SPI),每一個串列外設介面模組都具有 特殊功能寄存器,包括 SPIxBUF(緩衝寄存器)、SPIxSTAT(狀態寄存器)、SPIxCON1(控制寄存器1) 和 SPIxCON2(控制寄存器2)。
Microchip PIC24FJ64GA008 SPI主 / 從連接資料輸送 |
- SPIxBUF:SFR 空間中的位址,用於緩衝待發送資料和已接收資料。該位址由虛擬 SPIxTXB 和 SPIxRXB 寄存器共用。
- SPIxCON1 和 SPIxCON2:用於將模組配置為各種工作模式的控制寄存器。
- SPIxSTAT:指示各種狀態條件的狀態寄存器。此外,模組還有一個 16 位元的移位寄存器 SPIxSR,用於從 SPI 埠移入或移出資料。該移位元寄存器未映射到記憶體單元。
PIC24FJ64GA008 SPIxSTAT: SPIx STATUS REGISTER(狀態寄存器) |
PIC24FJ64GA008 SPIxSTAT: SPIx STATUS REGISTER(狀態寄存器):
bit
|
Description
|
bit 15
|
SPIEN:SPIx 使能位
1 = 使能模組並將 SCKx、SDOx、SDIx 和 SSx 配置為串口引腳
0 = 禁止模組
|
bit 14
|
未實現:讀為0
|
bit 13
|
SPISIDL:空閒模式停止位元
1 = 當器件進入空閒模式後,模組停止工作。
0 = 在空閒模式下模組繼續工作
|
bit 12 ~ 11
|
未實現:讀為0
|
bit 10 ~ 8
|
SPIBEC2:SPIBEC0:SPIx 緩衝器資料個數位
主控模式:
等待傳輸的 SPI 資料個數
從動模式:
未讀取的 SPI 傳輸資料個數
|
bit 7
|
SRMPT:移位寄存器(SPIxSR)空位(在增強型緩衝模式下有效)
1 = SPIx 移位寄存器為空,準備發送或接收
0 = SPIx 移位寄存器非空,讀為 0
|
bit 6
|
SPIROV:接收溢出標誌位元
1 = 一個新位元組/ 字已接收並丟棄。由於用戶軟體尚未讀取SPIxBUF 寄存器中已接收的資料。
0 = 沒有發生溢出
|
bit 5
|
SRXMPT:接收 FIFO 空位(在增強型緩衝模式下有效)
1 = 接收 FIFO 為空
0 = 接收 FIFO 非空
|
bit 4 ~ 2
|
SISEL2:SISEL0:SPIx 緩衝區中斷模式位元(在增強型緩衝模式下有效)
111 = 當 SPIx 發送緩衝器滿時產生中斷(SPITBF 位置 1)
110 = 最後一位移入SPIxSR 導致發送 FIFO 為空時產生中斷
101 = 最後一位被移出 SPIxSR 時產生中斷,此時發送完成
100 = 有資料移入SPIxSR 導致發送 FIFO 有待發送資料時產生中斷
011 = 當 SPIx 接收緩衝器滿時產生中斷(SPIRBF 位置 1)
010 = 當 SPIx 接收緩衝器被填滿 3/4 或更多時產生中斷
001 = 接收緩衝器中有資料時產生中斷(SRMPT
位置 1)
000 = 讀取接收緩衝器中的最後一個資料,導致緩衝器為空時產生中斷(SRXMPT 位置 1)
|
bit 1
|
SPITBF:SPIx 發送緩衝器滿狀態位元
1 = 未開始發送, SPIxTXB 滿
0 = 發送開始, SPIxTXB 空
在標準緩衝器模式下:
當 CPU 通過寫 SPIxBUF 位址單元裝載 SPIxTXB 時,該位元由硬體自動置1。
當 SPIx 模組將資料從 SPIxTXB 傳輸到 SPIxSR 時,該位元由硬體自動清零。
在增強型緩衝器模式下:
當 CPU 通過寫 SPIxBUF 位址單元裝載最後一個可用緩衝單元時,該位元由硬體自動置 1。
當有空的緩衝器單元可由 CPU 寫入時由硬體自動清零。
|
bit 0
|
SPIRBF:SPIx 接收緩衝器滿狀態位元
1 = 接收完成, SPIxRXB 滿
0 = 接收未完成, SPIxRXB 空
在標準緩衝器模式下:
當 SPIx 將資料從 SPIxSR 傳輸到 SPIxRXB 時,該位元由硬體自動置1。
當內核通過讀 SPIxBUF 位址單元讀 SPIxRXB
時,該位元由硬體自動清零。
在增強型緩衝器模式下:
當 SPIx 將資料從 SPIxSR 傳輸到緩衝器填充了最後一個未讀的緩衝單元時,該位元由硬體自動置 1。
當有空的緩衝器單元可接收來自 SPIxSR 的傳輸資料時,該位元由硬體自動清零。
|
PIC24FJ64GA008 SPIXCON1: SPIx CONTROL REGISTER 1 (控制寄存器1) |
bit
|
Description
|
bit 15 ~ 13
|
未實現:讀為0
|
bit 12
|
DISSCK:SCKx 引腳禁止位(僅用於 SPI 主控模式)
1 = 禁止內部 SPI 時鐘,引腳用作 I/O
0 = 使能內部 SPI 時鐘
|
bit 11
|
DISSDO:SDOx 引腳禁止位
1 = 模組不使用 SDOx 引腳,引腳用作 I/O
0 = SDOx 引腳受模組控制
|
bit 10
|
MODE16:字 / 位元組通信選擇位元
1 = 每次通信資料為字寬(16 位)
0 = 每次通信資料為位元組寬(8 位元)
|
bit 9
|
SMP:SPIx 資料登錄採樣點選擇位元
主控模式:
1 = 在資料輸出時間的末尾採樣輸入資料
0 = 在資料輸出時間的中間採樣輸入資料
從動模式:
當在從動模式下使用 SPIx
時,必須將該位清零。
|
bit 8
|
CKE:SPIx 時鐘邊沿選擇位元(1)
1 = 串行輸出資料在時鐘由有效狀態變為空閒狀態時改變(見 bit 6)
0 = 串行輸出資料在時鐘由空閒狀態變為有效狀態時改變(見 bit 6)
|
bit 7
|
SSEN:從動選擇使能(從動模式)位元
1 = SSx 引腳用於從動模式
0 = 模組不使用 SSx 引腳,引腳用作埠。
|
bit 6
|
CKP:時鐘極性選擇位元
1 = 時鐘信號空閒狀態為高電平;有效狀態為低電平
0 = 時鐘信號空閒狀態為低電平;有效狀態為高電平
|
bit 5
|
MSTEN:主控模式使能位元
1 = 主控模式
0 = 從動模式
|
bit 4 ~ 2
|
SPRE2:SPRE0:輔助預分頻比(主控模式)位元
111 = 輔助預分頻比為 1:1
110 = 輔助預分頻比為 2:1
...
000 = 輔助預分頻比為 8:1
|
bit 1 ~ 0
|
PPRE1:PPRE0:主預分頻比(主控模式)位元
11 = 主預分頻比為 1:1
10 = 主預分頻比為 4:1
01 = 主預分頻比為 16:1
00 = 主預分頻比為 64:1
|
PIC24FJ64GA008 SPIxCON2: SPIx CONTROL REGISTER 2 SPIx (控制寄存器2) |
bit
|
Description
|
bit 15
|
FRMEN:幀 SPIx 支持位
1 = 使能幀 SPIx 支持
0 = 禁止幀 SPIx 支持
|
bit 14
|
SPIFSD:SSx 引腳上的幀同步脈衝方向控制位
1 = 幀同步脈衝輸入(從動模式)
0 = 幀同步脈衝輸出(主控模式)
|
bit 13
|
SPIFPOL:幀同步脈衝極性位元(僅用於幀模式)
1 = 幀同步脈衝高電平有效
0 = 幀同步脈衝低電平有效
|
bit 12 ~ 2
|
未實現:讀為0
|
bit 1
|
SPIFE:幀同步脈衝邊沿選擇位
1 = 幀同步脈衝與第一位時鐘同步
0 = 幀同步脈衝比第一位時鐘超前
|
bit 0
|
SPIBEN:增強型緩衝器使能位
1 = 使能增強型緩衝器
0 = 禁止增強型緩衝器(傳統模式)
|
Microchip PIC24FJ64GA008 SPI 記憶體映射 |
Microchip PIC24FJ64GA008 SPI 主模式時鐘頻率 |
2016年 12月 28日 天氣報告
氣溫:17.4度 @ 17:40
相對濕度:百分之 60%
天氣:多雲
沒有留言:
張貼留言