国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 1312|回復(fù): 1
打印 上一主題 下一主題

iMX6Q GPIO 功能應(yīng)用操作講解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-5-12 15:56:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: 飛凌嵌入式
本文以[color=inherit !important]飛凌嵌入式[color=inherit !important]OKMX6Q/[color=inherit !important]DL-[color=inherit !important]C[color=inherit !important]開發(fā)板為基礎(chǔ)講解,操作系統(tǒng)為[color=inherit !important]Linux3.0.35,其它品牌產(chǎn)品請(qǐng)參考使用,本文主要介紹了[color=inherit !important]iMX6Q開發(fā)板[color=inherit !important]GPIO的操作,寫本文章主要是記錄日常客戶經(jīng)常問到的一些問題,為客戶提供一些解決思路,希望可以協(xié)助客戶加速產(chǎn)品的研發(fā)速度,由于水平有限,在服務(wù)過程中所提供的任何資料和信息,都僅供參考。一、通用GPIO的使用

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


root@freescale /sys/class/gpio$ lsexport       gpiochip0    gpiochip160  gpiochip32   gpiochip96gpiochip128   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)的屬性文件,其余七個(gè)文件則為符號(hào)鏈接(gpiochip0,gpiochip32,gpiochip64,gpiochip96,gpiochip128,gpiochip160,gpiochip192),分別指向各自對(duì)應(yīng)的GPIO組。以gpiochip0為例,此目錄下的文件有:


root@freescale /sys/class/gpio/gpiochip0$ lsbase       label      ngpio      power      subsystem  uevent


名稱

描述


base

GPIO組的初始編號(hào)


label

GPIO組標(biāo)簽


ngpio

該組的GPIO總數(shù)


power

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


subsystem

符號(hào)鏈接,指向父目錄


uevent

內(nèi)核與[color=inherit !important]udev(自動(dòng)設(shè)備發(fā)現(xiàn)程序)之間的通信接口


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

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

在公式中BANK為[color=inherit !important]GPIO引腳所在的GPIO組編號(hào),N則為[color=inherit !important]引腳在該個(gè)BANK中的序號(hào)。以GPIO7-IO03 為例,其BANK值為7,N值為3,因此排列序號(hào)為(7-1)*32+3=195。

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

1、GPIO編號(hào)導(dǎo)出

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

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

2、取消GPIO編號(hào)導(dǎo)出

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

3、 配置GPIO的輸入輸出方向

echo out >/sys/class/gpio/gpio195/direction

direction可接收的參數(shù):in,out,high,low;其中high,low設(shè)置方向?yàn)檩敵霾alue值設(shè)置為相應(yīng)的1/0。

4、查看GPIO的輸入輸出方向:cat /sys/class/gpio/gpio195/ direction

5、配置GPIO的高低[color=inherit !important]電平(值為1/0)

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

echo 1 >/sys/class/gpio/value

6、 查看GPIO的輸出值cat /sys/class/gpio/gpio195/value

二、修改Pinmux配置

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

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

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

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


/*GPIO*/3       MX6Q_PAD_SD3_CLK__GPIO_7_3,       MX6Q_PAD_SD3_CMD__GPIO_7_2,       MX6Q_PAD_SD3_DAT2__GPIO_7_6,       MX6Q_PAD_SD3_DA[color=inherit !important]T3__GPIO_7_7,       MX6Q_PAD_SD3_DAT4__GPIO_7_1,       MX6Q_PAD_SD3_DAT5__GPIO_7_0,       MX6Q_PAD_SD3_DAT6__GPIO_6_18,       MX6Q_PAD_SD3_DAT7__GPIO_6_17,       MX6Q_PAD_NANDF_D1__GPIO_2_1,       MX6Q_PAD_NANDF_D0__GPIO_2_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,        MX6Q_PAD_SD3_DAT6__USDHC3_DAT6_50MHZ,        MX6Q_PAD_SD3_DAT7__USDHC3_DAT7_50MHZ,        MX6Q_PAD_NANDF_D0__GPIO_2_0,                  MX6Q_PAD_NANDF_D1__GPIO_2_1,            */

修改前:

修改后:

修改完成后重新編譯內(nèi)核,并將鏡像燒寫到[color=inherit !important]iMX6Q開發(fā)板上進(jìn)行測(cè)試。

測(cè)試

echo 195 > /sys/class/gpio/export

echo out > /sys/class/gpio/gpio195/direction

echo 1 > /sys/class/gpio/gpio195/value

cat /sys/class/gpio/gpio195/value


三、Datasheet查看gpio

1、GPIO地址

[color=inherit !important]IMX6DQRM.pdf手冊(cè)中的第28章描述的是gpio相關(guān)的內(nèi)容。

手冊(cè)第二章Memory Maps內(nèi)存映射大概在215頁,有關(guān)于GPIO組的映射地址:

2、GPIO寄存器

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

寄存器

描述


GPIOx_DR

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


GPIOx_GDIR

控制GPIO引腳方向


GPIOx_PSR

當(dāng)GPIO為輸入時(shí),從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、引腳復(fù)用

iMX6Q數(shù)據(jù)手冊(cè)36章IOMUX Controller這一章節(jié)有興趣的也可以詳細(xì)看一下或者從網(wǎng)絡(luò)上找一些相關(guān)資料了解,此處不做詳述

該章節(jié)主要描述引腳的復(fù)用配置以及一些功能的配置等,內(nèi)核代碼中關(guān)于這一塊的配置在linux-3.0.35/arch/arm/plat-mxc/include/mach/iomux-mx6q.h文件中。該文件中的具體配置有興趣的可以自己看一下,一般這塊[color=inherit !important]恩智浦[color=inherit !important]NXP官方是默認(rèn)配置好的,配置項(xiàng)的具體含義也可以從網(wǎng)上搜搜,并結(jié)合iomux-mx6q.h文件自己看看。

4、參數(shù)查找[color=inherit !important]配置方法

手冊(cè)第四章查找EIM_A22,可以看到需要ALT Mode是ALT5,而且Pad Settings需要配置的參數(shù)有PKE – ENABLED, 對(duì)應(yīng)的Pad Registers為[SW_PAD_CTL_PAD_EIM_ADDR22]。

手冊(cè)繼續(xù)搜索[SW_PAD_CTL_PAD_EIM_ADDR22] 寄存器, 可以看到寄存器的具體配置和具體的偏移地址以及上拉的配置。

手冊(cè)尋找對(duì)應(yīng)的MUX Control Registers [IOMUXC_SW_MUX_CTL_PAD_EIM_ADDR22]。可以看到具體的配置模式ALT5模式的配置值為0x05UL。

附錄:常見GPIO調(diào)試問題處理參考

常見GPIO調(diào)試問題處理參考:

1.如果在GPIO導(dǎo)出時(shí)出現(xiàn)Device or resource busy的情況

      一般都是該引腳在內(nèi)核中配置為其他功能,需要仔細(xì)檢查內(nèi)核中引腳配置,不要被其他功能占用。

2.GPIO能夠?qū)С觯鞘褂玫臅r(shí)候各種功能都不正常的情況

     這種情況一般也是引腳在內(nèi)核中配置為其他功能,需要仔細(xì)檢查內(nèi)核中引腳配置,不要被其他功能占用(一般被串口占用會(huì)有這種情況);

    還有就是檢查硬件[color=inherit !important]電路,看硬件上有沒有上拉下拉這樣的硬件控制。



原文鏈接:https://www.forlinx.com/article_view_634.html


推薦
發(fā)表于 2021-6-18 09:47:47 | 只看該作者
沒人回,我坐個(gè)沙發(fā)

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本高清在线观看视频 | 色亚洲色图 | 色网站免费在线观看 | 精品国产网| 亚洲手机在线手机观看高清hd | 国产精品精品国产 | 狠狠热精品免费观看 | 久久se精品一区二区国产 | 91影| 欧美日本高清视频在线观看 | 久久综合精品国产一区二区三区 | 激情艳女三级2在线观看 | 在线观看国产一区二区三区 | 美国大片免费看 | 日本v片免费一区二区三区 日本vr超清在线视频免费 | 麻豆国产高清在线播放 | 亚洲欧美久久精品 | 婷婷在线五月 | 亚洲婷婷六月 | 四虎成人免费影院网址 | 日韩精品中文字幕一区二区三区 | 久久99热精品免费观看欧美 | 国产精品青青青高清在线观看 | 日韩电 影在线播放 | 国产日产欧美一区二区三区 | 天天综合久久 | 成人日韩在线观看 | 99re视频在线 | 亚洲色图 在线视频 | 久久精品免费一区二区视 | 四虎永久免费在线观看 | 国产成人福利在线视频下载 | 200款禁用软件免费下载安卓 | 国产三级自拍视频 | 日日夜夜免费精品视频 | h番在线观看 | 亚洲乱码卡一卡二卡三 | 久久久9999久久精品小说 | 香蕉婷婷 | 麻豆日韩国产精品欧美在线 | 最新国产毛片 |