MCP23S18學習總結

2021-07-07 03:58:43 字數 2418 閱讀 2700

一、mcp23s18的引腳

gpioa和gpiob共16個為雙向io,輸出為開漏輸出,gpio模組包含資料埠gpion、內部上拉電阻、輸出鎖存器olatn

cs片選、sck時鐘、si序列資料輸入、so序列資料輸出

vdd接電源、vss接地、reset復位

inta、intb對應埠中斷輸出

二、暫存器

一共22個暫存器,分為a組和b組。

1、方向暫存器iodir

配置為1,該位引腳為輸入引腳。為0,為輸出引腳。

2、輸入極性暫存器ipol

某位置1,對應gpio反映引腳電平反轉後的值

3、電平變化中斷控制暫存器gpinten

置1,允許對應引腳電平變化中斷

4、中斷控制暫存器intcon

為1,引腳值與預設值defval比較。為0,引腳與先前值比較

5、電平變化中斷的預設值比較暫存器defval

用於判斷中斷時的比較預設值

6、配置暫存器iocon

bank位控制如何對暫存器定址

當bank=1,porta暫存器對映到00h~0ah,portb暫存器對映到10h~1ah

當bank=0,a/b暫存器組合配對

mirror位控制inta和intb如何相互作用

為1,任何乙個埠上的中斷都會使inta和intb啟用

為0,b埠中斷使intb啟用,a埠中斷inta啟用

seqop連續操作模式位

為1,禁止連續操作,位址指標不遞增

為0,使能連續操作,位址指標遞增

odr開漏控制位,用於使能或禁止int引腳的開漏輸出

為1,使能開漏輸出

為0,驅動器輸出有效

intpol中斷極性,用於設定int引腳的極性,僅在odr清零時起作用,將int配置為有源推挽輸出。

為1,高電平有效,為0,低電平有效

intcc中斷清零控制,配置如何清除中斷

為1,讀intcap暫存器時清除中斷

為0,讀gpio暫存器清除中斷

7、gppu上拉電阻配置暫存器

為1,相應埠引腳被乙個內部電阻上拉

8、intf中斷標誌暫存器

為1,相應引腳發生了中斷

9、intcap中斷捕捉暫存器

中斷時捕捉gpio埠值。該暫存器維持不變知道中斷清除。

10、gpio埠暫存器

寫入該暫存器將修改輸出鎖存暫存器olat

11、olat輸出鎖存暫存器

讀取該暫存器將讀取olat而不是埠本身,寫入該暫存器將修改輸出鎖存器,後者將修改輸出引腳的配置。

三、中斷邏輯

1、電平變化中斷的發生:gpinten允許中斷,引腳發生變化或與預設值不同(設定intcon和defval)

2、iocon.mirro決定inta和intb互為映象

3.中斷輸出

通過iocon配置為低電平、高電平、開漏輸出

4.中斷埠值

intcap

5.中斷清除

讀gpio或intcap。只要中斷未清除,後續中斷條件不會再引起中斷。

四、工作模式

1、位元組模式,禁止指標自動遞增,可通過額外時鐘連續訪問同一位址

2、一種特殊模式(iocon.bank=0的位元組模式)使位址指標在關聯的a/b暫存器對之間切換。

3、連續模式,位址指標自動遞增,訪問完最後乙個暫存器後,位址指標返回到00h。 

五、spi

1.spi讀寫

位元組模式,對於讀寫操作都是從拉低cs開始,隨後傳送讀寫命令到器件,操作碼後跟位址和至少乙個資料位元組

連續操作,以上拉cs結束

2.spi定址

控制位元組格式

spi定址暫存器

18年秋季學習總結

目錄 c語言程式設計 基礎的語句學習,標頭檔案 includeint main 主函式 函式變數int double,char,item,sum 位元組長度 輸入輸出語句 printf輸出,scanf輸入,if條件判斷,處理整型和浮點型資料,也可以處理字元型資料 優先順序,雙目運算子 lf 保留小數...

8月23日學習總結

1.訪問修飾符 意義 將某些成員宣告成private,對於使用者來說可以說是一種服務,因為這樣使用者可以知道哪些是他關注的哪些是不重要的,不需要關注,如此歷來對於使用來說降低了對使用物件認識的難度。讓程式設計者可以更動class內部運作方式,而無須擔心波及到客戶端程式。2.基本資料型別和引資料型別在...

5月18日學習總結

上節課老師教授了兩種方式解決刪除vector中資料排序混亂問題,下面是通過虛刪的方式重新寫的 這種方式適合資料類中有很多中資料的情況,用multimap時存vector中的下標,但是像這種通訊錄只有姓名和 號碼的類,直接用的multimap就行了。includeusing namespace std...