我是靠谱客的博主 阔达冥王星,最近开发中收集的这篇文章主要介绍GPIO的一些标识和用法一、gpio的标识用法二、GPIO的复用三、gpio的内部上拉下拉,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、gpio的标识用法
  • 二、GPIO的复用
  • 三、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的状态是会改变的,但是也有时候也需要强制上拉下拉。

最后

以上就是阔达冥王星为你收集整理的GPIO的一些标识和用法一、gpio的标识用法二、GPIO的复用三、gpio的内部上拉下拉的全部内容,希望文章能够帮你解决GPIO的一些标识和用法一、gpio的标识用法二、GPIO的复用三、gpio的内部上拉下拉所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部