在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 博客專欄

      EEPW首頁 > 博客 > i.MX6 平臺的 GPIO 應(yīng)用筆記

      i.MX6 平臺的 GPIO 應(yīng)用筆記

      發(fā)布人:電子禪石 時間:2019-11-21 來源:工程師 發(fā)布文章

      ▋引言本文主要以FETMX6x-C平臺,Linux3.0.35內(nèi)核為基礎(chǔ),其他平臺也可以參考,不同平臺之間會存在差異,需自行修改適應(yīng)自己的使用。

      1

      GPIO的通用操作



      1.1 普通GPIO的使用    

      在嵌入式系統(tǒng)中對GPIO的操作是最基本的操作。在Linux中有一個通用的GPIO操作接口。在開發(fā)板文件系統(tǒng)中會有一個控制GPIO的目錄:/sys/class/gpio;linux-3.0.35內(nèi)核中Documention文件夾下邊有g(shù)pio.txt文檔可以參考。

      root@freescale/sys/class/gpio$ ls

      export      gpiochip0    gpiochip160  gpiochip32   gpiochip96 gpiochip128  gpiochip192   gpiochip64    unexport

      名稱

      描述

      export

      導(dǎo)出GPIO操作接口

      unexport

      撤銷GPIO操作接口的導(dǎo)出

      gpiochip0

      GPIO1組

      gpiochip32

      GPIO2組

      gpiochip64

      GPIO3組

      gpiochip96

      GPIO4組

      gpiochip128

      GPIO5組

      gpiochip160

      GPIO6組

      gpiochip192

      GPIO7組

      其中,export和unexport為GPIO子系統(tǒng)的屬性文件,其余七個文件則為符號鏈接(gpiochip0,gpiochip32,gpiochip64,gpiochip96,gpiochip128,gpiochip160,gpiochip192),分別指向各自對應(yīng)的GPIO組。

      以gpiochip0為例,此目錄下的文件有:

      root@freescale/sys/class/gpio/gpiochip0$ ls

      base      label      ngpio      power      subsystem  uevent

      名稱

      描述

      base

      GPIO組的初始編號

      label

      GPIO組標簽

      ngpio

      該組的GPIO總數(shù)

      power

      設(shè)備供電方面的相關(guān)信息

      subsystem

      符號鏈接,指向父目錄

      uevent

      內(nèi)核與udev(自動設(shè)備發(fā)現(xiàn)程序)之間的通信接口

      當我們操作某個GPIO之前,需要先向export文件寫入該GPIO編號以導(dǎo)出它的設(shè)備目錄。GPIO編號的計算公式如下所示:

      GPIO編號=(BANK-1)*32+N

      在公式中BANK為GPIO引腳所在的GPIO組編號,N則為引腳在該個BANK中的序號。以GPIO7-IO03為例,其BANK值為7,N值為3,因此排列序號為(7-1)*32+3=195。

      下面介紹該目錄下的一些操作的用法。

      1.1.1 GPIO編號導(dǎo)出

      文件系統(tǒng)中/sys/class/gpio/export文件用于通知系統(tǒng)需要導(dǎo)出要控制的GPIO的編號:

      echo195 >/sys/class/gpio/export

      命令成功后生成/sys/class/gpio/gpio195目錄。如果沒有出現(xiàn)相應(yīng)的目錄,說明此引腳不可導(dǎo)出,一般這種情況是驅(qū)動中pinmux功能配置不正確,或者配置了多種pinmux功能引起沖突導(dǎo)致。

      1.1.2 取消GPIO編號導(dǎo)出

      文件系統(tǒng)中/sys/class/gpio/unexport文件用于通知系統(tǒng)取消GPIO編號導(dǎo)出

      echo195  > /sys/class/gpio/unexport

      1.1.3 配置GPIO的輸入輸出方向

      echoout >/sys/class/gpio/gpio195/direction

      direction可接收的參數(shù):in,out,high,low;其中high,low設(shè)置方向為輸出并將value值設(shè)置為相應(yīng)的1/0。

      1.1.4 查看GPIO的輸入輸出方向

      cat/sys/class/gpio/gpio195/ direction

      1.1.5 配置GPIO的高低電平(值為1/0)

      當GPIO配置為輸出模式時,可以通過設(shè)置value值設(shè)置GPIO的高低電平。

      echo1 >/sys/class/gpio/value

      1.1.6 查看GPIO的輸出值

      cat/sys/class/gpio/gpio195/value

      2

      驅(qū)動配置


      2.1 修改pinmux配置  

      驅(qū)動中的主要位置:linux3.0.35/drivers/gpio/gpiolib.c

      修改文件arch/arm/mach-mx6/board-mx6q_c_sabresd.h,在其中增加該引腳對應(yīng)的GPIO配置,該引腳如果有其他復(fù)用配置,需要將其他復(fù)用配置去掉,只保留一種pinmux配置。內(nèi)核中引腳功能定義在arch/arm/plat-mxc/include/mach/iomux-mx6q.h文件中,該文件對每個引腳的復(fù)用功能進行了定義,有興趣的可以自己看一下。

      以釋放原SD卡功能占用的部分引腳為例

      修改文件arch/arm/mach-mx6/board-mx6q_c_sabresd.h,在其中增加如下定義:

      /*GPIO*/

      MX6Q_PAD_SD3_CLK__GPIO_7_3,

      MX6Q_PAD_SD3_CMD__GPIO_7_2,

      MX6Q_PAD_SD3_DAT2__GPIO_7_6,

      MX6Q_PAD_SD3_DAT3__GPIO_7_7,

      MX6Q_PAD_SD3_DAT4__GPIO_7_1,

      MX6Q_PAD_SD3_DAT5__GPIO_7_0,

      將原來的SD卡的功能注釋掉

      /*USDHC3 */

      /*     MX6Q_PAD_SD3_CLK__USDHC3_CLK_50MHZ,

      MX6Q_PAD_SD3_CMD__USDHC3_CMD_50MHZ,

      MX6Q_PAD_SD3_DAT0__USDHC3_DAT0_50MHZ,

      MX6Q_PAD_SD3_DAT1__USDHC3_DAT1_50MHZ,

      MX6Q_PAD_SD3_DAT2__USDHC3_DAT2_50MHZ,

      MX6Q_PAD_SD3_DAT3__USDHC3_DAT3_50MHZ,

      MX6Q_PAD_SD3_DAT4__USDHC3_DAT4_50MHZ,

      MX6Q_PAD_SD3_DAT5__USDHC3_DAT5_50MHZ,

      */

       修改前 



       修改后 



      修改完成后重新編譯內(nèi)核,并將鏡像燒寫到開發(fā)板上進行測試。

      測試

      echo195 > /sys/class/gpio/export

      echoout > /sys/class/gpio/gpio195/direction

      echo1 > /sys/class/gpio/gpio195/value

      cat/sys/class/gpio/gpio195/value

      3

      Datasheet查看GPIO


      3.1GPIO地址  IMX6DQRM.pdf手冊中的第28章描述的是GPIO相關(guān)的內(nèi)容,手冊第二章MemoryMaps內(nèi)存映射大概在215頁,有關(guān)于GPIO組的映射地址:


      3.2 GPIO寄存器  

      數(shù)據(jù)手冊第28章中第1429頁描述的是GPIO控制的8個32位寄存器

      寄存器

      描述

      GPIOx_DR

      數(shù)據(jù)寄存器,當GPIO為輸出時,可以通過寫DR寄存器來驅(qū)動GPIO引腳

      GPIOx_GDIR

      控制GPIO引腳方向

      GPIOx_PSR

      GPIO為輸入時,從PSR寄存器讀取數(shù)據(jù)

      GPIOx_ICR1

      配置GPIO中斷的觸發(fā)方式,高低電平出發(fā)還是沿觸發(fā)

      GPIOx_ICR2

      配置GPIO中斷的觸發(fā)方式,高低電平出發(fā)還是沿觸發(fā)

      GPIOx_IMR

      中斷屏蔽寄存器

      GPIOx_ISR

      中斷狀態(tài)寄存器

      GPIOx_EDGR_SEL

      設(shè)置邊沿觸發(fā)方式


      3.3 引腳復(fù)用  數(shù)據(jù)手冊36章IOMUXController這一章節(jié)有興趣的也可以詳細看一下或者從網(wǎng)絡(luò)上找一些相關(guān)資料了解,此處不做詳述。該章節(jié)主要描述引腳的復(fù)用配置以及一些功能的配置等,內(nèi)核代碼中關(guān)于這一塊的配置在linux-3.0.35/arch/arm/plat-mxc/include/mach/iomux-mx6q.h文件中。該文件中的具體配置有興趣的可以自己看一下,一般這塊恩智浦(NXP)官方是默認配置好的,配置項的具體含義也可以從網(wǎng)上搜搜,并結(jié)合iomux-mx6q.h文件自己看看。


      *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



      關(guān)鍵詞:

      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉