浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 接口電路

Linux下I2C設(shè)備驅(qū)動開發(fā)和實(shí)現(xiàn)

發(fā)布時間:2008/8/20 0:00:00 訪問次數(shù):670

  i2c總線具有結(jié)構(gòu)簡單使用方便的特點(diǎn)。本文描述了linux下i2c驅(qū)動的結(jié)構(gòu),并在此基礎(chǔ)上給出了i2c設(shè)備驅(qū)動和應(yīng)用的實(shí)現(xiàn)。

  1 引言

  i2c (inter-integrated circuit)總線是一種由philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。i2c總線最主要的優(yōu)點(diǎn)是其簡單性和有效性。由于接口直接在組件之上,因此i2c總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本。i2c總線最初為音頻和視頻設(shè)備開發(fā),現(xiàn)已應(yīng)用于各種服務(wù)與管理場合,來實(shí)現(xiàn)配置或掌握組件的功能狀態(tài),如電源、系統(tǒng)風(fēng)扇、系統(tǒng)溫度等參數(shù),增加了系統(tǒng)的安全性,方便了管理。

  2 i2c總線概述

  i2c總線是由數(shù)據(jù)線sda和時鐘scl構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù),每個器件都有一個惟一的地址識別。i2c 規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)?偩必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時鐘(scl)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。sda線上的數(shù)據(jù)狀態(tài)僅在scl為低電平的期間才能改變,scl為高電平的期間,sda狀態(tài)的改變被用來表示起始和停止條件。

  i2c總線在傳送數(shù)據(jù)過程中共有三種類型信號,它們分別是:開始信號、結(jié)束信號和應(yīng)答信號。

  開始信號:scl為高電平時,sda由高電平向低電平跳變,開始傳送數(shù)據(jù)。

  結(jié)束信號:scl為低電平時,sda由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。

  應(yīng)答信號:接收數(shù)據(jù)的ic在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的ic發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。cpu向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應(yīng)答信號,cpu接收到應(yīng)答信號后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。

linux中i2c總線的驅(qū)動分為兩個部分,總線驅(qū)動(bus)和設(shè)備驅(qū)動(device)。其中總線驅(qū)動的職責(zé),是為系統(tǒng)中每個i2c總線增加相應(yīng)的讀寫方法。但是總線驅(qū)動本身并不會進(jìn)行任何的通訊,它只是存在那里,等待設(shè)備驅(qū)動調(diào)用其函數(shù),參見圖。

  設(shè)備驅(qū)動則是與掛在i2c總線上的具體的設(shè)備通訊的驅(qū)動。通過i2c總線驅(qū)動提供的函數(shù),設(shè)備驅(qū)動可以忽略不同總線控制器的差異,不考慮其實(shí)現(xiàn)細(xì)節(jié)地與硬件設(shè)備通訊。

  linux內(nèi)核i2c總線驅(qū)動程序構(gòu)架

  在我們的linux驅(qū)動的i2c文件夾下有algos,busses,chips三個文件夾,另外還有i2c-core.c和i2c-dev.c兩個文件。其中i2c-core.c文件實(shí)現(xiàn)了i2c core框架,是linux內(nèi)核用來維護(hù)和管理的i2c的核心部分,其中維護(hù)了兩個靜態(tài)的list,分別記錄系統(tǒng)中的i2c driver結(jié)構(gòu)和i2c adapter結(jié)構(gòu)。i2c core提供接口函數(shù),允許一個i2c adatper,i2c driver和i2c client初始化時在i2c core中進(jìn)行注冊,以及退出時進(jìn)行注銷。同時還提供了i2c總線讀寫訪問的一般接口,主要應(yīng)用在i2c設(shè)備驅(qū)動中。

  busses文件夾下的i2c-mpc.c文件實(shí)現(xiàn)了powerpc下i2c總線適配器驅(qū)動,定義描述了具體的i2c總線適配器的i2c_adapter數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)比較底層的對i2c總線訪問的具體方法。i2c adapter 構(gòu)造一個對i2c core層接口的數(shù)據(jù)結(jié)構(gòu),并通過接口函數(shù)向i2c core注冊一個控制器。i2c adapter主要實(shí)現(xiàn)對i2c總線訪問的算法,iic_xfer() 函數(shù)就是i2c adapter底層對i2c總線讀寫方法的實(shí)現(xiàn)。同時i2c adpter 中還實(shí)現(xiàn)了對i2c控制器中斷的處理函數(shù)。

  i2c-dev.c文件中實(shí)現(xiàn)了i2c driver,提供了一個通用的i2c設(shè)備的驅(qū)動程序,實(shí)現(xiàn)了字符類型設(shè)備的訪問接口,實(shí)現(xiàn)了對用戶應(yīng)用層的接口,提供用戶程序訪問i2c設(shè)備的接口,包括實(shí)現(xiàn)open,release,read,write以及最重要的ioctl等標(biāo)準(zhǔn)文件操作的接口函數(shù)。我們可以通過open函數(shù)打開 i2c的設(shè)備文件,通過ioctl函數(shù)設(shè)定要訪問從設(shè)備的地址,然后就可以通過 read和write函數(shù)完成對i2c設(shè)備的讀寫操作。

  通過i2c driver提供的通用方法可以訪問任何一個i2c的設(shè)備,但是其中實(shí)現(xiàn)的read,write及ioctl等功能完全是基于一般設(shè)備的實(shí)現(xiàn),所有的操作數(shù)據(jù)都是基于字節(jié)流,沒有明確的格式和意義。為了更方便和有效地使用i2c設(shè)備,我們可以為一個具體的i2c設(shè)備開發(fā)特定的i2c設(shè)備驅(qū)動程序,在驅(qū)動中完成對特定的數(shù)據(jù)格式的解釋以及實(shí)現(xiàn)一些專用的功能。

  4 linux下i2c具體驅(qū)動開發(fā)

  tmp75是ti公司推出的基于i2c總線的數(shù)字溫度傳感器,具有低的功耗,高數(shù)字分辨率,廣泛應(yīng)用于電源溫度監(jiān)控,計(jì)算機(jī)外設(shè)保護(hù),筆記本和蜂窩電話中。針對該設(shè)備開發(fā)驅(qū)動程序,由于linux系統(tǒng)下已經(jīng)實(shí)現(xiàn)了i2c core框架,i2c總線適配

  i2c總線具有結(jié)構(gòu)簡單使用方便的特點(diǎn)。本文描述了linux下i2c驅(qū)動的結(jié)構(gòu),并在此基礎(chǔ)上給出了i2c設(shè)備驅(qū)動和應(yīng)用的實(shí)現(xiàn)。

  1 引言

  i2c (inter-integrated circuit)總線是一種由philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。i2c總線最主要的優(yōu)點(diǎn)是其簡單性和有效性。由于接口直接在組件之上,因此i2c總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本。i2c總線最初為音頻和視頻設(shè)備開發(fā),現(xiàn)已應(yīng)用于各種服務(wù)與管理場合,來實(shí)現(xiàn)配置或掌握組件的功能狀態(tài),如電源、系統(tǒng)風(fēng)扇、系統(tǒng)溫度等參數(shù),增加了系統(tǒng)的安全性,方便了管理。

  2 i2c總線概述

  i2c總線是由數(shù)據(jù)線sda和時鐘scl構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù),每個器件都有一個惟一的地址識別。i2c 規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)?偩必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時鐘(scl)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。sda線上的數(shù)據(jù)狀態(tài)僅在scl為低電平的期間才能改變,scl為高電平的期間,sda狀態(tài)的改變被用來表示起始和停止條件。

  i2c總線在傳送數(shù)據(jù)過程中共有三種類型信號,它們分別是:開始信號、結(jié)束信號和應(yīng)答信號。

  開始信號:scl為高電平時,sda由高電平向低電平跳變,開始傳送數(shù)據(jù)。

  結(jié)束信號:scl為低電平時,sda由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。

  應(yīng)答信號:接收數(shù)據(jù)的ic在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的ic發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。cpu向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應(yīng)答信號,cpu接收到應(yīng)答信號后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。

linux中i2c總線的驅(qū)動分為兩個部分,總線驅(qū)動(bus)和設(shè)備驅(qū)動(device)。其中總線驅(qū)動的職責(zé),是為系統(tǒng)中每個i2c總線增加相應(yīng)的讀寫方法。但是總線驅(qū)動本身并不會進(jìn)行任何的通訊,它只是存在那里,等待設(shè)備驅(qū)動調(diào)用其函數(shù),參見圖。

  設(shè)備驅(qū)動則是與掛在i2c總線上的具體的設(shè)備通訊的驅(qū)動。通過i2c總線驅(qū)動提供的函數(shù),設(shè)備驅(qū)動可以忽略不同總線控制器的差異,不考慮其實(shí)現(xiàn)細(xì)節(jié)地與硬件設(shè)備通訊。

  linux內(nèi)核i2c總線驅(qū)動程序構(gòu)架

  在我們的linux驅(qū)動的i2c文件夾下有algos,busses,chips三個文件夾,另外還有i2c-core.c和i2c-dev.c兩個文件。其中i2c-core.c文件實(shí)現(xiàn)了i2c core框架,是linux內(nèi)核用來維護(hù)和管理的i2c的核心部分,其中維護(hù)了兩個靜態(tài)的list,分別記錄系統(tǒng)中的i2c driver結(jié)構(gòu)和i2c adapter結(jié)構(gòu)。i2c core提供接口函數(shù),允許一個i2c adatper,i2c driver和i2c client初始化時在i2c core中進(jìn)行注冊,以及退出時進(jìn)行注銷。同時還提供了i2c總線讀寫訪問的一般接口,主要應(yīng)用在i2c設(shè)備驅(qū)動中。

  busses文件夾下的i2c-mpc.c文件實(shí)現(xiàn)了powerpc下i2c總線適配器驅(qū)動,定義描述了具體的i2c總線適配器的i2c_adapter數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)比較底層的對i2c總線訪問的具體方法。i2c adapter 構(gòu)造一個對i2c core層接口的數(shù)據(jù)結(jié)構(gòu),并通過接口函數(shù)向i2c core注冊一個控制器。i2c adapter主要實(shí)現(xiàn)對i2c總線訪問的算法,iic_xfer() 函數(shù)就是i2c adapter底層對i2c總線讀寫方法的實(shí)現(xiàn)。同時i2c adpter 中還實(shí)現(xiàn)了對i2c控制器中斷的處理函數(shù)。

  i2c-dev.c文件中實(shí)現(xiàn)了i2c driver,提供了一個通用的i2c設(shè)備的驅(qū)動程序,實(shí)現(xiàn)了字符類型設(shè)備的訪問接口,實(shí)現(xiàn)了對用戶應(yīng)用層的接口,提供用戶程序訪問i2c設(shè)備的接口,包括實(shí)現(xiàn)open,release,read,write以及最重要的ioctl等標(biāo)準(zhǔn)文件操作的接口函數(shù)。我們可以通過open函數(shù)打開 i2c的設(shè)備文件,通過ioctl函數(shù)設(shè)定要訪問從設(shè)備的地址,然后就可以通過 read和write函數(shù)完成對i2c設(shè)備的讀寫操作。

  通過i2c driver提供的通用方法可以訪問任何一個i2c的設(shè)備,但是其中實(shí)現(xiàn)的read,write及ioctl等功能完全是基于一般設(shè)備的實(shí)現(xiàn),所有的操作數(shù)據(jù)都是基于字節(jié)流,沒有明確的格式和意義。為了更方便和有效地使用i2c設(shè)備,我們可以為一個具體的i2c設(shè)備開發(fā)特定的i2c設(shè)備驅(qū)動程序,在驅(qū)動中完成對特定的數(shù)據(jù)格式的解釋以及實(shí)現(xiàn)一些專用的功能。

  4 linux下i2c具體驅(qū)動開發(fā)

  tmp75是ti公司推出的基于i2c總線的數(shù)字溫度傳感器,具有低的功耗,高數(shù)字分辨率,廣泛應(yīng)用于電源溫度監(jiān)控,計(jì)算機(jī)外設(shè)保護(hù),筆記本和蜂窩電話中。針對該設(shè)備開發(fā)驅(qū)動程序,由于linux系統(tǒng)下已經(jīng)實(shí)現(xiàn)了i2c core框架,i2c總線適配

相關(guān)IC型號

熱門點(diǎn)擊

 

推薦技術(shù)資料

耳機(jī)放大器
    為了在聽音樂時不影響家人,我萌生了做一臺耳機(jī)放大器的想... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!