SylixOS I2C驅動框架概述

  1. 適用範圍

    本文檔爲做者在學習I2C總線驅動過程當中的總結。提供一些對SylixOS I2C驅動框架的理解經驗。適用於學習I2C總線驅動或I2C設備驅動的技術工程師。數據結構

  2. 原理概述

  3. 概述

    SylixOS I2C驅動框架主要由3部分組成,即I2C總線驅動、I2C核心層和I2C設備驅動。I2C核心層是I2C驅動和I2C設備驅動的中間樞紐,它以通用的、與平臺無關的接口實現了I2C驅動中設備與適配器的溝通(已經存在,包含lw_i2c_adapter,lw_i2c_device,lw_i2c_funcs結構體)。I2C總線驅動填充lw_i2c_adapter和lw_i2c_funcs結構體;I2C設備驅動填充lw_i2c_device結構體。框架

  4. I2C驅動框架圖

    如圖 21所示:函數

    圖 21 I2C驅動框架學習

  5. I2C三大組成部分

  6. I2C核心層

    I2C核心提供了I2C總線驅動和設備驅動的註冊、註銷方法,I2C通訊方法funcs上層的、與具體適配器無關的代碼以及探測設備、檢測設備地址的上層代碼等。spa

    編寫I2C設備或者I2C驅動須要用到的結構體,都已在覈心層定義。核心層還提供了三種類型API接口(API_I2cAdapterCreate,API_I2cDeviceCreate,API_I2cDeviceTransfer等等)用於建立I2C適配器,建立I2C設備,調用I2C相應適配器下的總線傳輸函數。接口

  7. I2C總線驅動

    I2C總線驅動是I2C適配器的軟件實現,提供I2C適配器與從設備間完成數據通訊的能力。 I2C總線驅動由i2c_adapter和i2c_funcs來描述。文檔

    包含初始化I2C總線,操做函數集(總線傳輸Transfer函數,總線控制MasterCtl函數)。源碼

  8. I2C設備驅動

    I2C設備驅動是對I2C從設備的軟件實現,一個具體的I2C設備驅動包括兩個部分:一部分是i2c_device,用於將設備掛接於i2c總線;另外一部分是設備自己的驅動i2c_driver。 I2C設備驅動程序由i2c_device和i2c_driver來描述。ast

    包含初始化I2C設備,操做函數集(例如:RTC設置時間SetTime函數,RTC獲取時間GetTime函數)。模板

  9. I2C相關代碼目錄

  10. I2C核心層代碼位置

    I2C核心層代碼位於SylixOS/system/device/i2c目錄下,如圖 22所示:

    圖 22 I2C核心層代碼目錄

    i2cBus.h I2C總線模型,包含總線傳輸控制消息塊結構體,I2C總線適配器結構體,I2C總線傳輸函數集結構體。

    i2cDev.h I2C總線掛載的設備結構,包含I2C設備類型結構體,I2C適配器基本操做聲明,I2C 設備基本操做聲明,I2C 設備傳輸控制操做聲明。

    i2cLib.c I2C設備操做庫,定義i2cDev.h中聲明的函數。

  11. I2C總線層與設備層代碼位置

    I2C總線層與I2C設備層代碼通常之內核模塊方式動態加載進內核,能夠在driver_module/i2c_drv目錄下查看。

  12. 重要的數據結構

  13. I2C總線適配器

    Lw_i2c_adapter結構體表明I2C總線控制器,如圖 23所示:

    圖 23 I2C總線適配器

    Lw_i2c_funcs對應一套通訊方法,如圖 24所示:

    圖 24 I2C總線傳輸函數集

    I2CFUNC_pfuncMasterXfer函數實現總線上數據傳輸,與具體的適配器有關。

  14. I2C傳輸函數實現模板

    I2CFUNC_pfuncMasterXfer函數實現模板,如圖 25所示:

    圖 25 I2C傳輸函數實現模板

    上面調用的函數用於完成適配器的底層硬件操做,與I2C適配器和CPU的具體硬件直接相關,須要由工程師根據芯片的數據手冊來實現。在內核源碼中,針對不一樣的I2C適配器都有I2CFUNC_pfuncMasterXfer的實現,風格與模板不盡相同,可是能夠用該模板做爲參考來看源代碼,受益不淺。

  15. I2C設備類型

    Lw_i2c_device表明I2C從設備,如圖 26所示:

    圖 26 I2C設備類型

  16. 核心層提供的接口函數

    增長/刪除I2C適配器,如圖 27所示:

    圖 27 I2C適配器基本操做

    增長/刪除I2C設備,如圖 28所示:

    圖 28 I2C設備基本操做

    I2C傳輸,發送和接收,如圖 29所示:

    圖 29 I2C設備傳輸控制操做

    最終會調用到適配器實現的I2CFUNC_pfuncMasterXfer函數來完成數據傳輸工做。

相關文章
相關標籤/搜索