我是靠谱客的博主 美好冬天,最近开发中收集的这篇文章主要介绍pinctrl学习笔记---概念介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.系统框图
pinctrl子系统和gpio子系统关系
2. dts重要概念
~/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt

2.1 Pinctrl client devices
相当于GPIO/I2C等模块,是pinctrl客户,使用pinctrl系统的设备
声明自己要使用哪些引脚的哪些功能,怎么配置

2.2 Pin controller devices
pinctrl
复用引脚,配置引脚

2.3 例子

device {
		pinctrl-names = "active", "idle";
		pinctrl-0 = <&state_0_node_a>;
		pinctrl-1 = <&state_1_node_a>, <&state_1_node_b>;
	};
pincontroller {
		... /* Standard DT properties for the device itself elided */

		state_0_node_a {
			...
		};
		state_1_node_a {
			...
		};
		state_1_node_b {
			...
		};
	}

解析:

  1. device有两种state
  2. 第0个state的名字是active,对应的引脚在state_0_node_a定义
  3. 第1个state的名字是idle,对应的引脚在state_1_node_a和state_1_node_b定义
  4. 比如UART设备,正常状态是active,休眠状态是idle,他们引脚配置不同

2.4 pinctrl-starfive例子

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
	status = "okay";
};
uart3_pins: uart3-0 {
		rx-pins {
			pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE,
				  GPI_UART3_PAD_SIN)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-enable;
			slew-rate = <0>;
		};
		tx-pins {
			pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			drive-strength = <35>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
	};

最后

以上就是美好冬天为你收集整理的pinctrl学习笔记---概念介绍的全部内容,希望文章能够帮你解决pinctrl学习笔记---概念介绍所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部