C8051F學習筆記3 優先權交叉開關解碼器

2021-06-08 05:05:00 字數 3693 閱讀 3664

數字和模擬資源可以通過25個

i/o引腳(

c8051f320

)每個埠引腳都可以被定義為通用

i/o(

gpio

)或模擬輸入。

p0.0 ~ p2.3

可以被分配給內部數字資源

特點:所有埠

i/o都耐

5v電壓。 埠

i/o單元可以被配置為漏極開路或推挽方式。 1

.用埠輸入方式暫存器(

pnmdin

)選擇所有埠引腳的輸入方式(模擬或數字)。 2

.用埠輸出方式暫存器(

pnmdout

)選擇所有埠引腳的輸出方式(漏極開路或推挽)。 3

.用埠跳過暫存器(

pnskip

)選擇應被交叉開關跳過的那些引腳。 4

.將引腳分配給要使用的外設(

xbr0

、xbr1)。

5.使能交叉開關(

xbare = 『1』)。

下面以埠

p0為例

pnmdin:

埠輸入方式暫存器

對應的p0mdin[n] =0 

模擬輸入

p0mdin[n]=1 

數字輸入(預設)

pnmdout:

埠出方式暫存器

對應的p0mdout[n] =0 

漏極開路(預設

) p0mdout[n] =1 

推挽輸出

推挽輸出,

push-pull,不需要外加驅動電路,可以直接驅動外面的晶元。

推挽輸出的時候,埠輸出高電平,

nmos

截止,pmos

導通,把

io口拉高;埠輸出為低電平,

pmos

截止,nmos

導通,把

io口拉低,適合驅動一些

ttl負載,

led,或是通訊時用作資料或時鐘傳送;

漏極開路,

open-drain,需要外加電阻上拉到電源。

漏極開漏輸出時

pmos

被禁止,只有保留

nmos

,當埠輸出低電平時,

nmos

導通,把

io拉低;但輸出埠為高電平時,

nmos

截止,埠沒有輸出了高阻浮空狀態

),如果

加上外部上拉電阻

,輸出就變成了高電平

1,適合線與或是用作

i2c通訊。

模擬輸入,

analog in

模擬輸入被使能時,其它

io方式將被禁止,模擬訊號直接經過乙個

pass gate 

送入mcu

內部的adc;

數字輸入,

digital in

當數字輸入時,

io口輸出禁止,數碼訊號經過

schmitt trigger

(施密特觸發器

)送入內部邏輯。

特別需要注意的是當

io口用作輸入埠時:

有兩種方法: 1

、禁止io輸出,配置為數字輸入。注意是所有的

io埠的輸出方式都被禁止 2

、配置為

od方式。這時外部的高電平會保持,低電平會把

io拉低。

通常中斷輸入,資料輸入時可以這樣配置

不管交叉開關是否將埠引腳分配給某個數字外設,都需要對埠驅動器的輸出方式進行設定。例外情況是

smbus

上的sda

和scl

及uart

的rxd

引腳,這些引腳被自動配置為漏極開路。

關於推免和漏極開漏可參考

1)c8051f微控制器中io的使用

2)漏級開路 vs 推挽方式

8051 p0口

p0skip:埠0

跳過暫存器

pnskip[n]=0 

引腳不被交叉開關跳過;(預設)

pnskip[n]=0 

引腳被交叉開關跳過。

xtal1(p0.2)

腳和xtal2(p0.3)

腳用作外部振盪器輸入管腳時,要跳過交叉開關優先權解碼表(

p0skip = 0x0c)。

xbr0:埠

i/o交叉開關暫存器0

xbr1:埠

i/o交叉開關暫存器1

交叉開關負責

smbus

、spi

、uart

、定時器捕捉模組、外部

pca輸入、比較器輸出、定時器外部輸入、

/sysclk

以及a/d

轉換啟動輸入的引腳分配。必須在訪問這些外設的

i/o之前配置和允許交叉開關

未指定的埠引腳作為通用

i/o 。

xbare=0 

交叉開關禁止;

xbare=1 

交叉開關使能。

在交叉開關被使能之前,外部引腳保持標準埠

i/o方式(輸入)。

沒有引腳被跳過的交叉開關優先權解碼表

可以通過

silicon labs ide

軟體的配置嚮導

(configuration wizard)配置

i/o管腳,如下圖,配置

uart0

和spi0

和smbus

。uart0

的tx0

、rx0

固定在p0.4

和p0.5

上,由於

spi0

的優先順序比

sysclk

高,所以

spi的

sck和

miso

依次配置到管腳

p0.0

、p0.1

、(p0.1

的優先順序比

p0.1

高,依次類推)。

p0.2

和p0.3

跳過交叉開關,用於外部振盪器輸入

(xtal1

和xtal2)

。由於p0.4

和p0.5

已佔,所以

spi剩下的

mosi

和nss

配置在p0.6

和p0.7

。sysclk

配置在p1.0。

void port_io_init()

要注意的是,首先要使能優先權交叉解碼器

(enable crossbar)。

1)為使埠p0p1p2.0 ~ p2.3工作在標準埠i/o輸入/輸出方式,交叉開關必須被使能。當交叉開關被禁止時,埠輸出驅動器被禁止。p2.4 ~ p2.7p3.0總是作為標準gpio使用。 2

)未被交叉開關分配的埠引腳和未被模擬外設使用的埠引腳都可以作為通用

i/o。

C8051F環境搭建

usb偵錯程式 u ec6 支援jtag模式 c2模式 jtag介面定義 適用型號c8051f00x c8051f01x c8051f02x c8051f04x c8051f06x c8051f12x c8051f2xx c2介面定義 適用型號c8051f3xx c8051f41x c8051f5x...

c8051f 的IO配置方法及原則

c8051f i 0口 問 c8051f020 022的p4 p7口和p0 p3口有什麼不同?答 p0 p3口復位時為通用口,可通過crossbar 資料交叉開關 暫存器按優先順序設定成第二功能。而p4 p7口是通用口,另外p4 p7暫存器不能位定址。問 如果通過crossbar暫存器使能並分配為p...

C8051F微控制器定時器的定時

假設c8051f020微控制器的晶振是sysclk 22114800hz,即每秒計22114800個數 經過div 12分頻後得到定時器的計數頻率tclk sysclk 12,每秒計22114800 12 1842900個數 sysclk 12 1 s cout t s 則t秒 計數個數cout t...