GPIO的一些标识和用法

一、gpio的标识用法

我们在dts文件里面经常可以看到这些词语
比如:

enable-gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>; 

这种就代表这个gpio高电平有效,可以通过测量gpio的状态来判断gpio是否有效

IRQ_TYPE_NONE         //默认值,无定义中断触发类型
IRQ_TYPE_EDGE_RISING  //上升沿触发
IRQ_TYPE_EDGE_FALLING //下降沿触发
IRQ_TYPE_EDGE_BOTH    //上升沿和下降沿都触发
IRQ_TYPE_LEVEL_HIGH   //高电平触发
IRQ_TYPE_LEVEL_LOW    //低电平触发

二、GPIO的复用

有时候我们的gpio可能不是一个单独的gpio还可能是i2c的上的使用

pinctrl-names 定义了状态名称列表: default (i2c 功能) 和 gpio 两种状态。
pinctrl-0 定义了状态 0 (default)时需要设置的 pinctrl: &i2c4_xfer
pinctrl-1 定义了状态 1 (即 gpio)时需要设置的 pinctrl: &i2c4_gpio
pinctrl {
	i2c4{
    		i2c4_xfer: i2c4-xfer{
    			rockchip,pins = <1 12 RK_FUNC_1 &pcfg_pull_none>, <1 11 RK_FUNC_1 &pcfg_pull_none>;
        	};
		i2c4_gpio: i2c4-gpio {
			rockchip,pins = <1 12 RK_FUNC_GPIO &pcfg_pull_none>, <1 11 RK_FUNC_GPIO &pcfg_pull_none>;
        };
};

可以看出,如果gpio用于i2c的画,那么就是RK_FUNC_1.
如果是用于GPIO的话,就是RK_FUNC_GPIO,当然这些都有对应的返回值,如下

 #define RK_FUNC_GPIO    0
 #define RK_FUNC_1   1
 #define RK_FUNC_2   2
 #define RK_FUNC_3   3
 #define RK_FUNC_4   4
 #define RK_FUNC_5   5
 #define RK_FUNC_6   6
 #define RK_FUNC_7   7

目前我自己也只遇到FUNC_1。所以就只能说道这里。
还有就是gpio的计算:

https://blog.csdn.net/weixin_51178981/article/details/121455389?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163815676416780269811864%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163815676416780269811864&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-121455389.first_rank_v2_pc_rank_v29&utm_term=android%E7%9A%84%E5%BA%95%E5%B1%82%E9%A9%B1%E5%8A%A8%E8%B0%83%E8%AF%95%E5%BF%83%E5%BE%97&spm=1018.2226.3001.4187

可以参考下这篇文章里面的计算方法。

三、gpio的内部上拉下拉

&pinctrl {
	cam {
		cam_clkout0: cam-clkout0 {
			rockchip,pins =
				/* cam_clkout0 */
				<4 RK_PC0 RK_FUNC_1 &pcfg_pull_none>,     
				<3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>,
				<3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_down>, 
		};
};

常见的就是这几种,代表着内部浮空(pcfg_pull_none),内部上拉(pcfg_pull_up),内部下拉(pcfg_pull_down);一般来说浮空用的比较多,因为gpio的状态是会改变的,但是也有时候也需要强制上拉下拉。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值