亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Linux下I2C設(shè)備驅(qū)動(dòng)的一種適配器層直接實(shí)現(xiàn)方法

        2011-06-25 02:45:16楊文鉑邢鵬康
        關(guān)鍵詞:適配器接收器字節(jié)

        楊文鉑,邢鵬康

        (河南工業(yè)職業(yè)技術(shù)學(xué)院,南陽(yáng) 473000)

        1 概 述

        I2C總線作為一種接口標(biāo)準(zhǔn)最早由Philips公司提出,因其優(yōu)良的性能在電子工業(yè)中得到了廣泛的應(yīng)用。在嵌入式Linux系統(tǒng)下,標(biāo)準(zhǔn)的I2C驅(qū)動(dòng)為分層架構(gòu),由上至下依次是設(shè)備層、核心層和適配器層。這種多層架構(gòu)有效滿足了Linux下多設(shè)備、多任務(wù)并行工作的要求,但同時(shí)也使I2C設(shè)備驅(qū)動(dòng)的開發(fā)變得非常復(fù)雜。本文探討了一種在I2C設(shè)備串行工作的情況下,直接在適配器層實(shí)現(xiàn)的I2C驅(qū)動(dòng)方法,這將有效簡(jiǎn)化Linux下I2C設(shè)備驅(qū)動(dòng)的開發(fā)。這里基于ARM9的S3C2440芯片和2.6.30核心的嵌入式Linux系統(tǒng)平臺(tái)進(jìn)行分析。

        2 I 2C總線及時(shí)序

        I2C設(shè)備分為主機(jī)及從機(jī)。主機(jī)即主控芯片內(nèi)的I2C適配器,它完成基本的時(shí)序控制功能,如起始、傳輸數(shù)據(jù)、停止等。從機(jī)即外圍I2C芯片,它是被主機(jī)尋址的器件,接收主機(jī)發(fā)送的命令和數(shù)據(jù),返回相應(yīng)的數(shù)據(jù)。按數(shù)據(jù)流的方向又可將I2C設(shè)備分為發(fā)送器或接收器。常用的數(shù)據(jù)傳輸模式主要有兩種:主機(jī)發(fā)送模式,此時(shí)主機(jī)為發(fā)送器,從機(jī)為接收器;主機(jī)接收模式,此時(shí)主機(jī)為接收器,從機(jī)為發(fā)送器。一個(gè)設(shè)備是發(fā)送器還是接收器,取決于實(shí)際數(shù)據(jù)流的方向。一個(gè)完整的主機(jī)讀或?qū)戇^程稱為一個(gè)消息,每一個(gè)消息都必須有一個(gè)起始信號(hào)(S)來指示其開始,起始信號(hào)由主機(jī)發(fā)出。在SCL線是高電平時(shí)SDA線從高電平向低電平切換,這個(gè)情況表示起始條件。如果一個(gè)I2C通信過程是主機(jī)多個(gè)讀寫過程的組合,則要有多個(gè)消息,需重復(fù)發(fā)出起始信號(hào)。在每個(gè)消息中,主機(jī)發(fā)出起始信號(hào)后都要接著發(fā)送從機(jī)地址字節(jié),這個(gè)字節(jié)前7位代表從設(shè)備物理地址,最低位R/W決定了數(shù)據(jù)流的方向,如果是0,表示主機(jī)寫數(shù)據(jù)到從機(jī),1表示主機(jī)向從機(jī)讀。發(fā)送到SDA總線上的數(shù)據(jù)必須是8位,但是每次發(fā)送的字節(jié)數(shù)不受限制。數(shù)據(jù)傳輸必須帶應(yīng)答(ACK),應(yīng)答脈沖由接收器產(chǎn)生,在應(yīng)答的時(shí)鐘脈沖期間,發(fā)送器釋放SDA線。通常被尋址的接收器在接收到每個(gè)字節(jié)后,必須產(chǎn)生一個(gè)應(yīng)答,才能正常通信。最后,需要由主機(jī)發(fā)出一個(gè)停止信號(hào),結(jié)束整個(gè)通信過程,使總線回到空閑狀態(tài),當(dāng)SCL是高電平時(shí)SDA線由低電平向高電平切換表示停止條件?;綢2C總線時(shí)序如圖1所示。

        圖1 基本I 2 C總線時(shí)序

        3 主機(jī)適配器及基本I 2C時(shí)序的實(shí)現(xiàn)

        3.1 S3C2440的I 2C適配器

        S3C2440中I2C適配器中的寄存器主要有IICDS、ICSTAT、IICCON、IICADD等。IICDS寄存器為一個(gè)8位的移位寄存器,待發(fā)的數(shù)據(jù)先送至此寄存器,在起始信號(hào)發(fā)出后,將數(shù)據(jù)逐位發(fā)送到SDA總線上。

        IICSTAT為狀態(tài)寄存器,主要實(shí)現(xiàn)I2C總線的信號(hào)發(fā)生功能,如下所示。其中第6、7位是模式選擇位,可決定4種模式,分別是主機(jī)發(fā)送、主機(jī)接收、從機(jī)發(fā)送、從機(jī)接收等。第5位是一個(gè)讀寫位,在讀時(shí)如果為0表明總線空閑,如果為1表明總線正忙。如果向其寫1,則主機(jī)將會(huì)發(fā)送開始信號(hào),如果向其寫0,則主機(jī)將發(fā)送停止信號(hào)。

        模式選擇忙、停止、起始狀態(tài)輸出允許 仲裁位 從片地址狀態(tài)地址零狀態(tài)最后接收位7∶6 5 4 3 2 1 0

        IICCON為一個(gè)8位寄存器,主要實(shí)現(xiàn)I2C總線的一些配置功能,如下所示。應(yīng)答設(shè)置位控制是否應(yīng)答,低4位和第6位共同決定了發(fā)送時(shí)鐘的頻率。

        應(yīng)答設(shè)置發(fā)送時(shí)鐘源選擇發(fā)送/接收中斷中斷掛起標(biāo)志傳輸時(shí)鐘選擇7 6 5 4 3∶0

        3.2 I 2C基本時(shí)序的實(shí)現(xiàn)

        I2C的時(shí)序及操作模式都可通過配置主機(jī)適配器的方式實(shí)現(xiàn),I2C的基本時(shí)序包括起始信號(hào)、從機(jī)地址、發(fā)送數(shù)據(jù)、讀數(shù)據(jù)、應(yīng)答信號(hào)、停止信號(hào)等。操作模式主要包括主機(jī)讀、主機(jī)寫、從機(jī)讀、從機(jī)寫等。以此為基礎(chǔ),可以通過在總線上組合傳輸起始信號(hào)、地址信號(hào)、停止信號(hào)等,來實(shí)現(xiàn)任意復(fù)雜的I2C通信功能。

        操作模式:通過寫IICSTAT寄存器的高兩位操作設(shè)置。

        起始信號(hào):向IICSTAT寄存器的第5位寫1后,將會(huì)在總線上發(fā)出一個(gè)起始信號(hào)。

        從機(jī)地址:這個(gè)從機(jī)地址需要在發(fā)起始信號(hào)前寫入移位寄存器IICADD中去。IICADD物理地址為0x54000008,8位,高7位保存地址,最低位R/W為讀寫控制位。

        應(yīng)答信號(hào):由接收器在接到發(fā)送器發(fā)送的地址或有效數(shù)據(jù)后發(fā)出,如果接收器配置為允許應(yīng)答,則收到數(shù)據(jù)后將自動(dòng)應(yīng)答,應(yīng)答設(shè)置位在IICCON的最高位,寫1為允許應(yīng)答,寫0為禁止應(yīng)答。

        主機(jī)發(fā)送數(shù)據(jù):待發(fā)送的數(shù)據(jù)需事先寫入IICDS寄存器中,當(dāng)發(fā)送條件滿足后(起始信號(hào)發(fā)出,或TX/RX中斷標(biāo)志位清除后等),IICDS中的數(shù)據(jù)將自動(dòng)移位發(fā)送。

        主機(jī)接收數(shù)據(jù):在收到總線上的一字節(jié)數(shù)據(jù)后,將存儲(chǔ)于IICDS中。主機(jī)可通過查詢IICCON中的中斷標(biāo)志位來確定是否接收成功一個(gè)字節(jié)。如果主機(jī)不發(fā)送應(yīng)答信號(hào),則從機(jī)將一直處于等待狀態(tài)。數(shù)據(jù)接收完畢后如果不清除中斷掛起位,I2C通信將進(jìn)入暫停狀態(tài)。

        停止信號(hào):停止信號(hào)的發(fā)出由IICSTAT寄存器的第5位清零來實(shí)現(xiàn)。

        4 Linux下在適配器層中驅(qū)動(dòng)的實(shí)現(xiàn)

        下文結(jié)合LM75傳感器采集溫度的例子具體說明這種方法在Linux下的實(shí)現(xiàn)過程。

        4.1 LM75傳感器簡(jiǎn)介

        LM75為支持I2C協(xié)議的數(shù)字式溫度傳感器,可多達(dá)8個(gè)傳感器共享一根總線,可在環(huán)境超過設(shè)定溫度時(shí)通知主控制器,測(cè)溫精度為0.5℃,轉(zhuǎn)換后的溫度值用2字節(jié)保存。LM75的溫度字節(jié)讀取時(shí)序如圖2所示。

        4.2 LM75的適配器層驅(qū)動(dòng)程序?qū)崿F(xiàn)

        可以在Linux底層驅(qū)動(dòng)中對(duì)I2C寄存器組進(jìn)行直接操作,根據(jù)LM75的時(shí)序要求組合I2C基本時(shí)序,實(shí)現(xiàn)LM75的模式設(shè)置及溫度采集功能,程序流程如圖3所示。

        以下是在適配器層的部分驅(qū)動(dòng)函數(shù)代碼:

        圖2 LM75的溫度字節(jié)讀取時(shí)序

        圖3 LM75時(shí)序的底層實(shí)現(xiàn)流程

        4.3 適配器層與應(yīng)用層接口

        在驅(qū)動(dòng)函數(shù)完成后還要在適配器層填充一個(gè)file_operations的數(shù)據(jù)結(jié)構(gòu),由于用戶空間不能直接調(diào)用適配器層中的函數(shù),驅(qū)動(dòng)函數(shù)需要映射為應(yīng)用層的函數(shù),這個(gè)數(shù)據(jù)結(jié)構(gòu)提供了驅(qū)動(dòng)層函數(shù)在應(yīng)用層的函數(shù)接口。

        適配器層驅(qū)動(dòng)函數(shù)iic_LM75_read被映射為應(yīng)用層的接口函數(shù)read,以為應(yīng)用層所調(diào)用。按上述方法構(gòu)建的I2C驅(qū)動(dòng)在Linux下以普通設(shè)備驅(qū)動(dòng)的形式加載,在加載的過程執(zhí)行初始化操作,通過 MKDEV()函數(shù)創(chuàng)建主設(shè)備節(jié)點(diǎn)并分配設(shè)備號(hào),通過I2C_setup_dev()函數(shù)實(shí)現(xiàn)驅(qū)動(dòng)層到應(yīng)用層函數(shù)的映射。在應(yīng)用層調(diào)用適配器層驅(qū)動(dòng)時(shí),須首先用open()函數(shù)打開dev中的主設(shè)備,在open過程中配置各個(gè)I2C功能寄存器,配置輸入/輸出端口,完成后,將獲得一個(gè)設(shè)備節(jié)點(diǎn)fd,以此節(jié)點(diǎn)作為驅(qū)動(dòng)接口的設(shè)備參數(shù)傳入,便可調(diào)用底層的驅(qū)動(dòng)函數(shù)。

        5 小 結(jié)

        實(shí)踐證明,在嵌入式Linux環(huán)境下,適配器層直接實(shí)現(xiàn)I2C設(shè)備驅(qū)動(dòng)的方法,構(gòu)造簡(jiǎn)單,可靠性高,占用資源少,對(duì)不同設(shè)備的適應(yīng)性強(qiáng),可有效提高I2C設(shè)備驅(qū)動(dòng)開發(fā)的效率。

        [1]I2C 總線規(guī)范[OL].[2011-01].www.zlgmcu.com/download/down.asp?ID=780.

        [2]Samsung Electronics.S3C2440 32-BIT CMOS Microcontroller User's Manual Revision 1,2004.

        [3]安森美半導(dǎo)體.LM75-2線串行溫度傳感器和監(jiān)視器,2006.

        [4]Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman.Linux Device Drivers[M].3rd Edition.O'Reilly,2005.

        [5]李俊.嵌入式Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解[M].北京:人民郵電出版社,2008.

        猜你喜歡
        適配器接收器字節(jié)
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
        JXG-50S型相敏軌道電路接收器自動(dòng)測(cè)試臺(tái)
        適配器模式及其應(yīng)用
        簡(jiǎn)談MC7字節(jié)碼
        埃及
        新型水文測(cè)驗(yàn)GPS適配器設(shè)計(jì)與應(yīng)用
        基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無線通信
        美國(guó)麥格普公司新型M—LOK相機(jī)三腳架適配器
        輕兵器(2015年20期)2015-09-10 07:22:44
        ZPW-2000A軌道電路接收器冗余電路存在問題分析及對(duì)策
        欧美激情国产亚州一区二区| 亚洲 欧美 偷自乱 图片| 无码人妻丰满熟妇啪啪网不卡| 国产精品成人观看视频| 18分钟处破好疼哭视频在线观看| 日韩无套内射视频6| 天天做天天爱天天综合网| 国产主播福利一区二区| 丝袜美女污污免费观看的网站| 亚洲免费人成网站在线观看 | 在线免费观看国产视频不卡| 日本黑人乱偷人妻在线播放| 国精品午夜福利视频不卡| 精品深夜av无码一区二区| 亚洲黄色一级毛片| 一区二区三区免费视频网站| 视频福利一区二区三区| 伊人五月亚洲综合在线| 内射人妻无套中出无码| 国产精品无码无片在线观看3d| 激情综合色五月丁香六月亚洲 | 尤物在线精品视频| 在线精品国产一区二区三区| 欧美在线视频免费观看| 无码精品一区二区三区超碰| 久久网站在线免费观看| 日韩欧美一区二区三区免费观看| 国产精品美女久久久久 | 国产 在线播放无码不卡| 久久狠狠髙潮曰十八女人| 国产亚洲成性色av人片在线观| 亚洲精品白浆高清久久久久久 | 亚洲人成亚洲精品| 国产成年无码AⅤ片日日爱| 五月婷婷开心五月激情| 国产在线无码精品无码| 亚洲视频在线观看| 国产精品第一二三区久久蜜芽 | 国产激情з∠视频一区二区 | 久久96国产精品久久久| 国产成人无码区免费网站|