MT7688 硬件寄存器 GPIO41 作为输入

1.相关文件:

\u-boot-mt7688\include\configs\rt2880.h
\u-boot-mt7688\include\rt_mmap.h
\u-boot-mt7688\lib_mips\board.c

2. 相关寄存器映射

#define RALINK_SYSCTL_BASE        0xB0000000
#define RALINK_TIMER_BASE        0xB0000100
#define RALINK_INTCL_BASE               0xB0000200
#define RALINK_MEMCTRL_BASE        0xB0000300
#define RALINK_PCM_BASE                 0xB0000400
#define RALINK_UART_BASE               0xB0000500
#define RALINK_PIO_BASE                  0xB0000600
#define RALINK_GDMA_BASE                  0xB0000700
#define RALINK_NAND_CTRL_BASE        0xB0000800
#define RALINK_I2C_BASE                       0xB0000900
#define RALINK_I2S_BASE                       0xB0000A00
#define RALINK_SPI_BASE                      0xB0000B00
#define RALINK_UART_LITE_BASE        0xB0000C00
#define RALINK_FRAME_ENGINE_BASE    0xB0100000
#define RALINK_ETH_SW_BASE            0xB0110000
#define RALINK_11N_MAC_BASE            0xB0180000
#define RALINK_USB_OTG_BASE            0xB01C0000

#define RT2880_SYS_CNTL_BASE            (RALINK_SYSCTL_BASE)

#define RT2880_PRGIO_ADDR       (RALINK_SYSCTL_BASE + 0x600) // Programmable I/O

#define RT2880_REG_PIODIR       (RT2880_PRGIO_ADDR + 0x00)

0xb0000600 == RT2880_REG_PIODIR       GPIO0--GPIO31 direction control  register
0xb0000604 == RT2880_REG_PIODIR+0x04  GPIO32--GPIO63 direction control  register

0 : GPIO input mode
1 : GPIO output mode

0xb0000620 == GPIO0--GPIO31 data register
0xb0000624 == GPIO32--GPIO63 data register

0xb0000644 == GPIO_DCLR GPIO32-GPIO63 data clear register
1: set the GPIO DATA register
0: no effect

3. 举例

    //gpio41 input gpio_ctrl_1 bit9=0
    val=RALINK_REG(RT2880_REG_PIODIR+0x04);    
    val&=~1<<10;
    RALINK_REG(RT2880_REG_PIODIR+0x04)=val;    

    //gpio42 output gpio_ctrl_1 bit10=0
    val=RALINK_REG(RT2880_REG_PIODIR+0x04);    
    val|= 1<<11;
    RALINK_REG(RT2880_REG_PIODIR+0x04)=val;    

 

/*=======================================================
   gpio41 input gpio_ctrl_1 bit9=0 ;Key_on
   if key_on Key pressed,then gpio42=pwr_hold output 1
   gpio42 output
=======================================================*/
int  detect_powerkey(void)
{
	u32 val;
	val=RALINK_REG(0xb0000624);//624
	if(val&1<<10){
		return 0;
	}
	else{
		printf("PowerKey button pressed!\n");
		return 1;
	}
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值