



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、android i2c精析基于linux內(nèi)核開發(fā)的arm系統(tǒng),會(huì)用到很多components。要讓這些components正常的工作,我們必須了解它們的接口,懂得如何去注冊總線,初始化芯片,進(jìn)而讓芯片正常的工作。下面我會(huì)介紹在arm開發(fā)過程中使用最頻繁的一些接口和總線的原理,以及如何在開發(fā)的過程中去使用它們。1 i2c總線與接口i2c總線具有結(jié)構(gòu)簡單,使用方便的特點(diǎn)。下面我會(huì)描述linux下i2c驅(qū)動(dòng)的結(jié)構(gòu),幷給出i2c設(shè)備驅(qū)動(dòng)和應(yīng)用的實(shí)現(xiàn)。1.1 i2c總線概述 i2c(inter-integrated circuit)總線是由philips公司開發(fā)的兩線式串行總線,用于連接微控制器及外圍設(shè)
2、備。是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優(yōu)點(diǎn)。i2c總線是由數(shù)據(jù)線sda和時(shí)鐘scl構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù),每個(gè)器件都有一個(gè)惟一的地址識(shí)別。i2c 規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)??偩€必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(scl)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。sda線上的數(shù)據(jù)狀態(tài)僅在scl為低電平的期間才能改變,scl為高電平的期間,sda狀態(tài)的改變被用來表示起始
3、和停止條件。 從理論上說一根i2c總線上可以掛載128個(gè)i2c設(shè)備,但是通常情況下,由于有些設(shè)備在傳輸數(shù)據(jù)時(shí)占用的i2c總線帶寬頻繁,所以我們在一根i2c總線上掛載的設(shè)備是越少越好。下面給出i2c總線的連線圖: 1.2 i2c總線工作原理1.2.1 i2c通信專業(yè)術(shù)語發(fā)送器:發(fā)送數(shù)據(jù)到總線的器件;接收器:從總線接收數(shù)據(jù)的器件;主機(jī):初始化發(fā)送產(chǎn)生時(shí)鐘信號(hào)和終止發(fā)送的器件;從機(jī):被主機(jī)尋址的器件;多主機(jī):同時(shí)有多于一個(gè)主機(jī)嘗試控制總線但不破壞傳輸;仲裁:是一個(gè)在有多個(gè)主機(jī)同時(shí)嘗試控制總線但只允許其中一個(gè)控制總線并使傳輸不被破壞的過程;同步:兩個(gè)或多個(gè)器件同步時(shí)鐘信號(hào)的過程。1.2.2 i2c接口
4、電路結(jié)構(gòu)前面我們說過i2c總線是由數(shù)據(jù)線sda和時(shí)鐘scl構(gòu)成的串行總線,在現(xiàn)實(shí)的產(chǎn)品開發(fā)過程當(dāng)中,各種被控制器件均并聯(lián)在這條總線上,每個(gè)器件都有一個(gè)唯一的地址識(shí)別,可以作為總線上的一個(gè)發(fā)送器件或接收器件(具體由器件的功能決定)。i2c總線的接口電路結(jié)構(gòu)如圖所示:1.2.3 i2c總線信號(hào)狀態(tài)i2c總線有下面幾種信號(hào)狀態(tài):1空閑狀態(tài):sda和scl都為高電平。2開始條件(s):scl為高電平時(shí),sda由高電平向低電平跳變,開始傳輸數(shù)據(jù)。3結(jié)束條件(p):scl為高電平時(shí),sda由低電平向高電平切換,表示傳輸結(jié)束。4數(shù)據(jù)有效:在scl的高電平期間,sda保持穩(wěn)定,數(shù)據(jù)有效。5ack信號(hào): 數(shù)據(jù)傳
5、輸?shù)倪^程中,接收器件每接收一個(gè)字節(jié)數(shù)據(jù)要產(chǎn)生一個(gè)ack信號(hào),向發(fā)送器件發(fā)出特定的低電平脈沖,表示已經(jīng)收到數(shù)據(jù)。1.2.4 i2c總線基本操作i2c總線必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(scl),同時(shí)控制總線的傳輸方向,并產(chǎn)生開始和停止條件。數(shù)據(jù)傳輸中,首先主器件產(chǎn)生開始條件,隨后是器件的控制字節(jié)(前七位是從器件的地址,最后一位為讀寫位 )。接下來是讀寫操作的數(shù)據(jù),以及 ack響應(yīng)信號(hào)。數(shù)據(jù)傳輸結(jié)束時(shí),主器件產(chǎn)生停止條件。具體的過程如下圖所示:1.3 linux內(nèi)核的i2c驅(qū)動(dòng)架構(gòu)1.3.1 i2c驅(qū)動(dòng)架構(gòu) linux系統(tǒng)對i2c設(shè)備具有很好的支持,linux系統(tǒng)下的i2c
6、驅(qū)動(dòng)程序從邏輯上可以分成3個(gè)部分:1 i2c總線的驅(qū)動(dòng) i2c core :實(shí)現(xiàn)對i2c總線、i2c adapter及i2c driver的管理。2 i2c控制器的驅(qū)動(dòng) i2c adapter :針對不同類型的i2c控制器 ,實(shí)現(xiàn)對i2c總線訪問的具體方法。3 i2c設(shè)備的驅(qū)動(dòng) i2c driver :針對特定的i2c設(shè)備,實(shí)現(xiàn)具體的功能,包括read, write以及ioctl等對用戶層操作的接口。這三個(gè)部分的層次關(guān)系下圖所示:1.3.2 i2c 總線驅(qū)動(dòng) i2c core i2c core是linux內(nèi)核用來維護(hù)和管理的i2c的核心部分,其中維護(hù)了兩個(gè)靜態(tài)的list,分別記錄系統(tǒng)中的i2c
7、 driver結(jié)構(gòu)和i2c adapter結(jié)構(gòu)。i2c core提供接口函數(shù),允許一個(gè)i2c adatper,i2c driver和i2c client初始化時(shí)在i2c core中進(jìn)行注冊,以及退出時(shí)進(jìn)行注銷。同時(shí)還提供了i2c總線讀寫訪問的一般接口(具體的實(shí)現(xiàn)在與i2c控制器相關(guān)的i2c adapter中實(shí)現(xiàn)),主要應(yīng)用在i2c設(shè)備驅(qū)動(dòng)中。1.3.3i2c控制器的驅(qū)動(dòng) i2c adapter i2c adapter是針對不同類型i2c控制器硬件,實(shí)現(xiàn)比較底層的對i2c總線訪問的具體方法。i2c adapter 構(gòu)造一個(gè)對i2c core層接口的數(shù)據(jù)結(jié)構(gòu),并通過接口函數(shù)向i2c core注冊一
8、個(gè)控制器。1.3.4 i2c設(shè)備的驅(qū)動(dòng) i2c driveri2c driver中提供了一個(gè)通用的i2c設(shè)備的驅(qū)動(dòng)程序,實(shí)現(xiàn)了字符類型設(shè)備的訪問接口,對設(shè)備的具體訪問是通過i2c adapter來實(shí)現(xiàn)的。i2c driver構(gòu)造一個(gè)對i2c core層接口的數(shù)據(jù)結(jié)構(gòu),通過接口函數(shù)向 i2c core注冊一個(gè)i2c設(shè)備驅(qū)動(dòng)。同時(shí)i2c driver 構(gòu)造一個(gè)對用戶層接口的數(shù)據(jù)結(jié)構(gòu),并通過接口函數(shù)向內(nèi)核注冊一個(gè)字符類型設(shè)備。i2c driver實(shí)現(xiàn)用戶層對i2c設(shè)備的訪問,包括open,read,write,ioctl,release等常規(guī)文件操作,我們可以通過open函數(shù) 打開 i2c的設(shè)備文件,通過ioctl函數(shù)設(shè)定要訪問從設(shè)備的地址,然后就可以通過 read和write函數(shù)完成對i2c設(shè)備的讀寫操作。通過i2c driver提供的通用方法可以訪問任何一個(gè)i2c的設(shè)備,但是其中實(shí)現(xiàn)的read,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國四路數(shù)字硬盤錄像機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 【假期提升】五升六語文暑假作業(yè)(九)-人教部編版(含答案含解析)
- 2025年消防設(shè)施操作員之消防設(shè)備中級(jí)技能考前沖刺模擬試卷A卷含答案
- 2025年消防設(shè)施操作員之消防設(shè)備高級(jí)技能每日一練試卷A卷含答案
- 廣東省廣州市海珠區(qū)南武集團(tuán)2022-2023學(xué)年八年級(jí)下學(xué)期期中物理試題(含答案)
- 煙草公司2023招聘考試全真筆試試題(綜合能力測試卷)和答案解析
- 酒店用品銷售代理合同(2篇)
- 采購分包配送合同(2篇)
- 廣告行業(yè)廣告創(chuàng)意版權(quán)保護(hù)協(xié)議
- 社區(qū)農(nóng)業(yè)服務(wù)提供合同書
- 和田玉知識(shí)培訓(xùn)課件下載
- 2025年高縣縣屬國企業(yè)公開招聘工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 第7課 課題二《清潔工具與生活·創(chuàng)意清潔工具設(shè)計(jì)》(說課稿)-2023-2024學(xué)年四年級(jí)下冊綜合實(shí)踐活動(dòng)浙教版
- DB11-T 1191.3-2024 實(shí)驗(yàn)室危險(xiǎn)化學(xué)品安全管理要求 第3部分:科研單位
- 醫(yī)療行業(yè)學(xué)生職業(yè)發(fā)展的路徑規(guī)劃
- 規(guī)范填寫臨時(shí)用電作業(yè)票
- 日間化療中心管理制度
- 第六講五胡入華與中華民族大交融-中華民族共同體概論
- 建設(shè)工程施工專業(yè)分包合同 GF-2003-0213
- 2024解析:第二章聲現(xiàn)象-講核心(解析版)
- 2024解析:第十章 浮力綜合應(yīng)用-講核心(解析版)
評(píng)論
0/150
提交評(píng)論