<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 在Linux環(huán)境下I2C總線(xiàn)EEPROM驅動(dòng)程序應該如何設計

在Linux環(huán)境下I2C總線(xiàn)EEPROM驅動(dòng)程序應該如何設計

作者: 時(shí)間:2018-07-30 來(lái)源:網(wǎng)絡(luò ) 收藏

 (Inter-Integrated Circuit1總線(xiàn)是一種由Philips公司開(kāi)發(fā)的2線(xiàn)式串行總線(xiàn),用于連接微控制器及其外圍設備。它是同步通信的一種特殊形式,具有接口線(xiàn)少、控制方式簡(jiǎn)單、器件封裝形式小、通信速率較高等優(yōu)點(diǎn)。在主從通信中,可有多個(gè)總線(xiàn)器件同時(shí)接到總線(xiàn)上,通過(guò)地址來(lái)識別通信對象。筆者在開(kāi)發(fā)基于MPC8250的嵌入式系統的過(guò)程中發(fā)現I2C總線(xiàn)在嵌入式系統中應用廣泛,I2C總線(xiàn)控制器的類(lèi)型比較多,對系統提供的操作接口差別也很大。與I2C總線(xiàn)相連的從設備主要有微控制器、、實(shí)時(shí)時(shí)鐘、A/D轉換器等.MPC8250處理器正是通過(guò)內部的I2C總線(xiàn)控制器來(lái)和這些連接在I2C總線(xiàn)上的設備進(jìn)行數據交換的。由于I2C總線(xiàn)的特性,的I2C總線(xiàn)設備驅動(dòng)程序的設計者在設計驅動(dòng)程序時(shí)采用了獨特的體系結構。使開(kāi)發(fā)I2C總線(xiàn)設備驅動(dòng)程序與開(kāi)發(fā)一般設備驅動(dòng)程序的方法具有很大差別。因此,開(kāi)發(fā)I2C總線(xiàn)設備驅動(dòng)程序除了要涉及一般內核驅動(dòng)程序的知識外。還要對I2C總線(xiàn)驅動(dòng)的體系結構有深入的了解。筆者在開(kāi)發(fā)過(guò)程中使用設備型號為AT24C01A的 來(lái)測試I2C總線(xiàn)驅動(dòng)。

本文引用地址:http://dyxdggzs.com/article/201807/384530.htm

1 工作原理概述

在介紹I2C總線(xiàn)結構之前。要搞清楚兩個(gè)概念:I2C總線(xiàn)控制器和I2C設備。I2C總線(xiàn)控制器為微控制器或微處理器提供控制I2C總線(xiàn)的接口,它控制所有I2C總線(xiàn)的特殊序列、協(xié)議、仲裁、時(shí)序,這里指MPC8250提供的I2C總線(xiàn)控制接口。I2C設備是指通過(guò)I2C總線(xiàn)與微控制器或微處理器相連的設備,如、LCD驅動(dòng)器等,這里指EEPROM。

在一個(gè)串行數據通道中.I2C總線(xiàn)控制器可以配置成主模式或從模式。開(kāi)發(fā)過(guò)程中,MPC8250的I2C總線(xiàn)控制器工作在主模式,作為主設備;與總線(xiàn)相連的I2C設備為AT24C01A型EEPROM,作為從設備。主設備和從設備都可以工作于接收和發(fā)送狀態(tài)??偩€(xiàn)必須由主設備控制,主設備產(chǎn)生串行時(shí)鐘控制總線(xiàn)的傳輸方向,并產(chǎn)生起始和停止條件。

1.1 I2C總線(xiàn)控制器

I2C使用由串行數據線(xiàn)SDA 和串線(xiàn)時(shí)鐘線(xiàn)SCL組成的兩線(xiàn)結構來(lái)在外部集成電路與控制器之間交換數據。MPC8250的I2C總線(xiàn)控制器包括發(fā)送和接收單元、一個(gè)獨立的波特率發(fā)生器和一個(gè)控制單元。發(fā)送和接收單元使用相同的時(shí)鐘信號,如果I2C為主設備。那么時(shí)鐘信號由I2C的波特率發(fā)生器產(chǎn)生;如果I2C為從設備,時(shí)鐘信號則由外部提供。

SDA和SCL為雙向的,通過(guò)外部+3.3 V上拉電阻連接至正向電壓。當總線(xiàn)處于空閑狀態(tài)時(shí),SDA和SCL都應是高電平,I2C通常的配置模式如圖1所示。


圖1 I2C配置模式

I2C的接收和發(fā)送單元均為雙緩存,在數據發(fā)送時(shí),數據從發(fā)送數據寄存器到移位寄存器,以時(shí)鐘速率輸出到SDA線(xiàn);在數據接收時(shí),數據從SDA線(xiàn)進(jìn)入移位寄存器,然后進(jìn)入接收寄存器。

1.2 I2C總線(xiàn)控制器和EEPROM 的基本操作

I2C總線(xiàn)在傳送數據過(guò)程中共有3種類(lèi)型的信號,分別是:開(kāi)始信號、結束信號和應答信號。

開(kāi)始信號:SCL為高電平時(shí),SDA 由高電平向低電平跳變,開(kāi)始傳送數據;

結束信號:SCL為高電平時(shí),SDA由低電平向高電平跳變,傳送數據結束;

應答信號:接收數據的設備在接收到一個(gè)字節數據后, 向發(fā)送數據的設備發(fā)出特定的低電平脈沖。表示已收到數據。

當MPC8250的I2C總線(xiàn)空閑時(shí),其SDA和SCL均為高電平,主設備通過(guò)發(fā)送一個(gè)開(kāi)始信號啟動(dòng)發(fā)送過(guò)程。這個(gè)信號的時(shí)序要求是當SCL為高時(shí),SDA出現一個(gè)由高到低的電平跳變。在起始條件之后。必須是從設備的地址字節,其中高4位為器件類(lèi)型識別符(不同的芯片類(lèi)型有不同的定義,EEPROM一般應為1010),接著(zhù)3位為片選,最后1位為讀寫(xiě)位,當為1時(shí)為讀操作,為0時(shí)為寫(xiě)操作,如圖2所示。


圖2 EEPROM設備地址字節結構

如果主設備要向EEPROM 中寫(xiě)數據,在地址字節中主設備向EEPROM發(fā)出一個(gè)寫(xiě)請求(R/W=0),發(fā)送的地址字節之后緊跟著(zhù)要發(fā)送的數據。每發(fā)送一個(gè)字節的數據后EEPROM就會(huì )產(chǎn)生一個(gè)應答信號,主設備也會(huì )監控應答信號,如果在發(fā)送一個(gè)字節后EEPROM沒(méi)有返回應答信號,則主設備就會(huì )停止發(fā)送,并生成一個(gè)結束信號。寫(xiě)操作的時(shí)序如圖3所示。


圖3 I2C主設備寫(xiě)操作時(shí)序

要從EEPROM 中讀取數據時(shí),應設置R/W=1。在EEPROM發(fā)送完一個(gè)字節的數據后,主設備產(chǎn)生一個(gè)應答信號來(lái)響應,告知EEPROM主設備要求更多的數據,對應主設備產(chǎn)生的每個(gè)應答信號EEPROM將發(fā)送一個(gè)字節的數據。當主設備不發(fā)送應答信號并隨后發(fā)送結束信號位時(shí)結束此操作。讀操作的時(shí)序如圖4所示。


圖4 I2C主設備讀操作時(shí)序

2 Linux中I2C總線(xiàn)驅動(dòng)體系結構

在Linux系統中,對于一個(gè)給定的I2C總線(xiàn)硬件配置系統,I2C總線(xiàn)驅動(dòng)程序體系結構由I2C總線(xiàn)驅動(dòng)和I2C設備驅動(dòng)組成。其中I2C總線(xiàn)驅動(dòng)包括一個(gè)具體的控制器驅動(dòng)和I2C總線(xiàn)的算法驅動(dòng)。一個(gè)算法驅動(dòng)適用于一類(lèi)總線(xiàn)控制器。而一個(gè)具體的總線(xiàn)控制器驅動(dòng)要使用某一種算法。例如,Linux內核中提供的算法i2e-algo-8260可以用在MPC82xx系列處理器提供的I2C總線(xiàn)控制器上。Linux內核中提供了一些常見(jiàn)處理器如MPC82xx系列的算法驅動(dòng)。對于I2C設備,基本上每種具體設備都有自己的基本特性。其驅動(dòng)程序一般都需要特別設計。

在I2C總線(xiàn)驅動(dòng)程序體系結構中。使用數據結構Driver來(lái)表示I2C設備驅動(dòng),使用數據結構Client表示一個(gè)具體的I2C設備。而對于I2C總線(xiàn)

控制器,各種總線(xiàn)控制器在進(jìn)行數據傳輸時(shí)采用的算法有好多種,使用相同算法的控制器提供的控制接口也可能不同。在I2C總線(xiàn)驅動(dòng)程序體系結構中,用數據結構Algorithm來(lái)表示算法,用數據結構Adapter來(lái)表示不同的總線(xiàn)控制器。Linux內核的I2C總線(xiàn)驅動(dòng)程序體系結構如圖5所示。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: I2C EEPROM Linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>