GPIO

来源:互联网 发布:交通流量预测软件 编辑:程序博客网 时间:2024/05/17 08:35

1 amlogic平台

1.1 uboot

1.1.1 串口

1.1.1.1 读
gpio status [-a] [<bank> | <pin>]  - show [all/claimed] GPIOs

如,读取GPIOX_6的状态

# gpio status -a GPIOX_6

这里写图片描述

1.1.1.2 写
gpio <input|set|clear|toggle> <pin>    - input/set/clear/toggle the specified pin

如,设置GPIOX_6输出高电平

# gpio set GPIOX_6

这里写图片描述

1.1.2 代码

    //oen_reg,            oen_bit, out_reg,          out_bit,in_reg,           in_bit    {AO_GPIO_O_EN_N,      0,       AO_GPIO_O_EN_N,   16,      AO_GPIO_I,        0, }, //GPIOAO    {PREG_PAD_GPIO2_EN_N, 0,       PREG_PAD_GPIO2_O, 0,       PREG_PAD_GPIO2_I, 0, }, //BOOT    {PREG_PAD_GPIO2_EN_N, 20,      PREG_PAD_GPIO2_O, 20,      PREG_PAD_GPIO2_I, 20,}, //CARD    {PREG_PAD_GPIO0_EN_N, 0,       PREG_PAD_GPIO0_O, 0,       PREG_PAD_GPIO0_I, 0, }, //GPIODV    {PREG_PAD_GPIO3_EN_N, 0,       PREG_PAD_GPIO3_O, 0,       PREG_PAD_GPIO3_I, 0, }, //GPIOZ    {PREG_PAD_GPIO1_EN_N, 20,      PREG_PAD_GPIO1_O, 20,      PREG_PAD_GPIO1_I, 20,}, //GPIOH    {PREG_PAD_GPIO4_EN_N, 0,       PREG_PAD_GPIO4_O, 0,       PREG_PAD_GPIO4_I, 0, }, //GPIOX    {PREG_PAD_GPIO3_EN_N, 24,      PREG_PAD_GPIO3_O, 24,      PREG_PAD_GPIO3_I, 24,}  //GPIOCLK
1.1.2.1 读
readl(addr)

如,读取GPIOX_6的状态

    if((readl(PREG_PAD_GPIO4_I) & (1<<6))) {        uart_puts("111111111111111111\n");    } else {        uart_puts("000000000000000000\n");    }

#include <asm/gpio.h>int gpio_direction_input(unsigned gpio)int gpio_get_value(unsigned gpio)

如,读取GPIOX_6的状态

gpio_direction_input(6);gpio_get_value(6);
1.1.2.2 写

如,设置GPIOX_6输出高电平

aml_update_bits(PREG_PAD_GPIO4_EN_N, 1<<6, 0); /* 设置GPIOX_6输出状态 */aml_update_bits(PREG_PAD_GPIO4_O, 1<<6, 1); /* 设置GPIOX_6输出高电平 */

int gpio_direction_output(unsigned gpio, int value)

如,设置GPIOX_6输出高电平

gpio_request(6, "wlan");gpio_direction_output(6, 1);

1.2 kernel

1.2.1 串口

# cat /sys/kernel/debug/gpio

1.2.2 代码

1.2.2.1 读
#include <asm/gpio.h>int gpio_direction_input(unsigned gpio)int gpio_get_value(unsigned gpio)

如,读取GPIOX_6的状态

gpio_direction_input(6);gpio_set_pullup(6 , 1); //上拉电阻gpio_get_value(6);
1.2.2.2 写
int gpio_direction_output(unsigned gpio, int value)

如,设置GPIOX_6输出高电平

gpio_request(6, "wlan");gpio_direction_output(6, 1);

2 GPIO表

amlogic Bank

2.1 GPIOX_

GPIOX_0     0   234GPIOX_1     1   235GPIOX_2     2   236GPIOX_3     3   237GPIOX_4     4   238GPIOX_5     5   239GPIOX_6     6   240GPIOX_7     7   241GPIOX_8     8   242GPIOX_9     9   243GPIOX_10    10  244GPIOX_11    11  245GPIOX_12    12  246GPIOX_13    13  247GPIOX_14    14  248GPIOX_15    15  249GPIOX_16    16  250GPIOX_17    17  251GPIOX_18    18  252

2.2 GPIODV_

GPIODV_0    19  204GPIODV_1    20  205GPIODV_2    21  206GPIODV_3    22  207GPIODV_4    23  208GPIODV_5    24  209GPIODV_6    25  210GPIODV_7    26  211GPIODV_8    27  212GPIODV_9    28  213GPIODV_10   29  214GPIODV_11   30  215GPIODV_12   31  216GPIODV_13   32  217GPIODV_14   33  218GPIODV_15   34  219GPIODV_16   35  220GPIODV_17   36  221GPIODV_18   37  222GPIODV_19   38  223GPIODV_20   39  224GPIODV_21   40  225GPIODV_22   41  226GPIODV_23   42  227GPIODV_24   43  228GPIODV_25   44  229GPIODV_26   45  230GPIODV_27   46  231GPIODV_28   47  232GPIODV_29   48  233

2.3 GPIOH_

GPIOH_0 49  171GPIOH_1 50  172GPIOH_2 51  173GPIOH_3 52  174GPIOH_4 53  175GPIOH_5 54  176GPIOH_6 55  177GPIOH_7 56  178GPIOH_8 57  179GPIOH_9 58  180

2.4 GPIOZ_

GPIOZ_0     59  155GPIOZ_1     60  156GPIOZ_2     61  157GPIOZ_3     62  158GPIOZ_4     63  159GPIOZ_5     64  160GPIOZ_6     65  161GPIOZ_7     66  162GPIOZ_8     67  163GPIOZ_9     68  164GPIOZ_10    69  165GPIOZ_11    70  166GPIOZ_12    71  167GPIOZ_13    72  168GPIOZ_14    73  169GPIOZ_15    74  170

2.5 CARD_

CARD_0  75  CARD_1  76  CARD_2  77  CARD_3  78  CARD_4  79  CARD_5  80  CARD_6  81

2.6 BOOT_

BOOT_0  82  BOOT_1  83  BOOT_2  84  BOOT_3  85  BOOT_4  86  BOOT_5  87  BOOT_6  88  BOOT_7  89  BOOT_8  90  BOOT_9  91  BOOT_10 92  BOOT_11 93  BOOT_12 94  BOOT_13 95  BOOT_14 96  BOOT_15 97      

2.7 GPIOCLK_

GPIOCLK_0   98GPIOCLK_1   99

2.8 GPIOAO_

GPIOAO_0    100 145GPIOAO_1    101 146GPIOAO_2    102 147GPIOAO_3    103 148GPIOAO_4    104 149GPIOAO_5    105 150GPIOAO_6    106 151GPIOAO_7    107 152GPIOAO_8    108 153GPIOAO_9    109 154

3 开机读取寄存器值

Base_adr:0xc8834400Final_adr = base_adr + num *4gpioDV_11~0 : GPIO_REG0[11:0]GPIO_REG0_EN_N0x0c            ------ 0xc8834430GPIO_REG 0_O0x0d                ------ 0xc8834434GPIO_REG 0_I0x0e                 ------ 0xc8834438PINMUX_REG2                        ------ 0xc88344b8

3.1 Pin Mux Registers

PERIPHS_PIN_MUX_0    0xc88344b0    (0xc8834400 + (0x2c << 2))PERIPHS_PIN_MUX_1    0xc88344b4    (0xc8834400 + (0x2d << 2))PERIPHS_PIN_MUX_2    0xc88344b8    (0xc8834400 + (0x2e << 2))PERIPHS_PIN_MUX_3    0xc88344bc    (0xc8834400 + (0x2f << 2))PERIPHS_PIN_MUX_4    0xc88344c0    (0xc8834400 + (0x30 << 2))PERIPHS_PIN_MUX_5    0xc88344c4    (0xc8834400 + (0x31 << 2))PERIPHS_PIN_MUX_6    0xc88344c8    (0xc8834400 + (0x32 << 2))PERIPHS_PIN_MUX_7    0xc88344cc    (0xc8834400 + (0x33 << 2))PERIPHS_PIN_MUX_8    0xc88344d0    (0xc8834400 + (0x34 << 2))PERIPHS_PIN_MUX_9    0xc88344d4    (0xc8834400 + (0x35 << 2))AO_RTI_PIN_MUX_REG   0xc8100014    (0xc8100000 + (0x05 << 2))AO_RTI_PIN_MUX_REG2  0xc8100018    (0xc8100000 + (0x06 << 2))

3.2 Gpio Registers

GPIOAO_9~0

OEN   0xc8834424    (0xc8834400 + (0x09 << 2))OUT   0xc8834424    (0xc8834400 + (0x09 << 2))IN    0xc8834428    (0xc8834400 + (0x0a << 2))

GPIODV_29~0

OEN   0xC8834430    (0xc8834400 + (0x0c << 2))OUT   0xC8834434    (0xc8834400 + (0x0d << 2))IN    0xC8834438    (0xc8834400 + (0x0e << 2))

GPIOH_9~0

OEN   0xC883443c    (0xc8834400 + (0x0f << 2))OUT   0xC8834440    (0xc8834400 + (0x10 << 2))IN    0xC8834444    (0xc8834400 + (0x11 << 2))

BOOT_15~0

OEN   0xC8834448    (0xc8834400 + (0x12 << 2))OUT   0xC883444c    (0xc8834400 + (0x13 << 2))IN    0xC8834450    (0xc8834400 + (0x14 << 2))

CARD_6~0

OEN   0xC8834448    (0xc8834400 + (0x12 << 2))OUT   0xC883444c    (0xc8834400 + (0x13 << 2))IN    0xC8834450    (0xc8834400 + (0x14 << 2))

GPIOZ_15~0

OEN   0xC8834454    (0xc8834400 + (0x15 << 2))OUT   0xC8834458    (0xc8834400 + (0x16 << 2))IN    0xC883445c    (0xc8834400 + (0x17 << 2))

GPIOCLK_1~0

OEN   0xC8834454    (0xc8834400 + (0x15 << 2))OUT   0xC8834458    (0xc8834400 + (0x16 << 2))IN    0xC883445c    (0xc8834400 + (0x17 << 2))

GPIOX_18~0

OEN   0xC8834460    (0xc8834400 + (0x18 << 2))OUT   0xC8834464    (0xc8834400 + (0x19 << 2))IN    0xC8834468    (0xc8834400 + (0x1a << 2))

3.3 查询

如,查询GPIOX_6、GPIOX_7输出状态

$ echo 0xC8834460 > /sys/kernel/debug/aml_reg/paddr$ cat /sys/kernel/debug/aml_reg/paddr[0xc8834460] = 0xFFFFFFBF
$ echo 0xC8834464 > /sys/kernel/debug/aml_reg/paddr$ cat /sys/kernel/debug/aml_reg/paddr[0xc8834464] = 0xFFFFFFBF
$ echo 0xC8834468 > /sys/kernel/debug/aml_reg/paddr$ cat /sys/kernel/debug/aml_reg/paddr[0xc8834468] = 0x472BF

GPIOX_6:输出状态,输出为0,低电平
GPIOX_7:输入状态,输入为1,高电平
,如下图示
这里写图片描述
这里写图片描述
这里写图片描述