Junix 发表于 2020-4-6 09:49:00

LS1043a/LS1046a的GPIO3和GPIO7无法控制,一直是高电平。(已修复)

本帖最后由 Junix 于 2020-4-9 17:09 编辑

用linux脚本测试,GPIO3和GPIO7一直输出高电平1.8V。
GPIO4~GPIO6正常输出,电平可以反转。

在uboot环境下操作寄存器
(1)进入uboot后,测试GPIO3~GPIO7的默认电平都是1.8V。
(2)修改0x02300000 为0xffffffff,修改0x02310000 为0xffffffff,意思就是把所有IO的方向都设置为输出。
(3)GPIO4~GPIO6都为低电平,GPIO3和GPIO7还是1.8V。
所以操作寄存器也无法控制GPIO3和GPIO7为低电平。


修改RCW之后验证是可以的。
GPIO7 = GPIO1_31IRQ需要在rcw中加入下面两行。IRQ_BASE=1IRQ_EXT=3
GPIO2_12 IFC_CS_B需要在rcw中修改下面两行。IFC_GRP_E1_BASE=1IFC_GRP_E1_EXT=0



linux脚本内容如下:

#!/bin/sh

echo 460 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio460/direction
echo 461 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio461/direction
echo 462 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio462/direction
echo 463 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio463/direction
echo 511 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio511/direction

while true
do
    echo 0 > /sys/class/gpio/gpio460/value
    echo 0 > /sys/class/gpio/gpio461/value
    echo 0 > /sys/class/gpio/gpio462/value
    echo 0 > /sys/class/gpio/gpio463/value
    echo 0 > /sys/class/gpio/gpio511/value
    echo output-low
    sleep 1
    echo 1 > /sys/class/gpio/gpio460/value
    echo 1 > /sys/class/gpio/gpio461/value
    echo 1 > /sys/class/gpio/gpio462/value
    echo 1 > /sys/class/gpio/gpio463/value
    echo 1 > /sys/class/gpio/gpio511/value
    echo output-high
    sleep 1
done





zhichao 发表于 2020-4-7 09:37:22

您看一下原理图,这两个引脚被硬件拉高了

Junix 发表于 2020-4-7 10:41:25

zhichao 发表于 2020-4-7 09:37
您看一下原理图,这两个引脚被硬件拉高了

我的原理图版本是1.2,原理图上看不出有上拉。
话说回来,上拉会导致无法输出低电平吗?这样的话,要怎么用这俩IO呢?

zhichao 发表于 2020-4-7 11:08:52

看错了,没有上拉,您看一下GPIO3和GPIO7是否复用成gpio功能,是否还有其他复用

Junix 发表于 2020-4-7 11:17:50

zhichao 发表于 2020-4-7 11:08
看错了,没有上拉,您看一下GPIO3和GPIO7是否复用成gpio功能,是否还有其他复用

用的是ubuntu的原始镜像测试的。没有做任何改动。GPIO7就是一个GPIO,没有复用功能。GPIO3是和qspi的B复用的,这个也没有开启复用。而且我测过这两个IO的驱动能力还很强,不是弱上拉。所以能否检查一下核心板的电路图,看是怎么接出来的,感谢!

majestli 发表于 2020-4-7 11:30:05

Junix 发表于 2020-4-7 11:17
用的是ubuntu的原始镜像测试的。没有做任何改动。GPIO7就是一个GPIO,没有复用功能。GPIO3是和qspi的B复 ...

我也遇到到同样的问题,我用的1012核心板,按照技术支持说的修改了RCW,写入无效,默认值是啥就是啥,改不了:(

Junix 发表于 2020-4-7 11:46:54

majestli 发表于 2020-4-7 11:30
我也遇到到同样的问题,我用的1012核心板,按照技术支持说的修改了RCW,写入无效,默认值是啥就是啥,改 ...

改RCW是要把IO配置成GPIO模式吧,而不是配置成输出某种电平状态。

majestli 发表于 2020-4-7 11:52:43

Junix 发表于 2020-4-7 11:46
改RCW是要把IO配置成GPIO模式吧,而不是配置成输出某种电平状态。

嗯,是的,改成GPIO模式了,但是后面在系统里面写入没有效果。

zhichao 发表于 2020-4-7 14:03:29

GPIO3和GPIO7应该默认是没有设置成gpio的,您再看一下

Junix 发表于 2020-4-7 14:04:18

本帖最后由 Junix 于 2020-4-7 14:09 编辑

zhichao 发表于 2020-4-7 11:08
看错了,没有上拉,您看一下GPIO3和GPIO7是否复用成gpio功能,是否还有其他复用
嗯,我看了下手册,是需要设定一下。

Junix 发表于 2020-4-9 17:10:24

majestli 发表于 2020-4-7 11:52
嗯,是的,改成GPIO模式了,但是后面在系统里面写入没有效果。

我测试是成功的。可以用heartbeat trigger触发高低电平变化。

min 发表于 2020-8-18 16:24:48

Junix 发表于 2020-4-9 17:10
我测试是成功的。可以用heartbeat trigger触发高低电平变化。

我也遇到了同样的问题,请问怎样把GPIO3设置为GPIO模式呢?

Junix 发表于 2020-8-25 11:10:33

min 发表于 2020-8-18 16:24
我也遇到了同样的问题,请问怎样把GPIO3设置为GPIO模式呢?



GPIO2_12 IFC_CS_B
需要在rcw中修改下面两行。
IFC_GRP_E1_BASE=1
IFC_GRP_E1_EXT=0
页: [1]
查看完整版本: LS1043a/LS1046a的GPIO3和GPIO7无法控制,一直是高电平。(已修复)