[经验] iTOP-iMX6开发板-GPIO读写配置文档_V1.0《2》

砂舞的玩笑   2019-10-22 10:58 楼主

本文档主要介绍 iMX6 板子 gpio 引脚读写配置。有关平台文件的设备注册的资料可以参

考“iTOP-iMX6-平台文件注册设备”文档。注册的设备名称是“gpio_ctl”。

硬件环境:iMX6 开发板:核心板 v_1.2、底板 v_2.2(以及 v_2.1 底板)。

软件环境:Ubuntu12.04。

1.4 平台文件修改

进入 iTOPiMX6_android4.4.2/kernel_imx/arch/arm/mach-mx6/目录,使用 vi

board-mx6q_topeet.c 命令,打开 board-mx6q_topeet.c 文件。

搜索关键词“CONFIG_LEDS_CTL”,按照 leds 模块,添加 gpio 的配置。如下如所示。

()
(下载次数: 0, 上传)

修改完成后,保存退出。再次打开 board-mx6q_topeet.c 文件。

搜索关键词“LEDS_CTL”,按照 leds 模块,添加 gpio 配置。如下图所示。

()
(下载次数: 0, 上传)

添加完成后,保存退出。

接着进入“iTOP-iMX6_android4.4.2/kernel_imx/drivers/char”目录,使用“vi

Kconfig”命令打开 Kconfig 文件。

搜索关键词”LEDS_CTL”,按照 leds 模块,添加 gpio 配置。如下图所示。

()
(下载次数: 0, 上传)

修改完成后,保存退出。

可按下面步骤验证一下。

进入内核目录,依次使用命令”cp config_for_iTOPiMX6_linux .config”、” export

ARCH=arm”、”make menuconfig”。进入 Device Drivers →Character devices 目

录,可以看见新添加的配置。如下图所示。

()
(下载次数: 0, 上传)

选中,退出,按照”iTOP-i.MX6 开发板之全能版使用手册”中的内核编译步骤,进行编

译内核。重新烧写到开发板。

开发板启动后,使用命令“ls /sys/devices/platform/”可以查看到新注册的 gpio_ctl 设

备。如下图所示。

()
(下载次数: 0, 上传)

至此,设备注册完成。

1.5 驱动加载及应用测试

1.5.1 读操作

具体编译过程不再赘述。依然可以参考“iTOP-iMX6-GPIO 读取 GPIO 以及拨码开关状

态”文档。下面讲解加载过程和测试过程。

可以通过挂载 nfs 共享目录、tftp 传输文件和 U 盘挂载等方法,把 iTOP-

iMX6_gpio_read.ko 文件上传到开发板。

使用 insmod 命令加载驱动模块。如下图。

()
(下载次数: 0, 上传)

在 probe 函数中,有获取 gpio 状态的函数,然后打印出来。如下图。

()
(下载次数: 0, 上传)

下面使用”./iMX6_gpio_read”命令运行应用测试程序,检测 gpio 状态。如下图。

()
(下载次数: 0, 上传)

此时检测到的状态和刚加载驱动时状态一致。

通过驱动程序,我们可以得知,第一个 gpio 为 1 号拨码开关。后面依次为 U38 接口,1

号、2 号、3 号、10 号、12 号引脚。如下图。

()
(下载次数: 0, 上传)

接下来我们做一些连接,然后再运行测试程序,进行检测状态。

通过上述的底板原理图我们知道。U38 接口的 4 号引脚接地。11 号引脚接 3.3v 电源。

把 1 号拨码开关拨下来、通过导线连接 U38 接口 1 号引脚和 4 号引脚。然后使用

“./iMX6_gpio_read”命令,运行测试程序。结果如下图。

()
(下载次数: 0, 上传)

由上图可知,和我们预期相同。

使用引线连接 11 号引脚和 12 号引脚、使用引线连接 4 号引脚和 2 号引脚。然后使用

“./iMX6_gpio_read”命令,运行测试程序。结果如下图。

()
(下载次数: 0, 上传)

测试完成。

1.5.2 写操作

与读操作类似。具体编译过程不再赘述。依然可以参考“iTOP-iMX6-GPIO 读取 GPIO

以及拨码开关状态”文档。下面讲解加载过程和测试过程。

可以通过挂载 nfs 共享目录、tftp 传输文件和 U 盘挂载等方法,把 iTOP-

iMX6_gpio_write.ko 文件上传到开发板。

使用 insmod 命令加载驱动模块。如下图。

()
(下载次数: 0, 上传)

在 probe 函数中,我们已经将各个 gpio 状态设置为 1,也就是高电平,如下图。

()
(下载次数: 0, 上传)

现在 U38 上的五个引脚均为高电平。通过万用表测量电压均为 3.3v(4 号、9 号引脚为

地)。下面调用应用程序,改变引脚的电压值。使用”./iMX6_gpio_write 0 1”命令改变 1

号引脚的电压值。如下图。

()
(下载次数: 0, 上传)

此时使用万用表测量引脚 1 的电压值。为 0V。

下面说明一下运行应用程序时,传递的两个参数。第一参数 cmd 表示状态。1 表示高电

平、0 表示低电平。第二个参数 arg 表示对应操作的 gpio。arg 为 0 表示 1 号拨码开关、为

1~5 表示 U38 接口的 1 号、2 号、3 号、10 号、12 号引脚。

下面把 1 号引脚拉高,10 号引脚拉低。使用命令”./iMX6_gpio_write 1 1”

和”./iMX6_gpio_write 0 4”。如下图。

()
(下载次数: 0, 上传)

使用万用表测量这两个引脚的电压。1 号引脚为 3.3v,10 号引脚为 0v。

测试完成。

更多开发板详情了解哦 1.https://arm-board.taobao.com 2.www.topeetboard.com Q: 2551456065

回复评论 (2)

点赞  2019-10-22 13:50

8错啊

点赞  2019-11-1 15:07
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复