服務(wù)熱線: 0755-83261303
郵箱:ht@htsemi.com
地址:深圳市龍華區(qū)大浪街道浪口社區(qū)華昌路315號(hào)華昌工業(yè)園
金譽(yù)半導(dǎo)體筆記:?jiǎn)纹瑱C(jī)I/O口是什么?有哪些種類
前言:任何MCU單片機(jī)都具有一定數(shù)量的I/O口,沒有I/O口,MCU就失去了與外部溝通的渠道。
單片機(jī)I/O口是用來(lái)定義相對(duì)I/O口位的輸入、輸出的狀態(tài)和方式。其中I是input 輸入的意思,O是output輸出的意思,I/O讀寫就是輸入或輸出讀寫。
根據(jù)I/O口的可配置情況,可以分為如下幾種類型:
1、純輸入或純輸出口:此類I/O口由MCU硬件設(shè)計(jì)決定,只能是輸入或輸出,需要切換到內(nèi)核態(tài)對(duì)操作系統(tǒng)進(jìn)行操作,不可用軟件來(lái)進(jìn)行實(shí)時(shí)的設(shè)定。
例如程序要保存一個(gè)文件到硬盤,在程序執(zhí)行的用戶態(tài),是直接操作磁盤的。只有切換到內(nèi)核態(tài)才能真正去操作磁盤。在進(jìn)行I/O操作時(shí)CPU會(huì)從用戶態(tài)切換為內(nèi)核態(tài),而操作結(jié)束后則需要從內(nèi)核態(tài)切換為用戶態(tài)。
2、直接讀寫I/O口:如MCS-51的I/O口就屬于此類I/O口。當(dāng)執(zhí)行讀I/O口指令時(shí),就是輸入口;當(dāng)執(zhí)行寫I/O口指令則自動(dòng)為輸出口。read: 把數(shù)據(jù)從內(nèi)核緩沖區(qū)復(fù)制到進(jìn)程緩沖區(qū)。 write: 把數(shù)據(jù)從進(jìn)程緩沖區(qū)復(fù)制到內(nèi)核緩沖區(qū)。
因此,上層程序的IO操作、不是物理設(shè)備級(jí)別的讀寫,而是緩存的復(fù)制。設(shè)置緩沖區(qū)的目的就是為了減少頻繁地與設(shè)備之間的物理交換。
3、程序編程設(shè)定輸入輸出方向的:此類I/O口的輸入或輸出由程序根據(jù)實(shí)際的需要來(lái)進(jìn)行設(shè)定,應(yīng)用比較靈活,可以實(shí)現(xiàn)一些總線級(jí)的應(yīng)用,如I2C總線,各種LCD、LED Driver的控制總線等。
對(duì)于I/O口的使用,重要的一點(diǎn)必須牢記的是:對(duì)于輸入口,必須有明確的電平信號(hào),確保不能浮空(可以通過(guò)增加上拉或下拉電阻來(lái)實(shí)現(xiàn));而對(duì)于輸出口,其輸出的狀態(tài)電平必須考慮其外部的連接情況,應(yīng)保證在Standby或靜態(tài)狀態(tài)下不存在拉電流或灌電流。
最重要的一點(diǎn)是:必須設(shè)置寄存器對(duì)引腳進(jìn)行初始化處理,才能使引腳具備有數(shù)字輸入和輸出輸出功能。每使用單片機(jī)的一個(gè)功能,就要對(duì)控制該功能的寄存器進(jìn)行設(shè)置,這就是單片機(jī)編程的特點(diǎn)。