想问下大家在驱动端是怎么操作GPIO的(不是直接在用户空间操作sys/class的方法),例如让特定GPIO输出高低电平。在dts里面看到大多数是使用
pinctrl的方法,例如spi,串口等,但是貌似都没有让gpio设置高低电平的方法,不知道要怎么配置dts才能完成高低电平的配置。
spi0_pins_a: spi0-pins-pc {
pins = "PC0", "PC1", "PC2", "PC3";
function = "spi0";
};
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins_a>;
status = "okay";
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,xt25f128b", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
};
};
或者说有什么推荐的操作GPIO的方法或者资料网站?诚意求教,因为看到网上很多都是其他平台的或者太久了,对于新手来说无法操作,所以才来求助的。
离线
离线
感谢晕哥,请问PG0 = 6*32+0 = 192 是怎么来的?是每个GPIO组默认都是32个吗,例如PA0 = 1, PB0 = 32?跟datasheet里面的pin num是同一个东西吗,为什么貌似对不上呢?
离线
找到v3s的一个类似的贴子, https://whycan.cn/t_1853.html ,GPIO号跟Nano是一样的吗?
离线
感谢晕哥指点迷津!
离线
2# 方法很简洁。学习了。
离线
#include <linux/gpio.h>
//PG0 = 6*32+0 = 192
gpio_direction_output(192, 0); //设置为输出状态, 默认输出低电平
gpio_set_value(192, 1); //高电平
gpio_set_value(192, 0); //低电平
大佬,使用该接口对应的引脚没有输出对应的电平如何解决
离线