
北京谈球吧论坛科技有限公司
谘詢熱線:010-82488292
公司電話:010-82488292
公司傳真:010-82611646
企業郵箱:sales@changyinwuye.com
地址:北京市海澱區中關村大街19號 新中關大廈B座南翼15層1507室
I.MX6 評估板 開發指導(GPIO)
摘要 : I.MX6 GPIO的值計算方法是(所在的組 - 1) * 32 + 序號,所以GPIO_1_20的管腳值為 (1 – 1) * 32 + 20 = 20。
I.MX6 評估板 開發指導(GPIO)IF">[size=0.875em]
目錄[size=12.502px] [隱藏]
1GPIO輸出和輸入
1.1修改.h文件
1.2配置內核
1.3編譯
1.4重新燒寫係統並啟動
1.5設備操作
1.5.1查看gpio目錄
1.5.2向係統注冊GPIO
1.5.3GPIO輸出控製
1.5.4GPIO輸入設置
1.5.5注銷GPIO接口
2GPIO LED
2.1進入內核目錄
2.2添加代碼
2.2.1修改.h文件
2.2.2修改.c文件
2.3內核配置
2.4編譯
2.5重新燒寫係統並啟動
2.6GPIO_LED操作
2.6.1設備文件目錄
2.6.2操作示例
3GPIO按鍵
3.1修改.h文件
3.2修改.c文件
3.3內核配置
3.4編譯
3.5重新燒寫係統並啟動
3.6GPIO按鍵操作
3.6.1GPIO_KEYS設備
3.6.2查看設備信息
3.6.3設備文件
3.6.4操作示例
GPIO輸出和輸入
GPIO輸入輸出以SD1_CLK管腳為例。
修改.h文件
1)檢查頭文件中對SD1_CLK的配置
示例如下:
$ sed -n "/PAD_SD1_CLK/p" arch/ARM/mach-mx6/board-mx6q_sabresd.h
2)注釋頭文件中對SD1_CLK的配置
示例如下:
$ sed -i "s/MX6Q_PAD_SD1_CLK/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
3)在mx6q_sabresd_pads中添加對SD1_CLK的配置
配置SD1_CLK功能為MX6Q_PAD_SD1_CLK__GPIO_1_20
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_SD1_CLK__GPIO_1_20,"
arch/arm/mach-mx6/board-mx6q_sabresd.h
4)查看修改結果
示例如下:
$ sed -n "/PAD_SD1_CLK/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
配置內核
菜單定位
Device Drivers ---> -*- GPIO Support ---> /sys/class/gpio/... (sysfs inteRFace)
編譯
make uImage
重新燒寫係統並啟動設備操作查看gpio目錄
在/sys/class/gpio/目錄下可以看到已經導出的GPIO
$ ls /sys/class/gpio/
向係統注冊GPIO
使用echo注冊GPIO_1_20到係統,即可看到gpio目錄下多出一個gpio20目錄。
提示:I.MX6 GPIO的值計算方法是(所在的組 - 1) * 32 + 序號,所以GPIO_1_20的管腳值為 (1 – 1) * 32 + 20 = 20。
$ echo 20 > /sys/class/gpio/export
GPIO輸出控製
設置管腳為輸出狀態
$ echo out > /sys/class/gpio/gpio20/direction
設置管腳為輸出為高電平
echo 1 > /sys/class/gpio/gpio20/value
設置管腳為輸出為低電平
echo 0 > /sys/class/gpio/gpio20/value
GPIO輸入設置
設置管腳為輸入狀態
echo in > /sys/class/gpio/gpio20/direction
獲取輸入值
cat /sys/class/gpio/gpio20/value
注銷GPIO接口
注銷GPIO_1_20
echo 20 > /sys/class/gpio/unexport
GPIO LED
說明:GPIO LED以PAD NANDF_CS0為例。
進入內核目錄
$ cd ~/MY-I.MX6/linux-3.0.35/
添加代碼修改.h文件
1)查找頭文件中對NANDF_CS0的配置
示例如下:
$ sed -n "/PAD_NANDF_CS0/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
2)注釋頭文件中對NANDF_CS0的配置
示例如下:
$ sed -i "s/MX6Q_PAD_NANDF_CS0/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
3)在mx6q_sabresd_pads中添加對NANDF_CS0的配置
配置NANDF_CS0功能為MX6Q_PAD_NANDF_CS0__GPIO_6_11
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_NANDF_CS0__GPIO_6_11," arch/arm/mach-mx6/board-mx6q_sabresd.h
4)查看修改結果
示例如下:
$ sed -n "/PAD_NANDF_CS0/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
修改.c文件
1)檢查.c文件中GPIO是否被重複使用
示例如下:
$ sed -n ‘/IMX_GPIO_NR(6,.11)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
2)在.c文件中增加GPIO的宏定義
增加#define SABRESD_USER_LED IMX_GPIO_NR(6, 11)
示例如下:
$ GPIO_DEFINE="#define SABRESD_USER_LED IMX_GPIO_NR(6, 11)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
2)檢查gpio_led類型的數據定義
示例如下:
$ sed -n ‘/struct gpio_led /,/}/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
3)增加user_led的數據定義
static struct gpio_led imx6q_gpio_leds[] = {
GPIO_LED(SABRESD_USER_LED, "user_led", 0, 1,
"charger"),
};
內核配置
菜單定位
Device Drivers ---> LED Support ---> <*> LED Support for GPIO connected LEDs
編譯
make uImage
重新燒寫係統並啟動GPIO_LED操作設備文件目錄
啟動係統後即存在/sys/class/leds/user_led目錄,使用ls即可看到
$ ls /sys/class/leds/user_led
操作示例
1)置NANDF_CS0為1
$ echo 1 > /sys/class/leds/user_led/brightness
2)置NANDF_CS0為0
$ echo 0 > /sys/class/leds/user_led/brightness
GPIO按鍵
GPIO按鍵以GPIO_4、EIM_BCLK、CSI0_DATA_EN為例,分別是原理圖的按鍵SW2,SW3和SW4。
修改.h文件
1)查找頭文件中對PAD的配置
示例如下:
$ sed -n "/PAD_GPIO_4/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_EIM_BCLK/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_CSI0_DATA_EN/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
2)注釋頭文件中對PAD的配置
示例如下:
$ sed -i "s/MX6Q_PAD_GPIO_4/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -i "s/MX6Q_PAD_EIM_BCLK/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -i "s/MX6Q_PAD_CSI0_DATA_EN/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
3)在mx6q_sabresd_pads中添加對PAD的配置
配置GPIO_4功能為MX6Q_PAD_GPIO_4__GPIO_1_4
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_GPIO_4__GPIO_1_4," arch/arm/mach-mx6/board-mx6q_sabresd.h
配置EIM_BCLK功能為MX6Q_PAD_EIM_BCLK__GPIO_6_31
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_EIM_BCLK__GPIO_6_31," arch/arm/mach-mx6/board-mx6q_sabresd.h
配置CSI0_DATA_EN的PAD功能為MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20," arch/arm/mach-mx6/board-mx6q_sabresd.h
4)查看修改結果
示例如下:
$ sed -n "/PAD_GPIO_4/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_EIM_BCLK/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_CSI0_DATA_EN/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
修改.c文件
1)檢查.c文件中GPIO是否被重複使用
示例如下:
$ sed -n ‘/IMX_GPIO_NR(1,.4)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
$ sed -n ‘/IMX_GPIO_NR(6,.31)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
$ sed -n ‘/IMX_GPIO_NR(5,.20)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
2)在.c文件中增加GPIO的宏定義
MX6Q_PAD_GPIO_4__GPIO_1_4
在.c文件中添加#define SABRESD_POWER_OFF IMX_GPIO_NR(1, 4)
示例如下:
$ GPIO_DEFINE="#define SABRESD_POWER_OFF IMX_GPIO_NR(1, 4)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20
在.c文件中添加#define SABRESD_VOLUME_UP IMX_GPIO_NR(6, 31)
示例如下:
$ GPIO_DEFINE="#define SABRESD_VOLUME_UP IMX_GPIO_NR(6, 31)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20
在.c文件中添加#define SABRESD_VOLUME_DN IMX_GPIO_NR(5, 20)
示例如下:
$ GPIO_DEFINE="#define SABRESD_VOLUME_DN IMX_GPIO_NR(5, 20)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
3)檢查gpio_keys_button類型的數據定義
示例如下:
$ sed -n ‘/gpio_keys_button/,/}/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
4)增加volume-up、volume-down、power的數據定義
static struct gpio_keys_button imx6q_buttons[] = {
GPIO_BUTTON(SABRESD_VOLUME_UP, KEY_VOLUMEUP, 1, "volume-up", 0, 1),
GPIO_BUTTON(SABRESD_VOLUME_DN, KEY_VOLUMEDOWN, 1, "volume-down", 0, 1),
GPIO_BUTTON(SABRESD_POWER_OFF, KEY_POWER, 1, "power", 1, 1),
};
內核配置
菜單定位:
Device Drivers ---> Input device support ---> Keyboards ---> <*> GPIO Buttons
編譯
make uImage
重新燒寫係統並啟動GPIO按鍵操作GPIO_KEYS設備
啟動係統後即存在/sys/devices/platform/gpio-keys目錄,使用ls即可看到
$ ls /sys/devices/platform/gpio-keys
查看設備信息
在proc文件係統下可以看到相關信息
$ cat /proc/bus/input/devices
設備文件
event0即對應gpio按鍵對應的設備文件,使用ls可以查看:
$ ls /dev/input/event0 –la
操作示例
見Linux測試手冊
上一篇:初學者可以以谈球吧论坛科技的AM335X學習嵌入式1970-01-01
下一篇:Rockchip RK3399 eMMc 的 DTS 配置說明1970-01-01
文章推薦
- RK3288底板+核心板設計過程
- RK3288廣告機硬件和軟件調試心得
- 一款基於TI Sitara Cortex-A8 AM3358的嵌入式單板機
- BeagleBone產品采用了谈球吧论坛儀器推出的Sitara AM335x Cortex A8 ARM處理器
- 一個帶有HDMI視頻輸入的VS-RK3288方案
- 瑞芯微vs-rk3288方案定製androids 開發板
- RK3288在人臉識別上的應用及外接雙路攝像頭
- 谈球吧论坛儀器(TI)工業以太網解決方案
- AM335x ARM Cortex-A8處理器-TI DLP 3D打印機總體解決方案
- 瑞星微RK3288方案設計
- i.MX6Q Cortex-A9新一代智能平台
- i.MX6Q車載全觸控智能管理終端解決方案
- AM谈球吧平台正规吗嵌入式充電樁計費控製單元主板方案
- 大聯大控股世平推出 TI 、NXP 多領域應用人機交互平台
- 強化物聯網“心髒”,智能網關設計詳解
- TI AM437x係列處理器為核心的嵌入式開發板Rico Board
- 如何用BB Black製作DAC係統
- 采用AM3352工控核心板進行免疫熒光檢測儀解決方案
- 人機交互與TI Sitara處理器的產品性能介紹
- Rockchip RK3399 eMMc 的 DTS 配置說明
我要評論: | |
*內 容: |
|
驗證碼: |
|
共有0條評論