2016年10月24日 星期一

DIY - Robot 機器人 - PIC24FJ64GA008 I2C 模組寄存器介紹(十三)

DIY - Robot 機器人 - PIC24FJ64GA008 I2C 模組寄存器介紹(十三): 

Microchip PIC24FJ64GA008 處理器內置兩個 I2CI2C1 I2C2)的模組,I2CI²CInter-Integrated Circuit)模組是一種串列通訊匯流排,PIC24FJ64GA008 I2C 模組具有 7 個可由用戶訪問的寄存器用於操作。所有寄存器均可通過位元組或字模式訪問。

Microchip PIC24FJ64GA008 I2C 模組的框圖
PIC24FJ64GA008 I2C 模組的 7 個可由用戶訪問的寄存器: 
  1. I2CxCONI2Cx 控制寄存器(Control Register):該寄存器用於控制模組的操作。
  2. I2CXSTATI2CX 狀態寄存器(Status Register):該寄存器包含狀態標誌,指示模組在操作期間的狀態。
  3. I2CxMSKI2Cx 位址遮罩寄存器(Slave Mode Address Mask Register):該寄存器指定I2CxADD 中的哪些位可以忽略,從而提供了多地址支援。
  4. I2CxRCV 接收緩衝寄存器(Receive Buffer Register):這是可從中讀取資料位元組的緩衝寄存器。I2CxRCV 寄存器是唯讀寄存器。I2CxTRN 寄存器是讀/ 寫寄存器。
  5. I2CxTRN 發送寄存器(Transmit Register):這是發送寄存器,在發送操作期間位元組寫入該寄存器。
  6. I2CxADD 位址寄存器Address Register):該寄存器且來裝從器件位址。
  7.  I2CxBRG 串列傳輸速率發生器重載寄存器Baud Rate Generator Reload Register):用來裝I2C 模組串列傳輸速率發生器的串列傳輸速率發生器重載值。

PIC24FJ64GA008 I2CxCONI2Cx 控制寄存器
PIC24FJ64GA008 I2CxCONI2Cx 控制寄存器:
bit
Description
bit 15
I2CENI2Cx 使能位
1 = 使能 I2Cx 模組並將 SDAx SCLx 引腳配置為序列埠引腳
0 = 禁止 I2Cx 模組。所有 I2C 引腳都由埠功能控制。
bit 14
未實現:讀為0
bit 13
I2CSIDL在空閒模式停止位元
1 = 當器件進入空閒模式後,模組停止工作
1 = 在空閒模式下模組繼續工作
bit 12
SCLRELSCLx 釋放控制位(作為 I2C 從器件工作時)
1 = 釋放 SCLx 時鐘
0 = 保持 SCLx 時鐘為低電平(時鐘延長)
如果 STREN = 1
該位元為 R/W (即可由軟體寫入 0 啟動時鐘延長,寫入1 釋放時鐘)。
在從器件開始發送時由硬體清零。
在從器件接收結束時由硬體清零。
如果 STREN = 0
該位元為 R/S (即只能由軟體寫入1 釋放時鐘)。
在從器件開始發送時由硬體清零。
bit 11
IPMIENIPMI 使能位
1 = 使能 IPMI 支援模式;對所有地址做出應答
0 = 禁止 IPMI 模式
bit 10
A10M10 位從器件地址位
1 = I2CxADD 是一個 10 位從器件位址
1 = I2CxADD 是一個 7 位從器件位址
bit 9
DISSLW變化率控制禁止位
1 = 禁止變化率控制
0 = 使能變化率控制
bit 8
SMENSMBus 輸入電平位
1 = 使能符合 SMBus 規範的 I/O 引腳門限值
0 = 禁止 SMBus 輸入門限
bit 7
GCEN廣播呼叫使能位(當作為 I2C 從器件工作時)
1 = 允許在 I2CxRSR 接收到廣播呼叫位址時產生中斷
(已使能模組接收模式)
0 = 禁止廣播呼叫地址
bit 6
STRENSCLx 時鐘延長使能位元(當作為 I2C 從器件工作時)
SCLREL 位一起使用。
1 = 使能軟體或接收時鐘延長
1 = 禁止軟體或接收時鐘延長
bit 5
ACKDT應答資料位元(當作為 I2C 主器件工作時。適用於主器件接收操作。)
當軟體啟動應答序列時將發送的值。
1 = 在應答時發送 NACK
0 = 在應答時發送 ACK
bit 4
ACKEN應答序列使能位
(當作為 I2C 主器件工作時。適用於主器件接收操作。)
1 = SDAx SCLx 引腳啟動應答序列,並發送 ACKDT 資料位元。
在主器件應答序列結束時由硬體清零。
0 = 沒有啟動應答序列
bit 3
RCEN接收使能位(當作為 I2C 主器件工作時)
1 = 使能 I2C 接收模式
在主器件接收到資料位元組的 8 位元後由硬體清零。
0 = 沒有啟動接收序列
bit 2
PEN停止條件使能位(當作為 I2C 主器件工作時)
1 = SDAx SCLx 引腳上產生停止條件
在主器件停止序列結束時由硬體清零。
0 = 沒有啟動停止條件
bit 1
RSEN重複啟動條件使能位(當作為 I2C 主器件工作時)
1 = SDAx SCLx 引腳產生重複啟動條件
在主器件重複啟動序列結束時由硬體清零。
0 = 沒有發起重複啟動條件
bit 0
SEN啟動條件使能位(當作為 I2C 主器件工作時)
1 = SDAx SCLx 引腳上產生啟動條件
在主器件啟動序列結束時由硬體清零。
0 = 沒有發起啟動條件

PIC24FJ64GA008 I2CXSTATI2CX 狀態寄存器
PIC24FJ64GA008 I2CXSTATI2CX 狀態寄存器:
bit
Description
bit 15
ACKSTAT應答狀態位元
1 = 接收到來自從器件的 NACK
0 = 接收到來自從器件的 ACK
在從器件應答結束時由硬體置 1 或清零。
bit 14
TRSTAT發送狀態位元
(當作為 I2C 主器件工作時。適用於主器件發送操作。)
1 = 主器件正在進行發送(8 + ACK
0 = 主器件未進行發送
在主器件發送開始時由硬體置 1
在從器件應答結束時由硬體清零。
bit 13 ~ 11
未實現:讀為 0
bit 10
BCL主器件匯流排衝突檢測位元
1 = 在主器件工作期間檢測到了匯流排衝突
0 = 未發生衝突
在檢測到匯流排衝突時由硬體置 1
bit 9
GCSTAT廣播呼叫狀態位元
1 = 接收到了廣播呼叫位址
0 = 未接收到廣播呼叫位址
當位址與廣播呼叫位址匹配時由硬體置 1
在檢測到停止條件時由硬體清零。
bit 8
ADD1010 位元位址狀態位元
1 = 10 位地址匹配
0 = 10 位地址不匹配
當與 10 位元位址的第二個位元組匹配時由硬體置 1
在檢測到停止條件時由硬體清零。
bit 7
IWCOL寫衝突檢測位
1 = 由於 I2C 匯流排忙,嘗試寫 I2CxTRN 寄存器的操作失敗
0 = 未發生衝突
當在匯流排忙的情況下寫 I2CxTRN 時由硬體置 1 (由軟體清零)。
bit 6
I2COV接收溢出標誌位元
1 = I2CxRCV 寄存器仍然保存原先的位元組時又接收了新位元組
0 = 未發生溢出
嘗試將資料從 I2CxRSR 傳輸到 I2CxRCV 時由硬體置 1 (由軟體清零)。
bit 5
D/A資料/ 位址位元(當作為 I2C 從器件工作時)
1 = 表示上次接收的位元組是資料
0 = 表示上次接收的位元組是器件位址
器件位址匹配時由硬體清零。
通過寫 I2CxTRN 或接收從器件位元組由硬體置 1
bit 4
P停止位
1 = 上一次檢測到了停止位
0 = 上一次沒有檢測到停止位
當檢測到啟動、重複啟動或停止條件時由硬體置 1 或清零。
bit 3
S啟動位
1 = 上一次檢測到了啟動(或重複啟動)位
0 = 上一次未檢測到啟動位
當檢測到啟動、重複啟動或停止條件時由硬體置 1 或清零。
bit 2
R/W/ 寫資訊位元(當作為 I2C 從器件工作時)
1 = 讀——表示從器件輸出資料
0 = 寫——表示從器件接收資料
當接收到 I2C 器件位址位元組後由硬體置1 或清零。
bit 1
RBF接收緩衝器滿狀態位元
1 = 接收完成, I2CxRCV 滿
0 = 接收沒有完成, I2CxRCV
當接收到的位元組寫入 I2CxRCV 後由硬體置1
當軟體讀 I2CxRCV 時由硬體清零。
bit 0
TBF發送緩衝器滿狀態位元
1 = 正在發送, I2CxTRN 滿
0 = 發送完成, I2CxTRN
當軟體寫 I2CxTRN 時由硬體置 1
當資料發送完成時由硬體清零。

PIC24FJ64GA008 I2CxMSKI2Cx 從動模式位址遮罩寄存器
PIC24FJ64GA008 I2CxMSKI2Cx 從動模式位址遮罩寄存器:
bit
Description
bit 15 ~ 10
未實現:讀為 0
bit 9 ~ 0
AMSKx位址位 x 遮罩選擇位
對於 10 位地址:
1 = 對進入報文的地址位 Ax 使能遮罩;在該位置不要求位匹配
0 = 禁止對Ax 位的遮罩;在該位置要求位匹配
對於 7 位地址(僅 I2CxMSK<6:0>):
1 = 對進入報文的地址位 Ax + 1 使能遮罩;在該位置不要求位匹配
0 = 禁止對 Ax + 1 位的遮罩;在該位置要求位匹配

PIC24F I2C 模組相關的寄存器

沒有留言:

張貼留言