新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式Linux的ARM/DSP多機I2C通信

        基于嵌入式Linux的ARM/DSP多機I2C通信

        作者: 時間:2012-05-08 來源:網絡 收藏

        內核源代碼中drivers目錄下的i2c_dev.c文件,是通用的總線設備驅動文件,為應用程序提供open()、write()、read()、ioctl()和close()等操作接口來訪問設備。應用層可以借用這些接口訪問掛接在適配器上的總線設備的存儲空間或寄存器,并控制總線設備的工作方式。
        2.1.3 S3C2440的I2C總線驅動及設備驅動
        S3C2440內部的I2C總線控制器通過4個寄存器實現對的控制,分別是I2C控制寄存器(I2CCON)、I2C狀態寄存器(I2CSTAT)、I2C收發數據移位寄存器(I2CDS)、I2C地址寄存器(I2CADD)。
        按照中I2C總線框架要求,S3C2440的I2C總線驅動設計主要完成以下工作:設計i2c_adapter_s3c_init()模板加載函數和對應于i2c_adapter_s3c_exit()模板卸載函數;設計i2c_adapter_s3c_xfer()模板S3C2440適配器方法函數。
        i2c_adapter_s3c_init()通過注冊s3c2440_i2c_driver結構體實現總線驅動的平臺注冊,s3c2440_i2c_driver結構體包含了具體適配器的probe()函數、remove()函數、resume()函數指針等信息。代碼如下:
        g.jpg
        完成了S3C2440的I2C總線適配器驅動注冊后,就可以將具體設備驅動注冊到該總線平臺上,實現I2C總線數據。i2c_dev.c文件是內核源碼提供的通用I2C總線設備驅動文件,針對每個I2C總線適配器生成一個主設備號為89的設備文件,設備驅動模塊加載流程如圖6所示。完成加載后,驅動提供i2cdev_read()、i2cdev_write()、i2cdev_ioctl()函數來對應用戶空間的read()、write()、ioctl()函數,供用戶使用。用戶通過這些接口函數實現I2C總線數據的讀寫功能。

        本文引用地址:http://www.104case.com/article/149119.htm

        h.jpg


        2.2 數據接收中斷程序設計
        通過配置F28015的I2C模塊寄存器,設置I2C模塊為從工作方式,同時利用I2C總線中斷響應程序實現對總線上數據的接收和發送,進而完成數據通信。F28015產生了I2C總線中斷后,就執行中斷服務程序,圖7為I2C總線中斷服務程序流程。

        i.jpg

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        linux相關文章:linux教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 武乡县| 新和县| 澄江县| 桦甸市| 广东省| 浦北县| 额济纳旗| 东乌| 波密县| 台中县| 阜阳市| 高要市| 新和县| 柯坪县| 阿合奇县| 都兰县| 新宾| 贞丰县| 武宣县| 浠水县| 东台市| 太仆寺旗| 土默特左旗| 普陀区| 涞源县| 青海省| 邛崃市| 准格尔旗| 清徐县| 佛坪县| 柘城县| 万荣县| 大英县| 武强县| 泰安市| 万宁市| 白河县| 柏乡县| 郎溪县| 宁陵县| 沐川县|