2016年12月28日 星期三

DIY - PIC24:PIC24FJ64GA008 SPI 內部寄存器(五十八)

DIY - PIC24PIC24FJ64GA008 SPI 內部寄存器(五十八): 

Microchip PIC24FJ64GA008 內置的串列外設介面模組(Serial Peripheral Interface,縮寫:SPI),每一個串列外設介面模組都具有 特殊功能寄存器,包括 SPIxBUF(緩衝寄存器)、SPIxSTAT(狀態寄存器)、SPIxCON1(控制寄存器1) 和 SPIxCON2(控制寄存器2

Microchip PIC24FJ64GA008 SPI/ 從連接資料輸送
SPI 串列口的下特殊功能寄存器:
  • SPIxBUFSFR 空間中的位址,用於緩衝待發送資料和已接收資料。該位址由虛擬 SPIxTXB SPIxRXB 寄存器共用。 
  • SPIxCON1 SPIxCON2:用於將模組配置為各種工作模式的控制寄存器。 
  • SPIxSTAT:指示各種狀態條件的狀態寄存器。此外,模組還有一個 16 位元的移位寄存器 SPIxSR,用於從 SPI 埠移入或移出資料。該移位元寄存器未映射到記憶體單元。

PIC24FJ64GA008 SPIxSTAT: SPIx STATUS REGISTER(狀態寄存器)
PIC24FJ64GA008 SPIxSTAT: SPIx STATUS REGISTER(狀態寄存器)
bit
Description
bit 15
SPIENSPIx 使能位
1 = 使能模組並將 SCKxSDOxSDIx SSx 配置為串口引腳
0 = 禁止模組
bit 14
未實現:讀為0
bit 13
SPISIDL:空閒模式停止位元
1 = 當器件進入空閒模式後,模組停止工作。
0 = 在空閒模式下模組繼續工作
bit 12 ~ 11
未實現:讀為0
bit 10 ~ 8
SPIBEC2:SPIBEC0SPIx 緩衝器資料個數位
主控模式:
等待傳輸的 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:SISEL0SPIx 緩衝區中斷模式位元(在增強型緩衝模式下有效)
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
SPITBFSPIx 發送緩衝器滿狀態位元
1 = 未開始發送, SPIxTXB 滿
0 = 發送開始, SPIxTXB
在標準緩衝器模式下:
CPU 通過寫 SPIxBUF 位址單元裝載 SPIxTXB 時,該位元由硬體自動置1
SPIx 模組將資料從 SPIxTXB 傳輸到 SPIxSR 時,該位元由硬體自動清零。
在增強型緩衝器模式下:
CPU 通過寫 SPIxBUF 位址單元裝載最後一個可用緩衝單元時,該位元由硬體自動置 1
當有空的緩衝器單元可由 CPU 寫入時由硬體自動清零。
bit 0
SPIRBFSPIx 接收緩衝器滿狀態位元
1 = 接收完成, SPIxRXB 滿
0 = 接收未完成, SPIxRXB
在標準緩衝器模式下:
SPIx 將資料從 SPIxSR 傳輸到 SPIxRXB 時,該位元由硬體自動置1
當內核通過讀 SPIxBUF 位址單元讀 SPIxRXB 時,該位元由硬體自動清零。
在增強型緩衝器模式下:
SPIx 將資料從 SPIxSR 傳輸到緩衝器填充了最後一個未讀的緩衝單元時,該位元由硬體自動置 1
當有空的緩衝器單元可接收來自 SPIxSR 的傳輸資料時,該位元由硬體自動清零。

PIC24FJ64GA008 SPIXCON1: SPIx CONTROL REGISTER 1 (控制寄存器1
PIC24FJ64GA008 SPIXCON1: SPIx CONTROL REGISTER 1 (控制寄存器1):
bit
Description
bit 15 ~ 13
未實現:讀為0
bit 12
DISSCKSCKx 引腳禁止位(僅用於 SPI 主控模式)
1 = 禁止內部 SPI 時鐘,引腳用作 I/O
0 = 使能內部 SPI 時鐘
bit 11
DISSDOSDOx 引腳禁止位
1 = 模組不使用 SDOx 引腳,引腳用作 I/O
0 = SDOx 引腳受模組控制
bit 10
MODE16:字 / 位元組通信選擇位元
1 = 每次通信資料為字寬(16 位)
0 = 每次通信資料為位元組寬(8 位元)
bit 9
SMPSPIx 資料登錄採樣點選擇位元
主控模式:
1 = 在資料輸出時間的末尾採樣輸入資料
0 = 在資料輸出時間的中間採樣輸入資料
從動模式:
當在從動模式下使用 SPIx 時,必須將該位清零。
bit 8
CKESPIx 時鐘邊沿選擇位元(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
PIC24FJ64GA008 SPIxCON2: SPIx CONTROL REGISTER 2 SPIx (控制寄存器2):
bit
Description
bit 15
FRMEN:幀 SPIx 支持位
1 = 使能幀 SPIx 支持
0 = 禁止幀 SPIx 支持
bit 14
SPIFSDSSx 引腳上的幀同步脈衝方向控制位
1 = 幀同步脈衝輸入(從動模式)
0 = 幀同步脈衝輸出(主控模式)
bit 13
SPIFPOL:幀同步脈衝極性位元(僅用於幀模式)
1 = 幀同步脈衝高電平有效
0 = 幀同步脈衝低電平有效
bit 12 ~ 2
未實現:讀為0
bit 1
SPIFE:幀同步脈衝邊沿選擇位
1 = 幀同步脈衝與第一位時鐘同步
0 = 幀同步脈衝比第一位時鐘超前
bit 0
SPIBEN:增強型緩衝器使能位
1 = 使能增強型緩衝器
0 = 禁止增強型緩衝器(傳統模式)

Microchip PIC24FJ64GA008 SPI 記憶體映射
在主模式下,輸入SPIx 模組的時鐘為指令週期(TCY) 。然後,由PPRE1:PPRE0SPIxCON1<1:0>)指定的主預分頻器和由 SPRE2:SPRE0 SPIxCON1<4:2>)指定的輔助預分頻器對該時鐘進行預分頻。預分頻後的指令時鐘成為串列時鐘,並通過 SCKx 引腳提供給外部器件。

Microchip PIC24FJ64GA008 SPI 主模式時鐘頻率
2016年 12月 28日 天氣報告
氣溫:17.4@ 17:40
相對濕度:百分之 60%
天氣:多雲

沒有留言:

張貼留言