c8051f020 I/O配置小結(jié)
C8051F的每個(gè)I/O口引腳都可以被配置為推挽或漏極開路輸出。同時(shí)引入了數(shù)字交叉開關(guān),允許將內(nèi)部數(shù)字系統(tǒng)資源映射到P0、P1、P2和P3 的端口引腳。通過設(shè)置交叉開關(guān)寄存器可將片內(nèi)的計(jì)數(shù)器/定時(shí)器、串行總線、硬件中斷、ADC轉(zhuǎn)換啟動(dòng)輸入、比較器輸出以及微控制器內(nèi)部的其他數(shù)字信號(hào)配置 為出現(xiàn)在端口I/O引腳。必須在訪問這些外設(shè)的I/O之前配置和允許交叉開關(guān)。
注意的問題:
1.低端口既能按位尋址,也可以按字節(jié)尋址;高端口只能按字節(jié)尋址。
2.沒有被分配到的引腳作為一般的數(shù)字通用I/O口。
3.P1口還可以用作ADC1的模擬輸入。
4.P0MDOUT~P3MDOUT用于控制I/O端口每一位的輸出狀態(tài)。
5.EMIF(外部存儲(chǔ)器接口)是用于CPU與片外XRAM之間的數(shù)據(jù)傳輸通道,通過寄存器EMI0CF和EMI0CN選擇和管理端口實(shí)現(xiàn)數(shù)據(jù)的傳輸。
6.為了能訪問片外存儲(chǔ)器空間,必須設(shè)置EMI0CN寄存器的內(nèi)容為片外存儲(chǔ)器的空間頁地址。
7.如果把外部存儲(chǔ)器接口(EMIF)設(shè)置在高端口則首先要把EMI0CF的PRTSEL位設(shè)置為1,選擇高端口,同時(shí)選擇地址的復(fù)用或非復(fù)用方式,在把XBR的外部寄存器的EMIFLE位設(shè)置為0。
8.復(fù)用方式配置:在復(fù)用方式下,數(shù)據(jù)總線和地址總線的第8位共用相同的引腳(AD0~AD7)。在該方式下,要用一個(gè)外部鎖存器(如 74HC373或相同功能的鎖存器)保持RAM地址的低8位。外部鎖存器由ALE(地址鎖存使能)信號(hào)控制,ALE信號(hào)由外部存儲(chǔ)器接口邏輯驅(qū)動(dòng)。
9.在總線復(fù)用時(shí),需要把地址數(shù)據(jù)復(fù)用端口配置為漏極開路。
10.ALE高/低脈寬占1個(gè)SYSCLK周期,地址建立/保持時(shí)間占0個(gè)SYSCLK周期,/WR和/RD占12個(gè)SYSCLK周期,EMIF工 作在地址/數(shù)據(jù)復(fù)用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF的步驟是:先將EMIF選到低端口或高端口;然后選擇復(fù)用方式或非復(fù)用方式;再選擇存儲(chǔ)器的模式(只用片內(nèi)存儲(chǔ)器、不帶塊選擇的分 片方式、帶塊選擇的分片方式或只用片外存儲(chǔ)器);然后設(shè)置EMI0TC;最后通過寄存器PnMDOUT和P74OUT選擇所期望的相關(guān)端口的輸出方式。 如:
void PORT_Init (void)
{
XBR2 = 0x40; /*使能交叉開關(guān)和弱上拉*/
P74OUT |= 0xff; /*使能P4~P7推挽輸出*/
EMI0CF |= 0x2c; /*EMIF工作在地址/數(shù)據(jù)復(fù)用方式,只用外部存儲(chǔ)器,ALE高/低脈寬占1個(gè)SYSCLK周期*/
EMI0TC |= 0x6c; /*地址建立/保持時(shí)間占0個(gè)SYSCLK周期,/WR和/RD占12個(gè)SYSCLK周期*/
P3MDOUT |= 0xdf; /*使能P3.5推挽輸出*/
}
11.避免高端口處于“浮空”狀態(tài),以避免因輸入浮空為無效邏輯電平而導(dǎo)致不必要的功率消耗,為此應(yīng)采取如下措施的任何一種:a.將XBR2.7位設(shè)置為邏輯0選擇弱上拉狀態(tài)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值
WEAKPUD XBARE - T4EXE T4E UART1E EMIFLE CNVSTE 00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址
位7 WEAKPUD 弱上拉禁止位
0 弱上拉全局允許
1 弱上拉全局禁止
位6 XBARE 交叉開關(guān)允許位
0 交叉開關(guān)禁止端口0 1 2 和3 的所有引腳被強(qiáng)制為輸入方式
1 交叉開關(guān)允許
位5 未用讀0 寫=忽略
位4 T4EXE T4EX 輸入允許位
0 T4EX 不連到端口引腳
1 T4EX 連到端口引腳
位3 T4E T4 輸入允許位
0 T4 不連到端口引腳
1 T4 連到端口引腳
位2 UART1E UART1 I/O 允許位
0 UART1 I/O 不連到端口引腳
1 UART1 TX 和RX 連到兩個(gè)端口引腳
位1 EMIFLE 外部存儲(chǔ)器接口低端口允許位
0 P0.7 P0.6 和P0.5 的功能由交叉開關(guān)或端口鎖存器決定
1 如果EMI0CF.4 = 0 外部存儲(chǔ)器接口為復(fù)用方式
則P0.7 (/WR) P0.6 (/RD)和P0.5 (/ALE)被交叉開關(guān)跳過它們的輸出
狀態(tài)由端口鎖存器和外部存儲(chǔ)器接口決定
1 如果EMI0CF.4 = 1 外部存儲(chǔ)器接口為非復(fù)用方式
則P0.7 (/WR)和P0.6 (/RD)被交叉開關(guān)跳過它們的輸出狀態(tài)由端口鎖
存器和外部存儲(chǔ)器接口決定
位0 CNVSTE 外部轉(zhuǎn)換啟動(dòng)輸入允許位
0 CNVSTR 不連到端口引腳
1 CNVSTR 連到端口引腳;
b.令P74OUT=0xFF,將高端口輸出方式配置為推拉方式(P74OUT為高端口輸出方式寄存器);
c.向高端口數(shù)據(jù)寄存器P4、P5、P6和P7寫0。
12.配置端口引腳的輸出方式
每個(gè)端口引腳的輸出方式都可被配置為漏極開路或推挽方式。在推挽方式下向端口數(shù)據(jù)
寄存器中的相應(yīng)位寫邏輯0 將使端口引腳被驅(qū)動(dòng)到GND 寫邏輯1 將使端口引腳被驅(qū)動(dòng)到VDD ,在漏極開路方式下向端口數(shù)據(jù)寄存器中的相應(yīng)位寫邏輯0 將使端口引腳被驅(qū)動(dòng)
到GND 寫邏輯1 將使端口引腳處于高阻狀態(tài),當(dāng)系統(tǒng)中不同器件的端口引腳有共享連接
即多個(gè)輸出連接到同一個(gè)物理線時(shí)(例如SMBus 連接中的SDA 信號(hào)),使用漏極開路方式可
以防止不同器件之間的沖突。(推挽方式在有些書中稱為推拉方式)
關(guān)于開漏、推挽方式,漏級(jí)開路即高阻狀態(tài),適用于輸入/輸出,其可獨(dú)立輸入/輸出低電平和高阻狀態(tài),若需要產(chǎn)生高電平,則需使用外部上拉電 阻或使用如LCX245等電平轉(zhuǎn)換芯片。有些朋友,尤其是未學(xué)過此方面知識(shí)的朋友,在實(shí)際工作中將I/O口設(shè)置為漏開,并想輸出高電平,但向口線上寫1后 對(duì)方并未認(rèn)出高電平,但用萬用表測量引腳確有電壓,這種認(rèn)為是不對(duì)的,對(duì)于高阻狀態(tài)來說,測量電壓是無意義的,正確的方法應(yīng)是外加上拉電阻,上拉電阻的阻 值=上拉電壓/芯片引腳最大灌(拉)電流。
推挽方式可完全獨(dú)立產(chǎn)生高低電平,推挽方式為低阻,這樣,才能保證口線上不分走電壓或分走極小的電壓(可忽略),保證輸出與電源相同的高電平,推挽適用于輸出而不適用于輸入,因?yàn)槿魧?duì)推挽(低阻)加高電平后,I=U/R,I會(huì)很大,將造成口的燒毀。
對(duì)與C8051F的很多型號(hào)片子,將I/O口設(shè)置為推挽方式的做法為:PnMDOUT=0xff,Pn=0x00,這樣設(shè)置I/O口為推挽,并輸出 低電平(可降低功耗) 將I/O口設(shè)置為漏開方式的做法為:PnMDOUT=0x00,Pn=0x11,這樣設(shè)置I/O口為漏開。
如果學(xué)過三極管放大電路一定知道,前置單管放大器和功放末級(jí)放大電路的區(qū)別。單片機(jī)內(nèi)部的邏輯經(jīng)過內(nèi)部的邏輯運(yùn)算后需要輸出到外面,外面的器件可能需要較大的電流才能推動(dòng),因此在單片機(jī)的輸出端口必須有一個(gè)驅(qū)動(dòng)電路。
這種驅(qū)動(dòng)電路有兩種形式:
其中的一種是采用一只N型三極管(npn或n溝道),以npn三極管為例,就是e接地,b接內(nèi)部的邏輯運(yùn)算,c引出,b受內(nèi)部驅(qū)動(dòng)可以控制三極管是否導(dǎo)通 但如果三極管的c極一直懸空,盡管b極上發(fā)生高低變化,c極上也不會(huì)有高低變化,因此在這種條件下必須在外部提供一個(gè)電阻,電阻的一端接c(引出腳)另一 端接電源,這樣當(dāng)三極管的b有高電壓是三極管導(dǎo)通,c電壓為低,當(dāng)b為低電壓時(shí)三極管不通,c極在電阻的拉動(dòng)下為高電壓,這種驅(qū)動(dòng)電路有個(gè)特點(diǎn):低電壓是 三極管驅(qū)動(dòng)的,高電壓是電阻驅(qū)動(dòng)的(上下不對(duì)稱),三極管導(dǎo)通時(shí)的ec內(nèi)阻很小,因此可以提供很大的電流,可以直接驅(qū)動(dòng)led甚至繼電器,但電阻的驅(qū)動(dòng)是 有限的,最大高電平輸出電流=(vcc-Vh)/r;
另一種是互補(bǔ)推挽輸出,采用2只晶體管,一只在上一只在下,上面的一只是n型,下面為p型(以三極管為例),兩只管子的連接為:npn(上)的c連 vcc,pnp(下)的c接地,兩只管子的ee,bb相連,其中ee作為輸出(引出腳),bb接內(nèi)部邏輯,這個(gè)電路通常用于功率放大點(diǎn)路的末級(jí)(音響), 當(dāng)bb接高電壓時(shí)npn管導(dǎo)通輸出高電壓,由于三極管的ec電阻很小,因此輸出的高電壓有很強(qiáng)的驅(qū)動(dòng)能力,當(dāng)bb接低電壓時(shí)npn截至,pnp導(dǎo)通,由于 三極管的ec電阻很小因此輸出的低電壓有很強(qiáng)的驅(qū)動(dòng)能力,簡單的例子,9013導(dǎo)通時(shí)ec電阻不到10歐,以Vh=2.5v,vcc=5v計(jì)算,高電平輸 出電流最大=250MA,短路電流500ma,這個(gè)計(jì)算同時(shí)告訴我們采用推挽輸出時(shí)一定要小心千萬不要出現(xiàn)外部電路短路的可能,否則肯定燒毀芯片,特別是 外部驅(qū)動(dòng)三極管時(shí)別忘了在三極管的基極加限流電阻。推挽輸出電路的形式很多,有些單片機(jī)上下都采用n型管,但內(nèi)部邏輯提供互補(bǔ)輸出,以上的說明僅僅為了說 明推挽的原理,為了更深的理解可以參考功率放大電路。
振蕩器
問:內(nèi)部時(shí)鐘振蕩器是否穩(wěn)定?是否可以用于產(chǎn)生波特率的時(shí)基?
答: 不同器件的內(nèi)部時(shí)鐘振蕩器的精度是不同的(±20%)。隨電源電壓變化,它也將發(fā)生變化(6.5%/V)。但基本不隨溫度變化(<1%溫度變化范圍 -40℃~+85℃)。由于不同器件內(nèi)部振蕩器的離散性較大,所以不能用于產(chǎn)生波特率,應(yīng)該外接標(biāo)準(zhǔn)晶體 。而有些器件,如C8051F3xx/f12x/f04x/f06x內(nèi)部振蕩器精度為±2%,可用于產(chǎn)生波特率 。
問:片內(nèi)/外振蕩器如何配置?
答:正確步驟:
1、允許外部振蕩器;
2、等待1ms;
3、查詢XTLVLD '0'->'1'
4、切換到外部振蕩器。
注意:振蕩器頻率的選擇,即OSCXCN寄存器的配置(外部振蕩器頻率控制位的設(shè)置)。關(guān)于更多的信息以及源代碼可以參看應(yīng)用筆記AN002《配置內(nèi)部和外部振蕩器》。應(yīng)用筆記可以從我公司網(wǎng)站下載:www.xhl.com.cn
問:C8051F MCU的指令執(zhí)行速度為多少?
答:C8051F MCU的CIP-51內(nèi)核采用流水線結(jié)構(gòu),與標(biāo)準(zhǔn)的8051結(jié)構(gòu)相比,指令執(zhí)行速度有很大的提高。標(biāo)準(zhǔn)的8051單片機(jī)執(zhí)行一個(gè)單周期指令需要12個(gè)系統(tǒng) 時(shí)鐘周期,而C8051F MCU執(zhí)行一個(gè)單周期指令只需要一個(gè)系統(tǒng)時(shí)鐘周期。如果系統(tǒng)時(shí)鐘頻率為25MHz,執(zhí)行一個(gè)單周期指令所需時(shí)間為40ns。
問:切換外部晶振時(shí)應(yīng)注意哪些問題?
答:首先要允許外部振蕩器,但此時(shí)的系統(tǒng)時(shí)鐘源仍應(yīng)是內(nèi)部時(shí)鐘,直到外部振蕩器穩(wěn)定后,才可將系統(tǒng)時(shí)鐘源切換到外部振蕩器上,否則會(huì)出現(xiàn)切換不過去,系統(tǒng)死機(jī)的情況。
問:使用外部晶振應(yīng)注意哪些問題?
答:1、所有的模擬和數(shù)字電源引腳都應(yīng)接電源(2.7~3.6V);
2、C8051F3xx系列器件的晶振引腳間應(yīng)跨接一個(gè)10M電阻(在新華龍網(wǎng)站的“主頁”—“原理圖/PCB庫”中有C8051F系列單片機(jī)的典型接線圖);
3、晶振、電容等相關(guān)器件盡量靠近單片機(jī)的晶振引腳。
問:系統(tǒng)時(shí)鐘切換到外部時(shí)鐘后,內(nèi)部的時(shí)鐘是否應(yīng)關(guān)閉?
答:可以選擇關(guān)閉或不關(guān)閉,但是從降低功耗的角度來說,應(yīng)該關(guān)閉。
問:系統(tǒng)時(shí)鐘可不可以在程序中隨時(shí)切換?
答:可以,但是由內(nèi)部再一次切換到外部時(shí)應(yīng)按照技術(shù)問答2所介紹的步驟進(jìn)行切換。
問:使用外部晶振時(shí)如何配置芯片的引腳?
答答:對(duì)于芯片上有固定晶振引腳的設(shè)備(例如C8051F02X);相應(yīng)時(shí)鐘輸入引腳按選擇的晶振模式自動(dòng)分配引腳;
對(duì)于晶振引腳與GPIO共用的芯片(例如C8051F30X);晶振引腳要按下述方式進(jìn)行設(shè)置:
(1).外接晶體體時(shí);XTAL1與XTAL2都要配置為模擬輸入
(2).外接振蕩電路為“RC”或“C”方式時(shí),XTAL2引腳要配置為模擬輸入
(3).外接CMOS時(shí)鐘電路時(shí),XTAL2引腳要配置為數(shù)字輸入
(4).以上幾種方式在引腳的配置中都要使用跳過功能將此引腳跳過
問:外接晶振的最高頻率是多少?
答:外接晶振的最高頻率是30MHz;
模數(shù)轉(zhuǎn)換
問:從上電(或退出掉電模式)到ADC穩(wěn)定開始轉(zhuǎn)換需要多長時(shí)間?
答:模擬建立時(shí)間也就是等待參考電平穩(wěn)定的時(shí)間。它取決于接在VREF引腳的電容容量。此電容越大VREF的噪音就越小,ADC轉(zhuǎn)換結(jié)果的噪音也就越小。如果用4.7μF電容,則穩(wěn)定時(shí)間大約為2ms,如果無旁路電容(不推薦),穩(wěn)定時(shí)間大約為10μS。
注意:在開始轉(zhuǎn)化之前,需要一個(gè)1.5μS的跟蹤時(shí)間,這也就決定了ADC多路轉(zhuǎn)換開關(guān)(MUX)的切換速度。
問:ADC的最大輸入電壓及輸入阻抗?
答:ADC的最大輸入電壓為VREF,它的輸入電壓范圍是0V-AV+/VDD。
輸入電容為10pF;輸入阻抗等價(jià)于一個(gè)5kΩ電阻和一個(gè)10pF電容的串聯(lián)。
請(qǐng)參考應(yīng)用筆記AN019“計(jì)算開關(guān)電容ADC的建立時(shí)間”。
問:ADC可編程窗口檢測器有什么用途?
答:ADC可編程窗口檢測器在很多應(yīng)用中非常有用。它不停地將ADC輸出與用戶編程的限制量進(jìn)行比較,并在檢查到越限條件時(shí)通知系統(tǒng)控制器,這在中斷驅(qū)動(dòng)的系統(tǒng)中尤其有效,既可以節(jié)省代碼空間和CPU帶寬又能提供快速響應(yīng)的時(shí)間。
問:為了使ADC或DAC具有更好的性能,是否應(yīng)在VREF 引腳接電容?
答:推薦在VREF引腳接一個(gè)0.1μF的陶瓷電容器與一個(gè)大的電容(典型為4.7μF鉭電容)。在VREF引腳加電容是為了降低VREF的噪聲。因?yàn)閂REF的噪聲越小,ADC或DAC轉(zhuǎn)換結(jié)果的噪聲也就越小。且這兩個(gè)電容在PCB板上應(yīng)盡可能離VREF引腳近。
問:內(nèi)部參考電平是否可以用于外部電路的參考?
答: 可以,你可以用VREF信號(hào)作為輸出驅(qū)動(dòng)其它電路(像放大器的偏置電壓等)。注意,VREF引腳只能提供源電流,也就是說,要有負(fù)載接地使電流流出 C8051器件。例如,如果你將VREF連到OP運(yùn)放的(+)節(jié)點(diǎn),你要加一個(gè)下拉電阻對(duì)地(24K左右)將電流限制在100μA。
問:如果測試的模擬輸入電壓范圍是0-5V怎么辦?
答: 因?yàn)槟M輸入(AINx)引腳不能承受5V電壓,任何引腳在任何情況下(不管ADC或PGA的設(shè)置如何)必須使其輸入 電壓保持在AGND和AV+之間,這是為了避免沉(或源)電流通過ESD保護(hù)裝置。為了測試0-5V范圍的信號(hào),必須使信號(hào)衰減(衰減到AV+以下)才能 進(jìn)入到ADC輸入。當(dāng)使用外部VREF時(shí),要求VREF的最大值比AV+小300mV。
問:F02x器件內(nèi)部有PGA(可編程增益放大器)可以對(duì)輸入模擬信號(hào)進(jìn)行放大。其中的一個(gè)放大倍數(shù)為0.5 倍。是否意味著我可以外接+6V的模擬輸入電壓,經(jīng)過0.5倍的放大變成3V輸入到AINx呢?
答:請(qǐng)注意:任何模擬引腳(數(shù)據(jù)IO口和VDD引腳除外)的最大輸入電壓為-0.3V到 VDD+0.3V。如果超出此范圍可能造成器件永久損壞。
在單端輸入方式,有兩個(gè)限制因素如下:
1、AIN輸入電壓必須在AGND和AV+之間以避免吸/源電流流過ESD保護(hù)器件。
2、AIN電壓必須在AGND和(VREF / GAIN) 之間。假設(shè)一個(gè)12位的ADC,AINx 引腳的輸入電壓小于AGND,結(jié)果將是0x000;如果輸入電壓大于(VREF / GAIN) ,結(jié)果將是0xFFF。
例如,使用外部1.25V參考,PGA增益為0.5,允許的電壓輸入范圍是0V到 (1.25V / 0.5 = 2.5V)。
問:如何提高系統(tǒng)的ADC的性能?
答:第一、將模擬電源和數(shù)字電源分開,可以使用比較簡單的方法,如在模擬電源和數(shù)字電源之間加簡單的濾波。
第二、將模擬地和數(shù)字地分開,并在電源附近通過磁珠連接。
第三、制板時(shí),大面積覆銅。
第四、未使用到的模擬引腳要接地。
第五、為了確保參考電壓的穩(wěn)定,參考電壓引腳一定要接去耦電容。
第六、模擬信號(hào)的輸入電壓范圍是0-VDD,如果模擬輸入的外圍有可能侵入高電壓(超過芯片的極限允許范圍),就要采取保護(hù)措施(如加兩個(gè)肖特級(jí)二極管)。如果模擬輸入會(huì)有瞬間過電流,也要加限流保護(hù)。
問:如果使用內(nèi)部參考源,C8051F020/F021的參考電壓引腳如何連接?
答:C8051F020/F022 共有4個(gè)參考電壓引腳,VREF,VREF0,VRFE1和VREFD。允許ADC和DAC使用一個(gè)外部電壓基準(zhǔn)或片內(nèi)電壓基準(zhǔn)。通過配置VREF0CF 基準(zhǔn)電壓控制寄存器,ADC0還可以使用DAC0的輸出作為內(nèi)部基準(zhǔn),ADC1也可以使用模擬電源作為電壓基準(zhǔn)。內(nèi)部基準(zhǔn)電壓必須通過VREF引腳連接到 芯片內(nèi)部。所以當(dāng)您的系統(tǒng)中使用到內(nèi)部基準(zhǔn)電壓時(shí),必須確保VREF與VREF0,VREF1,VREFD(全部或部分)引腳的連接。
C8051F021/F023共有兩個(gè)參考電壓引腳,VREFA和VREF。如果ADC0和ADC1使用內(nèi)部參考源,必須將VREFA與VREF引腳連接。
注意:如果使用ADC或DAC,則不管電壓基準(zhǔn)取自片內(nèi)還是片外,REF0CN寄存器中的BIASE位必須被置為邏輯1。
問:為什么在進(jìn)行A/D轉(zhuǎn)換時(shí)測得的數(shù)據(jù)跳變很大?
答:當(dāng)輸入信號(hào)有干擾脈沖、ADC的轉(zhuǎn)換時(shí)間太短、在通道切換后通道還沒有穩(wěn)定就開始轉(zhuǎn)換等原因都會(huì)導(dǎo)致轉(zhuǎn)換后的數(shù)據(jù)跳變大,請(qǐng)仔細(xì)檢查以上三點(diǎn)并做相應(yīng)的處理就可以解決此類問題。
問:在進(jìn)行A/D轉(zhuǎn)換時(shí)所測得的數(shù)據(jù)與計(jì)算所得的數(shù)據(jù)相差很大,但跳變不大,為什么?
答:1、計(jì)算時(shí)所用的基準(zhǔn)電壓是多少,如果用的是內(nèi)部基準(zhǔn),把內(nèi)部基準(zhǔn)電壓通過交叉開關(guān)分配到芯片引腳上,再進(jìn)行測量;
2、換別的通道轉(zhuǎn)換看是否正常。
問:ADC的單端輸入與差分輸入的區(qū)別?
答答:在單端方式工作時(shí);ADC轉(zhuǎn)換的是單輸入引腳對(duì)地的電壓值;在增益為1時(shí),測量的值就是輸入的電壓值;范圍是0V到VREF;當(dāng)增益增加時(shí),輸入的范圍要相應(yīng)的減小;
在差分方式工作時(shí);ADC轉(zhuǎn)換的是AIN+與AIN-兩個(gè)引腳的差值;在增益為1時(shí),測量的值等于(AIN+)-(AIN-),范圍是-VREF到+VREF;當(dāng)增益增加時(shí),輸入的范圍要相應(yīng)的減小。
注 意:在差分方式時(shí)所提的負(fù)壓是指AIN-引腳的電壓大于AIN+引腳的電壓,實(shí)際輸入到兩個(gè)引腳的電壓對(duì)地都必需是正的;例如:如果AIN+引腳輸入的電 壓為0V,AIN-引腳的輸入電壓為1/2VREF時(shí),差分的輸入電壓為(0V-1/2VREF) = -1/2VREF。
端口
問:器件IO口的吸收(sink)電流和源(source)電流是多少?
答:IO口的沉電流和拉電流的極限參數(shù)為100mA(但是此時(shí)已經(jīng)不能保證端口的正常邏輯關(guān)系了)。具體的參數(shù)請(qǐng)參考datasheet的端口IO部分的“端口I/O直流電氣特性”。
問:端口是否要加保護(hù)?
答:在端口電流瞬間跳變的情況下,建議加限流電阻進(jìn)行保護(hù)。另外如果端口可能有超過極限電壓范圍的瞬變電平侵入,也要加瞬態(tài)保護(hù)。(瞬態(tài)保護(hù)的通常方式為接入TVS器件)
問:C8051F系列單片機(jī)的IO口與傳統(tǒng)8051單片機(jī)相比有什么區(qū)別?
答:①C8051F系列單片機(jī)的IO口全部為三態(tài)雙向口(而傳統(tǒng)8051單片機(jī)P1、P2、P3口為準(zhǔn)雙向口),內(nèi)部有弱上拉可禁止(傳統(tǒng)8051單片機(jī)固有),可配置為開漏輸出和推挽輸出(傳統(tǒng)8051單片機(jī)只有開漏輸出)。
②片內(nèi)數(shù)字資源要通過數(shù)據(jù)交叉開關(guān)(crossbar)按一定的優(yōu)先級(jí)配置到IO引腳(C8051F2xx系列除外,而傳統(tǒng)8051單片機(jī)不具備這一功能)。IO口的配置更加靈活。
問:C8051F系列單片機(jī)電源電壓全部為2.7-3.6V,那么是否有與5V系統(tǒng)接口的比較簡單的解決方案?
答:所有IO口允許5V(極限值為5.8V)輸入,但是輸出高電平為VDD。如果與5V系統(tǒng)接口,最簡單的方法是開漏輸出并在輸出端加接5V上拉,關(guān)鍵是上拉電阻的選擇。具體參考應(yīng)用筆記AN011“在5V系統(tǒng)中使用 C8051Fxxx”。
建議:如果可能,請(qǐng)盡量選用供電電壓兼容的芯片,這是一種最理想的選擇。
問:模擬引腳能否簡單地用于數(shù)字I/O?
答:如果模擬引腳是獨(dú)立的是不可以的。但是如果模擬引腳和數(shù)字IO是復(fù)用的,是可以通過SFR的設(shè)置來完成配置。
問:C8051F020/022的p4-p7口和p0-p3口有什么不同?
答:P0-P3口復(fù)位時(shí)為通用口,可通過Crossbar(數(shù)據(jù)交叉開關(guān))寄存器按優(yōu)先級(jí)設(shè)置成第二功能。而P4-P7口是通用口,另外P4-P7寄存器不能位尋址。
問:如果通過Crossbar寄存器使能并分配為P0.0和P0.1引腳,那么,我還可以用這兩個(gè)引腳為通用I/O嗎?
答:①如果你通過Crossbar使能一個(gè)外設(shè),如UART,那么這個(gè)外設(shè)將控制這些引腳的輸出狀態(tài)(邏輯高/邏輯低)。
②你可以在任何時(shí)刻讀引腳的狀態(tài),與Crossbar控制與否無關(guān)。
③當(dāng)被禁止時(shí),大部分外設(shè)的輸出引腳被置為高阻態(tài)(UART口是一個(gè)很好的例子)。因?yàn)閁ART收發(fā)器無明確的禁止態(tài),你可將相應(yīng)的引腳置成開漏輸出模式,也可以達(dá)到相同的結(jié)果,因?yàn)閁ART收發(fā)器在空閑時(shí)引腳為邏輯1。
總的來說,Crossbar置配后在末使用時(shí)的外設(shè)引腳可以用于數(shù)據(jù)輸入,但不能作為數(shù)據(jù)輸出。其它器件,如F3xx系列,口引腳可通過Crossbar“重新聲明”且用于GPIO引腳對(duì)器件管腳無影響,因?yàn)檫@些器件具有“引腳跳過”(PIN SKIP)特性。
問:IO口的開漏和推挽輸出如何使用?
答:將端口引腳置成推挽輸出方式,這將使能端口引腳驅(qū)動(dòng)器。總體上來講,數(shù)據(jù)輸入端口引腳置成開漏方式、數(shù)據(jù)輸出端口引腳置成推挽方式。當(dāng)引腳用于輸出連接上拉電阻(也就是說當(dāng)與5V系統(tǒng)接口時(shí))時(shí)配置成開漏輸出。
問:引腳P1.4~P1.7中斷如何使用?
答: 如果外部中斷(EX4-EX7)使能且相應(yīng)的引腳P1.4~P1.7變低(可以是外部輸入信號(hào)、寫輸出端口鎖存或是Crossbar定義的外設(shè)啟動(dòng)的事 件)。那么中斷標(biāo)志(PRT1IF.n)將置位,如果全局中斷使能,將產(chǎn)生一個(gè)中斷。中斷邏輯檢測本身的邏輯狀態(tài),與產(chǎn)生邏輯狀態(tài)變化的原因無關(guān)。
問:是不是所有的C8051F系列單片機(jī)的I/O口都是5V兼容?
答:不是,例如C8051F060只有P0口是5V兼容,具體的要參照相關(guān)型號(hào)的數(shù)據(jù)手冊(cè)。
問:P4口的某些引腳已用為外部存儲(chǔ)器的控制信號(hào),剩下的口線能否作為普通I/O使用?
答:可以,但不能直接給此端口送數(shù),應(yīng)通過“與”或者“或”的方式來對(duì)此端口進(jìn)行操作。
問:為什么端口的數(shù)據(jù)寄存器置為0時(shí),其引腳上的電平還是為高電平?
答:交叉開關(guān)使能位沒有置位。
問:端口在停機(jī)(STOP)模式下是什么狀態(tài)?
答:端口在停機(jī)模式下將保持進(jìn)入停機(jī)模式前的狀態(tài)。
編輯:admin 最后修改時(shí)間:2018-05-19