日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

《Linux设备驱动开发详解 A》一一2.3 接口与总线

發(fā)布時間:2025/7/14 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Linux设备驱动开发详解 A》一一2.3 接口与总线 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本節(jié)書摘來華章計算機出版社《Linux設(shè)備驅(qū)動開發(fā)詳解 A》一書中的第2章,第2.3節(jié),作者:宋寶華 更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“華章計算機”公眾號查看。1

2.3 接口與總線

2.3.1 串口
RS-232、RS-422與RS-485都是串行數(shù)據(jù)接口標(biāo)準(zhǔn),最初都是由電子工業(yè)協(xié)會(EIA)制訂并發(fā)布的。
RS-232在1962年發(fā)布,命名為EIA-232-E。之后發(fā)布的RS-422定義了一種平衡通信接口,它是一種單機發(fā)送、多機接收的單向、平衡傳輸規(guī)范,被命名為TIA/EIA-422-A標(biāo)準(zhǔn)。RS-422改進了RS-232通信距離短、速率低的缺點。為進一步擴展應(yīng)用范圍,EIA又于1983年在RS-422的基礎(chǔ)上制定了RS-485標(biāo)準(zhǔn),增加了多點、雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖突保護特性,并擴展了總線共模范圍,被命名為TIA/EIA-485-A標(biāo)準(zhǔn)。
1969年發(fā)布的RS-232修改版RS-232C是嵌入式系統(tǒng)中應(yīng)用最廣泛的串行接口,它為連接DTE(數(shù)據(jù)終端設(shè)備)與DCE(數(shù)據(jù)通信設(shè)備)而制定。RS-232C標(biāo)準(zhǔn)接口有25條線(4條數(shù)據(jù)線、11條控制線、3條定時線、7條備用和未定義線),常用的只有9根,它們是RTS/CTS(請求發(fā)送/清除發(fā)送流控制)、RxD/TxD(數(shù)據(jù)收發(fā))、DSR/DTR(數(shù)據(jù)終端就緒/數(shù)據(jù)設(shè)置就緒流控制)、DCD(數(shù)據(jù)載波檢測,也稱RLSD,即接收線信號檢出)、Ringing-RI(振鈴指示)、SG(信號地)信號。RTS/CTS、RxD / TxD、DSR/DTR等信號的定義如下。
RTS:用來表示DTE請求DCE發(fā)送數(shù)據(jù),當(dāng)終端要發(fā)送數(shù)據(jù)時,使該信號有效。
CTS:用來表示DCE準(zhǔn)備好接收DTE發(fā)來的數(shù)據(jù),是對RTS的響應(yīng)信號。
RxD:DTE通過RxD接收從DCE發(fā)來的串行數(shù)據(jù)。
TxD:DTE通過TxD將串行數(shù)據(jù)發(fā)送到DCE。
DSR:有效(ON狀態(tài))表明DCE可以使用。
DTR:有效(ON狀態(tài))表明DTE可以使用。
DCD:當(dāng)本地DCE設(shè)備收到對方DCE設(shè)備送來的載波信號時,使DCD有效,通知DTE準(zhǔn)備接收,并且由DCE將接收到的載波信號解調(diào)為數(shù)字信號,經(jīng)RxD線送給DTE。
Ringing-RI:當(dāng)調(diào)制解調(diào)器收到交換臺送來的振鈴呼叫信號時,使該信號有效(ON狀態(tài)),通知終端,已被呼叫。
最簡單的RS-232C串口只需要連接RxD、TxD、SG這3個信號,并使用XON/XOFF軟件流控。
組成一個RS-232C串口的硬件原理如圖2.9所示,從CPU到連接器依次為CPU、UART(通用異步接收器發(fā)送器,作用是完成并/串轉(zhuǎn)換)、CMOS/TTL電平與RS-232C電平轉(zhuǎn)換、DB9/DB25或自定義連接器。

圖2.9 RS-232C串口電路原理
2.3.2 I2C
I2C(內(nèi)置集成電路)總線是由Philips公司開發(fā)的兩線式串行總線,產(chǎn)生于20世紀(jì)80年代,用于連接微控制器及其外圍設(shè)備。I2C總線簡單而有效,占用的PCB(印制電路板)空間很小,芯片引腳數(shù)量少,設(shè)計成本低。I2C總線支持多主控(Multi-Mastering)模式,任何能夠進行發(fā)送和接收的設(shè)備都可以成為主設(shè)備。主控能夠控制數(shù)據(jù)的傳輸和時鐘頻率,在任意時刻只能有一個主控。
組成I2C總線的兩個信號為數(shù)據(jù)線SDA和時鐘SCL。為了避免總線信號的混亂,要求各設(shè)備連接到總線的輸出端必須是開漏輸出或集電極開路輸出的結(jié)構(gòu)??偩€空閑時,上拉電阻使SDA和SCL線都保持高電平。根據(jù)開漏輸出或集電極開路輸出信號的“線與”邏輯,I2C總線上任意器件輸出低電平都會使相應(yīng)總線上的信號線變低。
“線與”邏輯指的是兩個或兩個以上的輸出直接互連就可以實現(xiàn)“與”的邏輯功能,只有輸出端是開漏(對于CMOS器件)輸出或集電極開路(對于TTL器件)輸出時才滿足此條件。工程師一般以“OC門”簡稱開漏或集電極開路。
I2C設(shè)備上的串行數(shù)據(jù)線SDA接口電路是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。同樣地,串行時鐘線SCL也是雙向的,作為控制總線數(shù)據(jù)傳送的主機要通過SCL輸出電路發(fā)送時鐘信號,并檢測總線上SCL上的電平以決定什么時候發(fā)下一個時鐘脈沖電平;作為接收主機命令的從設(shè)備需按總線上SCL的信號發(fā)送或接收SDA上的信號,它也可以向SCL線發(fā)出低電平信號以延長總線時鐘信號周期。
當(dāng)SCL穩(wěn)定在高電平時,SDA由高到低的變化將產(chǎn)生一個開始位,而由低到高的變化則產(chǎn)生一個停止位,如圖2.10所示。
開始位和停止位都由I2C主設(shè)備產(chǎn)生。在選擇從設(shè)備時,如果從設(shè)備采用7位地址,則主設(shè)備在發(fā)起傳輸過程前,需先發(fā)送1字節(jié)的地址信息,前7位為設(shè)備地址,最后1位為讀寫標(biāo)志。之后,每次傳輸?shù)臄?shù)據(jù)也是1字節(jié),從MSB開始傳輸。每個字節(jié)傳完后,在SCL的第9個上升沿到來之前,接收方應(yīng)該發(fā)出1個ACK位。SCL上的時鐘脈沖由I2C主控方發(fā)出,在第8個時鐘周期之后,主控方應(yīng)該釋放SDA,I2C總線的時序如圖2.11所示。

2.3.3 SPI
SPI(Serial Peripheral Interface,串行外設(shè)接口)總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使CPU與各種外圍設(shè)備以串行方式進行通信以交換信息。一般主控SoC作為SPI的“主”,而外設(shè)作為SPI的“從”。
SPI接口一般使用4條線:串行時鐘線(SCLK)、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOSI和低電平有效的從機選擇線SS(在不同的文獻里,也常稱為nCS、CS、CSB、CSN、nSS、STE、SYNC等)。
圖2.12演示了1個主機連接3個SPI外設(shè)的硬件連接圖。
如圖2.13所示,在SPI總線的傳輸中,SS信號是低電平有效的,當(dāng)我們要與某外設(shè)通信的時候,需要將該外設(shè)上的SS線置低。此外,特別要注意SPI從設(shè)備支持的SPI總線最高時鐘頻率(決定了SCK的頻率)以及外設(shè)的CPHA、CPOL模式,這決定了數(shù)據(jù)與時鐘之間的偏移、采樣的時刻以及觸發(fā)的邊沿是上升沿還是下降沿。

圖2.13 SPI總線的時序
SPI模塊為了和外設(shè)進行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性(CPOL)和相位(CPHA)可以進行配置。如果CPOL=?0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=?1,串行同步時鐘的空閑狀態(tài)為高電平。如果CPHA=?0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA?=?1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。
2.3.4 USB
USB(通用串行總線)是Intel、Microsoft等廠商為解決計算機外設(shè)種類的日益增加與有限的主板插槽和端口之間的矛盾而于1995年提出的,它具有數(shù)據(jù)傳輸率高、易擴展、支持即插即用和熱插拔的優(yōu)點,目前已得到廣泛應(yīng)用。
USB 1.1包含全速和低速兩種模式,低速方式的速率為1.5Mbit/s,支持一些不需要很大數(shù)據(jù)吞吐量和很高實時性的設(shè)備,如鼠標(biāo)等。全速模式為12Mbit/s,可以外接速率更高的外設(shè)。在USB 2.0中,增加了一種高速方式,數(shù)據(jù)傳輸率達到480Mbit/s,半雙工,可以滿足更高速外設(shè)的需要。而USB 3.0(也被認(rèn)為是Super Speed USB)的最大傳輸帶寬高達5.0Gbit/s(即640MB/s),全雙工。
USB 2.0總線的機械連接非常簡單,采用4芯的屏蔽線,一對差分線(D+、D-)傳送信號,另一對(VBUS、電源地)傳送+5V的直流電。USB 3.0 線纜則設(shè)計了8條內(nèi)部線路,除VBUS、電源地之外,其余3對均為數(shù)據(jù)傳輸線路。其中保留了D+與D-這兩條兼容USB 2.0的線路,新增了SSRX與SSTX專為USB 3.0所設(shè)的線路。
在嵌入式系統(tǒng)中,電路板若需要掛接USB設(shè)備,則需提供USB主機(Host)控制器和連接器;若電路板需要作為USB設(shè)備,則需提供USB設(shè)備適配器和連接器。目前,大多數(shù)SoC集成了USB主機控制器(以連接USB外設(shè))和設(shè)備適配器(以將本嵌入式系統(tǒng)作為其他計算機系統(tǒng)的USB外設(shè),如手機充當(dāng)U盤)。由USB主機、設(shè)備和Hub組成的USB系統(tǒng)的物理拓?fù)浣Y(jié)構(gòu)如圖2.14所示。

圖2.14 USB的物理拓?fù)浣Y(jié)構(gòu)
每一個USB設(shè)備會有一個或者多個邏輯連接點在里面,每個連接點叫端點。USB提供了多種傳輸方式以適應(yīng)各種設(shè)備的需要,一個端點可以選擇如下一種傳輸方式。
1.?控制(Control)傳輸方式
控制傳輸是雙向傳輸,數(shù)據(jù)量通常較小,主要用來進行查詢、配置和給USB設(shè)備發(fā)送通用命令。所有USB設(shè)備必須支持標(biāo)準(zhǔn)請求(Standard Request),控制傳輸方式和端點0。
2.?同步(Isochronous)傳輸方式
同步傳輸提供了確定的帶寬和間隔時間,它用于時間要求嚴(yán)格并具有較強容錯性的流數(shù)據(jù)傳輸,或者用于要求恒定數(shù)據(jù)傳送率的即時應(yīng)用。例如進行語音業(yè)務(wù)傳輸時,使用同步傳輸方式是很好的選擇。同步傳輸也常稱為“Streaming Real-time”傳輸。
3.?中斷(Interrupt)傳輸方式
中斷方式傳送是單向的,對于USB主機而言,只有輸入。中斷傳輸方式主要用于定時查詢設(shè)備是否有中斷數(shù)據(jù)要傳送,該傳輸方式應(yīng)用在少量分散的、不可預(yù)測的數(shù)據(jù)傳輸場合,鍵盤、游戲桿和鼠標(biāo)屬于這一類型。
4.?批量(Bulk)傳輸方式
批量傳輸主要應(yīng)用在沒有帶寬、間隔時間要求的批量數(shù)據(jù)的傳送和接收中,它要求保證傳輸。打印機和掃描儀屬于這種類型。
而USB 3.0則增加了一種Bulk Streams傳輸模式,USB 2.0的Bulk模式只支持1個數(shù)據(jù)流,而Bulk Streams傳輸模式則可以支持多個數(shù)據(jù)流,每個數(shù)據(jù)流被分配一個Stream ID(SID),每個SID與一個主機緩沖區(qū)對應(yīng)。
在USB架構(gòu)中,集線器負(fù)責(zé)檢測設(shè)備的連接和斷開,利用其中斷IN端點(Interrupt IN Endpoint)來向主機報告。一旦獲悉有新設(shè)備連接上來,主機就會發(fā)送一系列請求給設(shè)備所掛載的集線器,再由集線器建立起一條連接主機和設(shè)備之間的通信通道。然后主機以控制傳輸?shù)姆绞?#xff0c;通過端點 0對設(shè)備發(fā)送各種請求,設(shè)備收到主機發(fā)來的請求后回復(fù)相應(yīng)的信息,進行枚舉(Enumerate)操作。因此USB總線具備熱插拔的能力。
2.3.5 以太網(wǎng)接口
以太網(wǎng)接口由MAC(以太網(wǎng)媒體接入控制器)和PHY(物理接口收發(fā)器)組成。以太網(wǎng)MAC由IEEE 802.3以太網(wǎng)標(biāo)準(zhǔn)定義,實現(xiàn)了數(shù)據(jù)鏈路層。常用的MAC支持10Mbit/s或100Mbit/s兩種速率。吉比特以太網(wǎng)(也稱為千兆位以太網(wǎng))是快速以太網(wǎng)的下一代技術(shù),將網(wǎng)速提高到了1000 Mbit/s。千兆位以太網(wǎng)以 IEEE 802.3z和802.3ab發(fā)布,作為IEEE 802.3 標(biāo)準(zhǔn)的補充。
MAC和PHY之間采用MII(媒體獨立接口)連接,它是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn),包括1個數(shù)據(jù)接口與MAC和PHY之間的1個管理接口。數(shù)據(jù)接口包括分別用于發(fā)送和接收的兩條獨立信道,每條信道都有自己的數(shù)據(jù)、時鐘和控制信號,MII數(shù)據(jù)接口總共需要16個信號。MII管理接口包含兩個信號,一個是時鐘信號,另一個是數(shù)據(jù)信號。通過管理接口,上層能監(jiān)視和控制PHY。
一個以太網(wǎng)接口的硬件電路原理如圖2.15所示,從CPU到最終接口依次為CPU、MAC、PHY、以太網(wǎng)隔離變壓器、RJ45插座。以太網(wǎng)隔離變壓器是以太網(wǎng)收發(fā)芯片與連接器之間的磁性組件,在其兩者之間起著信號傳輸、阻抗匹配、波形修復(fù)、信號雜波抑制和高電壓隔離作用。

圖2.15 以太網(wǎng)接口的硬件電路原理
許多處理器內(nèi)部集成了MAC或同時集成了MAC和PHY,另有許多以太網(wǎng)控制芯片也集成了MAC和PHY。
2.3.6 PCI和PCI-E
PCI(外圍部件互連)是由Intel于1991年推出的一種局部總線,作為一種通用的總線接口標(biāo)準(zhǔn),它在目前的計算機系統(tǒng)中得到了非常廣泛應(yīng)用。PCI總線具有如下特點。
數(shù)據(jù)總線為32位,可擴充到64位。
可進行突發(fā)(Burst)模式傳輸。突發(fā)方式傳輸是指取得總線控制權(quán)后連續(xù)進行多個數(shù)據(jù)的傳輸。突發(fā)傳輸時,只需要給出目的地的首地址,訪問第1個數(shù)據(jù)后,第2~n個數(shù)據(jù)會在首地址的基礎(chǔ)上按一定規(guī)則自動尋址和傳輸。與突發(fā)方式對應(yīng)的是單周期方式,它在1個總線周期只傳送1個數(shù)據(jù)。
總線操作與處理器—存儲器子系統(tǒng)操作并行。
采用中央集中式總線仲裁。
支持全自動配置、資源分配,PCI卡內(nèi)有設(shè)備信息寄存器組為系統(tǒng)提供卡的信息,可實現(xiàn)即插即用。
PCI總線規(guī)范獨立于微處理器,通用性好。
PCI設(shè)備可以完全作為主控設(shè)備控制總線。
圖2.16給出了一個典型的基于PCI總線的計算機系統(tǒng)邏輯示意圖,系統(tǒng)的各個部分通過PCI總線和PCI-PCI橋連接在一起。CPU和RAM通過PCI橋連接到PCI總線0(即主PCI總線),而具有PCI接口的顯卡則可以直接連接到主PCI總線上。PCI-PCI橋是一個特殊的PCI設(shè)備,它負(fù)責(zé)將PCI總線0和PCI總線1(即從PCI主線)連接在一起,通常PCI總線1稱為PCI-PCI橋的下游(Downstream),而PCI總線0則稱為PCI-PCI橋的上游(Upstream)。為了兼容舊的ISA總線標(biāo)準(zhǔn),PCI總線還可以通過PCI-ISA橋來連接ISA總線,從而支持以前的ISA設(shè)備。

圖2.16 基于PCI總線的計算機系統(tǒng)邏輯示意圖
當(dāng)PCI卡剛加電時,卡上配置空間即可以被訪問。PCI配置空間保存著該卡工作時所需的所有信息,如廠家、卡功能、資源要求、處理能力、功能模塊數(shù)量、主控卡能力等。通過對這個空間信息的讀取與編程,可完成對PCI卡的配置。如圖2.17所示,PCI配置空間共為256字節(jié),主要包括如下信息。
制造商標(biāo)識(Vendor ID):由PCI組織分配給廠家。
設(shè)備標(biāo)識(Device ID):按產(chǎn)品分類給本卡的編號。
分類碼(Class Code):本卡功能的分類碼,如圖卡、顯示卡、解壓卡等。
申請存儲器空間:PCI卡內(nèi)有存儲器或以存儲器編址的寄存器和I/O空間,為使驅(qū)動程序和應(yīng)用程序能訪問它們,需申請CPU的一段存儲區(qū)域以進行定位。配置空間的基地址寄存器用于此目的。
申請I/O空間:配置空間中的基地址寄存器用來進行系統(tǒng)I/O空間的申請。
中斷資源申請:配置空間中的中斷引腳和中斷線用來向系統(tǒng)申請中斷資源。偏移3Dh處為中斷引腳寄存器,其值表明PCI設(shè)備使用了哪一個中斷引腳,對應(yīng)關(guān)系為
1—INTA#、2—INTB#、3—INTC#、4—INTD#。

圖2.17 PCI配置空間
PCI-E(PCI Express)是Intel公司提出的新一代的總線接口,PCI Express采用了目前業(yè)內(nèi)流行的點對點串行連接,比起PCI以及更早的計算機總線的共享并行架構(gòu),每個設(shè)備都有自己的專用連接,采用串行方式傳輸數(shù)據(jù),不需要向整個總線請求帶寬,并可以把數(shù)據(jù)傳輸率提高到一個很高的頻率,達到PCI所不能提供的高帶寬。
PCI Express在軟件層面上兼容目前的PCI技術(shù)和設(shè)備,支持PCI設(shè)備和內(nèi)存模組的初始化,也就是說無須推倒目前的驅(qū)動程序、操作系統(tǒng),就可以支持PCI Express設(shè)備。
2.3.7 SD和SDIO
SD(Secure Digital)是一種關(guān)于Flash存儲卡的標(biāo)準(zhǔn),也就是一般常見的SD記憶卡,在設(shè)計上與MMC(Multi-Media Card)保持了兼容。SDHC(SD High Capacity)是大容量SD卡,支持的最大容量為32GB。2009年發(fā)布的SDXC(SD eXtended Capacity)則支持最大2TB大小的容量。
SDIO(Secure Digital Input and Output Card,安全數(shù)字輸入輸出卡)在SD標(biāo)準(zhǔn)的基礎(chǔ)上,定義了除存儲卡以外的外設(shè)接口。SDIO主要有兩類應(yīng)用——可移動和不可移動。不可移動設(shè)備遵循相同的電氣標(biāo)準(zhǔn),但不要求符合物理標(biāo)準(zhǔn)?,F(xiàn)在已經(jīng)有非常多的手機或者手持裝置都支持SDIO的功能,以連接WiFi、藍牙、GPS等模塊。
一般情況下,芯片內(nèi)部集成的SD控制器同時支持MMC、SD卡,又支持SDIO卡,但是SD和SDIO的協(xié)議還是有不一樣的地方,支持的命令也會有不同。
SD/SDIO的傳輸模式有:
SPI模式
1位模式
4位模式
表2.1顯示了SDIO接口的引腳定義。其中CLK為時鐘引腳,每個時鐘周期傳輸一個命令或數(shù)據(jù)位;CMD是命令引腳,命令在CMD線上串行傳輸,是雙向半雙工的(命令從主機到從卡,而命令的響應(yīng)是從卡發(fā)送到主機);DAT[0]~DAT[3]為數(shù)據(jù)線引腳;在SPI模式中,第8腳位被當(dāng)成中斷信號。圖2.18給出了一個SDIO單模塊讀、寫的典型時序。

圖2.18 SDIO單模塊讀、寫的典型時序
eMMC(Embedded Multi Media Card)是當(dāng)前移動設(shè)備本地存儲的主流解決方案,目的在于簡化手機存儲器的設(shè)計。eMMC就是NAND Flash、閃存控制芯片和標(biāo)準(zhǔn)接口封裝的集合,它把NAND和控制芯片直接封裝在一起成為一個多芯片封裝(Multi-Chip Package,MCP)芯片。eMMC支持DAT[0]~DAT[7] 8位的數(shù)據(jù)線。上電或者復(fù)位后,默認(rèn)處于1位模式,只使用DAT[0],后續(xù)可以配置為4位或者8位模式。

總結(jié)

以上是生活随笔為你收集整理的《Linux设备驱动开发详解 A》一一2.3 接口与总线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。