MTK6577+Android GPIO

1.     GPIO简介

 

MT6577提供232个通用输入/输出引脚(GPIO,GPIO0~GPIO231),通过设置它们的控制寄存器,MCU软件可以控制它们的方向(输入/输出)、输出值(低/高)和读取这些引脚的值(输入)。为了减少GPIO引脚的数量,MT6577的GPIO采用多路复用的设计机制,这点和freescale的IMX系列类似。

 

2.     GPIO特性(features)


图1

常用的寄存器如下:

(1)  GPIO_MODE寄存器组

包括有GPIO_MODE0~46、GPIO_MODE_SET0~46和GPIO_MODE_RESET0~46这些寄存器,最常用的是GPIO_MODE0~46,每个GPIO通过编程GPIO_MODE_SELx(x=0~46)命令寄存器来控制辅助模式(auxiliary mode),其实此寄存器就是用于配置GPIO模式的,比如下面我们以PWM1引脚来说明此寄存器的意义:


图2

就是说PWM1引脚(232个GPIO引脚之一),在内部可以通过软件编程来选择接通GPIO67、PWM1、EINT9、IRDA_PDN、MD_TXD2、USB_DRVVBUS、DBG_OUT1[16]之一,比如如果要让PWM1引脚作为GPIO67功能,我们来看GPIO_MODE_SEL13的设置:


图3

结合图2和图3,只需要设置GPIO_MODE_SEL13[8:6]=0就选通了GPIO67。

 

(2)  GPIODIR寄存器组

包括有GPIODIR0~14、GPIODIR_SET0~14和GPIODIR_RESET0~14这些寄存器,最常用的是GPIODIR0~14,每个寄存器配置一个GPIO为输入(0)/输出(1),如下图:


图4

 

(3)  PULLEN寄存器组

包括有PULLEN0~14、PULLEN_SET0~14、PULLEN_RESET0~14和PULLSEL0~14,最常用的是PULLEN0~14和PULLSEL0~14,分别用于disable(0)/enable(1)引脚上拉下拉功能,选择上拉还是下拉功能


图5

 

(4)  GPIO_INV寄存器组

包括有GPI_INV0~14、GPI_INV_SET0~14和GPI_INV_RESET0~14,最常用的是GPI_INV0~14,用于控制是否反转(invert)GPIO的值,如下图:


图6

 

(5)  GPO寄存器组

包括有GPO0~14、GPO_SET0~14和GPO_RESET0~14,最常用的是GPO0~14,用于控制GPIO引脚的输出电平,如下图:


图7

 

(6)  GPI寄存器组

GPI0~14,通过此寄存器可以获取到连接到此IO口的输入状态,如下图:


图8

 

3.     GPIO寄存器对应的一些枚举类型定义

[cpp]  view plain copy
  1. /*----------------------------------------------------------------------------*/  
  2. #defineMAX_GPIO_PIN    232  
  3. /****************************************************************************** 
  4. * Enumeration forGPIO pin 
  5. ******************************************************************************/  
  6. typedef enumGPIO_PIN  
  7. {     
  8.     GPIO_UNSUPPORTED = -1,     
  9.          
  10.     GPIO0 , GPIO1  , GPIO2  , GPIO3 , GPIO4  , GPIO5  , GPIO6 , GPIO7  ,  
  11.     GPIO8 , GPIO9  , GPIO10 , GPIO11 ,GPIO12 , GPIO13 , GPIO14 , GPIO15 ,  
  12.     GPIO16 , GPIO17 , GPIO18 , GPIO19 , GPIO20, GPIO21 , GPIO22 , GPIO23 ,  
  13.     GPIO24 , GPIO25 , GPIO26 , GPIO27 , GPIO28, GPIO29 , GPIO30 , GPIO31 ,  
  14.     GPIO32 , GPIO33 , GPIO34 , GPIO35 , GPIO36, GPIO37 , GPIO38 , GPIO39 ,  
  15.     GPIO40 , GPIO41 , GPIO42 , GPIO43 , GPIO44, GPIO45 , GPIO46 , GPIO47 ,  
  16.     GPIO48 , GPIO49 , GPIO50 , GPIO51 , GPIO52, GPIO53 , GPIO54 , GPIO55 ,  
  17.     GPIO56 , GPIO57 , GPIO58 , GPIO59 , GPIO60, GPIO61 , GPIO62 , GPIO63 ,  
  18.     GPIO64 , GPIO65 , GPIO66 , GPIO67 , GPIO68, GPIO69 , GPIO70 , GPIO71 ,  
  19.     GPIO72 , GPIO73 , GPIO74 , GPIO75 , GPIO76, GPIO77 , GPIO78 , GPIO79 ,  
  20.     GPIO80 , GPIO81 , GPIO82 , GPIO83 , GPIO84, GPIO85 , GPIO86 , GPIO87 ,  
  21.     GPIO88 , GPIO89 , GPIO90 , GPIO91 , GPIO92, GPIO93 , GPIO94 , GPIO95 ,  
  22.     GPIO96 , GPIO97 , GPIO98 , GPIO99 ,GPIO100, GPIO101, GPIO102, GPIO103,  
  23.     GPIO104, GPIO105, GPIO106, GPIO107,GPIO108, GPIO109, GPIO110, GPIO111,  
  24.     GPIO112, GPIO113, GPIO114, GPIO115,GPIO116, GPIO117, GPIO118, GPIO119,  
  25.     GPIO120, GPIO121, GPIO122, GPIO123,GPIO124, GPIO125, GPIO126, GPIO127,  
  26.     GPIO128, GPIO129, GPIO130, GPIO131,GPIO132, GPIO133, GPIO134, GPIO135,  
  27.     GPIO136, GPIO137, GPIO138, GPIO139,GPIO140, GPIO141, GPIO142, GPIO143,  
  28.     GPIO144, GPIO145, GPIO146, GPIO147,GPIO148, GPIO149, GPIO150, GPIO151,  
  29.     GPIO152, GPIO153, GPIO154, GPIO155,GPIO156, GPIO157, GPIO158, GPIO159,  
  30.     GPIO160, GPIO161, GPIO162, GPIO163,GPIO164, GPIO165, GPIO166, GPIO167,  
  31.     GPIO168, GPIO169, GPIO170, GPIO171,GPIO172, GPIO173, GPIO174, GPIO175,  
  32.     GPIO176, GPIO177, GPIO178, GPIO179,GPIO180, GPIO181, GPIO182, GPIO183,  
  33.     GPIO184, GPIO185, GPIO186, GPIO187,GPIO188, GPIO189, GPIO190, GPIO191,  
  34.     GPIO192, GPIO193, GPIO194, GPIO195, GPIO196,GPIO197, GPIO198, GPIO199,  
  35.     GPIO200, GPIO201, GPIO202, GPIO203,GPIO204, GPIO205, GPIO206, GPIO207,  
  36.     GPIO208, GPIO209, GPIO210, GPIO211,GPIO212, GPIO213, GPIO214, GPIO215,  
  37.     GPIO216, GPIO217, GPIO218, GPIO219,GPIO220, GPIO221, GPIO222, GPIO223,  
  38.     GPIO224, GPIO225, GPIO226, GPIO227,GPIO228, GPIO229, GPIO230, GPIO231,  
  39.      
  40.     GPIO_MAX  
  41. }GPIO_PIN;          
  42.    
  43. /****************************************************************************** 
  44. * Enumeration forClock output 
  45. ******************************************************************************/  
  46. /* GPIO MODECONTROL VALUE*/  
  47. typedef enum {  
  48.     GPIO_MODE_GPIO  = 0,  
  49.     GPIO_MODE_00    = 0,  
  50.     GPIO_MODE_01    = 1,  
  51.     GPIO_MODE_02    = 2,  
  52.     GPIO_MODE_03    = 3,  
  53.     GPIO_MODE_04    = 4,  
  54.     GPIO_MODE_05    = 5,  
  55.     GPIO_MODE_06    = 6,  
  56.     GPIO_MODE_07    = 7,  
  57.    
  58.     GPIO_MODE_MAX,  
  59.     GPIO_MODE_DEFAULT = GPIO_MODE_01,  
  60. } GPIO_MODE;  
  61. /*----------------------------------------------------------------------------*/  
  62. /* GPIO DIRECTION*/  
  63. typedef enum {  
  64.     GPIO_DIR_IN     = 0,  
  65.     GPIO_DIR_OUT    = 1,  
  66.    
  67.     GPIO_DIR_MAX,  
  68.     GPIO_DIR_DEFAULT = GPIO_DIR_IN,  
  69. } GPIO_DIR;  
  70. /*----------------------------------------------------------------------------*/  
  71. /* GPIO PULLENABLE*/  
  72. typedef enum {  
  73.     GPIO_PULL_DISABLE = 0,  
  74.     GPIO_PULL_ENABLE  = 1,  
  75.    
  76.     GPIO_PULL_EN_MAX,  
  77.     GPIO_PULL_EN_DEFAULT = GPIO_PULL_ENABLE,  
  78. } GPIO_PULL_EN;  
  79. /*----------------------------------------------------------------------------*/  
  80. /* GPIOPULL-UP/PULL-DOWN*/  
  81. typedef enum {  
  82.     GPIO_PULL_DOWN  = 0,  
  83.     GPIO_PULL_UP    = 1,  
  84.    
  85.     GPIO_PULL_MAX,  
  86.     GPIO_PULL_DEFAULT = GPIO_PULL_DOWN  
  87. } GPIO_PULL;  
  88. /*----------------------------------------------------------------------------*/  
  89. /* GPIO INVERSION*/  
  90. typedef enum {  
  91.     GPIO_DATA_UNINV = 0,  
  92.     GPIO_DATA_INV   = 1,  
  93.    
  94.     GPIO_DATA_INV_MAX,  
  95.     GPIO_DATA_INV_DEFAULT = GPIO_DATA_UNINV  
  96. } GPIO_INVERSION;  
  97. /*----------------------------------------------------------------------------*/  
  98. /* GPIO OUTPUT */  
  99. typedef enum {  
  100.     GPIO_OUT_ZERO = 0,  
  101.     GPIO_OUT_ONE  = 1,  
  102.    
  103.     GPIO_OUT_MAX,  
  104.     GPIO_OUT_DEFAULT = GPIO_OUT_ZERO,  
  105.     GPIO_DATA_OUT_DEFAULT = GPIO_OUT_ZERO,  /*compatible with DCT*/  
  106. } GPIO_OUT;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值