快捷搜索:  汽车  科技

rk芯片使用手册(RK开发板SPI2管脚充当GPIO无法改变电平问题解决)

rk芯片使用手册(RK开发板SPI2管脚充当GPIO无法改变电平问题解决)763.CSN /GPIO2_B41: 3V32 CLK /GPIO2_B375

我的AIO-3399J的开发板,因为没有引出gpio管脚,所以我用spi2被拉出引脚复用成GPIO,并且在以前也能复用成gpio 但是最近spi2的管脚总是为高位1.8V 软件无法控制,经过调试发现问题并解决了。

管脚定义

rk芯片使用手册(RK开发板SPI2管脚充当GPIO无法改变电平问题解决)(1)

rk芯片使用手册(RK开发板SPI2管脚充当GPIO无法改变电平问题解决)(2)

根据接口定义和丝印实排,这个脚排列和GPIO序号对应如下

RK3399

RK3399 GPIO

1: 3V3

2 CLK /GPIO2_B3

75

3.CSN /GPIO2_B4

76

4.RX /GPIO2_B1

73

5.TX/GPIO2_B2

74

6 GND

Rockchip 的GPIO操作

我们选RX GPIO2_B1来作测试脚,序号73来测试

申请73号为gpio

echo 73 > /sys/class/gpio/export

设置GPIO类型 out为输出脚 in为输入脚

echo out > /sys/class/gpio/gpio73/direction

设置GPIO电平的 1为高电平 0为低电平

echo 0 > /sys/class/gpio/gpio73/value

显示73号管脚状态

cat /sys/kernel/debug/gpio | grep 73

可以看出在软件层面,相应的输出是out lo /out high在变化, 但是用万用表量的总是输出 1.8V的高电平。

rk芯片使用手册(RK开发板SPI2管脚充当GPIO无法改变电平问题解决)(3)

问题解决

用ps aux 查看进程,发现有名字包含spi的,于是用命令查询

ps aux | grep spi

果然有一些进程,其中at-spi2-registryd 很可疑。

root@firefly:~# ps aux | grep spi

root 132 0.0 0.0 0 0 ? S 14:19 0:00 [spi1]

firefly 946 0.0 0.1 305756 5936 ? Sl 14:19 0:00 /usr/libexec/at-spi-bus-launcher --launch-immediately

firefly 953 0.0 0.0 6808 3184 ? S 14:19 0:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3

firefly 1154 0.0 0.1 161404 6728 ? Sl 14:19 0:00 /usr/libexec/at-spi2-registryd --use-gnome-session

root 1269 0.0 0.0 4720 644 pts/0 S 14:34 0:00 grep --color=auto spi

从名字看应用该与spi2有关,这一个gtk启动的应用,将at-spi-bus-launcher at-spi2-registryd 进程kill掉,再去调用如下命令行就会把管脚电平置低了。万用表量也会在 0v和1.8V变化。

echo 0 > /sys/class/gpio/gpio73/value

这应该是这个应用一直在操作spi2总线,即变估外面变成GPIO后,这个进程仍然在强制拉高。

看资料可以设环境变量

NO_AT_BRIDGE=1,那么它应该会阻止它们启动。

猜您喜欢: