A5D2 GPIO测试

1. 首先构建设备树,此例中,测试两个GPIO管脚,一个做输入中断,一个做输出


每个GPIO需要分别描述,其中,label随意,pioA后面的数字,可以在sama5d2-pinfunc.h文件中找到


这是管脚功能复用的配置,把他们配置成普通的GPIO


2. 使用compatible = "gpio-test" 这个名字,构建一个平台总线驱动程序,系统会自动调用probe函数

    然后,我们在probe函数里再构建一个字符设备驱动即可。


3. 在驱动中,我们需要操作gpio口,比如得到其电平值,置电平值,申请中断,在a5d2的驱动里,都需要用到

gpio_desc这个结构体指针,那我们如何能得到上面两个gpio的gpio_desc指针呢。通过查看例子驱动,发现只要两句

即可。

device_for_each_child_node(dev, child) {
gpiod[i] = devm_get_gpiod_from_child(dev, NULL, child);
i++;
}

这样就可以得到设备树里描述的两个gpio的gpio_desc指针,将它存储在一个指针数组里为后面备用。


4. 那如何操作它呢,a5d2对gpio所有的操作都封装在gpiolib.c文件中。

下面介绍几个常用的函数

gpiod_direction_input  设置gpio为输入

gpiod_direction_output  设置gpio为输出

gpiod_set_value 设置gpio输出电平

gpiod_get_value 得到gpio输入电平

gpiod_to_irq 得到gpio的中断编号,为申请中断用


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值