日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

MTK6577+Android GPIO

發布時間:2023/12/16 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 plaincopy
  • /*----------------------------------------------------------------------------*/??
  • #defineMAX_GPIO_PIN????232??
  • /******************************************************************************?
  • *?Enumeration?forGPIO?pin?
  • ******************************************************************************/??
  • typedef?enumGPIO_PIN??
  • {?????
  • ????GPIO_UNSUPPORTED?=?-1,?????
  • ?????????
  • ????GPIO0?,?GPIO1??,?GPIO2??,?GPIO3?,?GPIO4??,?GPIO5??,?GPIO6?,?GPIO7??,??
  • ????GPIO8?,?GPIO9??,?GPIO10?,?GPIO11?,GPIO12?,?GPIO13?,?GPIO14?,?GPIO15?,??
  • ????GPIO16?,?GPIO17?,?GPIO18?,?GPIO19?,?GPIO20,?GPIO21?,?GPIO22?,?GPIO23?,??
  • ????GPIO24?,?GPIO25?,?GPIO26?,?GPIO27?,?GPIO28,?GPIO29?,?GPIO30?,?GPIO31?,??
  • ????GPIO32?,?GPIO33?,?GPIO34?,?GPIO35?,?GPIO36,?GPIO37?,?GPIO38?,?GPIO39?,??
  • ????GPIO40?,?GPIO41?,?GPIO42?,?GPIO43?,?GPIO44,?GPIO45?,?GPIO46?,?GPIO47?,??
  • ????GPIO48?,?GPIO49?,?GPIO50?,?GPIO51?,?GPIO52,?GPIO53?,?GPIO54?,?GPIO55?,??
  • ????GPIO56?,?GPIO57?,?GPIO58?,?GPIO59?,?GPIO60,?GPIO61?,?GPIO62?,?GPIO63?,??
  • ????GPIO64?,?GPIO65?,?GPIO66?,?GPIO67?,?GPIO68,?GPIO69?,?GPIO70?,?GPIO71?,??
  • ????GPIO72?,?GPIO73?,?GPIO74?,?GPIO75?,?GPIO76,?GPIO77?,?GPIO78?,?GPIO79?,??
  • ????GPIO80?,?GPIO81?,?GPIO82?,?GPIO83?,?GPIO84,?GPIO85?,?GPIO86?,?GPIO87?,??
  • ????GPIO88?,?GPIO89?,?GPIO90?,?GPIO91?,?GPIO92,?GPIO93?,?GPIO94?,?GPIO95?,??
  • ????GPIO96?,?GPIO97?,?GPIO98?,?GPIO99?,GPIO100,?GPIO101,?GPIO102,?GPIO103,??
  • ????GPIO104,?GPIO105,?GPIO106,?GPIO107,GPIO108,?GPIO109,?GPIO110,?GPIO111,??
  • ????GPIO112,?GPIO113,?GPIO114,?GPIO115,GPIO116,?GPIO117,?GPIO118,?GPIO119,??
  • ????GPIO120,?GPIO121,?GPIO122,?GPIO123,GPIO124,?GPIO125,?GPIO126,?GPIO127,??
  • ????GPIO128,?GPIO129,?GPIO130,?GPIO131,GPIO132,?GPIO133,?GPIO134,?GPIO135,??
  • ????GPIO136,?GPIO137,?GPIO138,?GPIO139,GPIO140,?GPIO141,?GPIO142,?GPIO143,??
  • ????GPIO144,?GPIO145,?GPIO146,?GPIO147,GPIO148,?GPIO149,?GPIO150,?GPIO151,??
  • ????GPIO152,?GPIO153,?GPIO154,?GPIO155,GPIO156,?GPIO157,?GPIO158,?GPIO159,??
  • ????GPIO160,?GPIO161,?GPIO162,?GPIO163,GPIO164,?GPIO165,?GPIO166,?GPIO167,??
  • ????GPIO168,?GPIO169,?GPIO170,?GPIO171,GPIO172,?GPIO173,?GPIO174,?GPIO175,??
  • ????GPIO176,?GPIO177,?GPIO178,?GPIO179,GPIO180,?GPIO181,?GPIO182,?GPIO183,??
  • ????GPIO184,?GPIO185,?GPIO186,?GPIO187,GPIO188,?GPIO189,?GPIO190,?GPIO191,??
  • ????GPIO192,?GPIO193,?GPIO194,?GPIO195,?GPIO196,GPIO197,?GPIO198,?GPIO199,??
  • ????GPIO200,?GPIO201,?GPIO202,?GPIO203,GPIO204,?GPIO205,?GPIO206,?GPIO207,??
  • ????GPIO208,?GPIO209,?GPIO210,?GPIO211,GPIO212,?GPIO213,?GPIO214,?GPIO215,??
  • ????GPIO216,?GPIO217,?GPIO218,?GPIO219,GPIO220,?GPIO221,?GPIO222,?GPIO223,??
  • ????GPIO224,?GPIO225,?GPIO226,?GPIO227,GPIO228,?GPIO229,?GPIO230,?GPIO231,??
  • ?????
  • ????GPIO_MAX??
  • }GPIO_PIN;??????????
  • ???
  • /******************************************************************************?
  • *?Enumeration?forClock?output?
  • ******************************************************************************/??
  • /*?GPIO?MODECONTROL?VALUE*/??
  • typedef?enum?{??
  • ????GPIO_MODE_GPIO??=?0,??
  • ????GPIO_MODE_00????=?0,??
  • ????GPIO_MODE_01????=?1,??
  • ????GPIO_MODE_02????=?2,??
  • ????GPIO_MODE_03????=?3,??
  • ????GPIO_MODE_04????=?4,??
  • ????GPIO_MODE_05????=?5,??
  • ????GPIO_MODE_06????=?6,??
  • ????GPIO_MODE_07????=?7,??
  • ???
  • ????GPIO_MODE_MAX,??
  • ????GPIO_MODE_DEFAULT?=?GPIO_MODE_01,??
  • }?GPIO_MODE;??
  • /*----------------------------------------------------------------------------*/??
  • /*?GPIO?DIRECTION*/??
  • typedef?enum?{??
  • ????GPIO_DIR_IN?????=?0,??
  • ????GPIO_DIR_OUT????=?1,??
  • ???
  • ????GPIO_DIR_MAX,??
  • ????GPIO_DIR_DEFAULT?=?GPIO_DIR_IN,??
  • }?GPIO_DIR;??
  • /*----------------------------------------------------------------------------*/??
  • /*?GPIO?PULLENABLE*/??
  • typedef?enum?{??
  • ????GPIO_PULL_DISABLE?=?0,??
  • ????GPIO_PULL_ENABLE??=?1,??
  • ???
  • ????GPIO_PULL_EN_MAX,??
  • ????GPIO_PULL_EN_DEFAULT?=?GPIO_PULL_ENABLE,??
  • }?GPIO_PULL_EN;??
  • /*----------------------------------------------------------------------------*/??
  • /*?GPIOPULL-UP/PULL-DOWN*/??
  • typedef?enum?{??
  • ????GPIO_PULL_DOWN??=?0,??
  • ????GPIO_PULL_UP????=?1,??
  • ???
  • ????GPIO_PULL_MAX,??
  • ????GPIO_PULL_DEFAULT?=?GPIO_PULL_DOWN??
  • }?GPIO_PULL;??
  • /*----------------------------------------------------------------------------*/??
  • /*?GPIO?INVERSION*/??
  • typedef?enum?{??
  • ????GPIO_DATA_UNINV?=?0,??
  • ????GPIO_DATA_INV???=?1,??
  • ???
  • ????GPIO_DATA_INV_MAX,??
  • ????GPIO_DATA_INV_DEFAULT?=?GPIO_DATA_UNINV??
  • }?GPIO_INVERSION;??
  • /*----------------------------------------------------------------------------*/??
  • /*?GPIO?OUTPUT?*/??
  • typedef?enum?{??
  • ????GPIO_OUT_ZERO?=?0,??
  • ????GPIO_OUT_ONE??=?1,??
  • ???
  • ????GPIO_OUT_MAX,??
  • ????GPIO_OUT_DEFAULT?=?GPIO_OUT_ZERO,??
  • ????GPIO_DATA_OUT_DEFAULT?=?GPIO_OUT_ZERO,??/*compatible?with?DCT*/??
  • }?GPIO_OUT; ?
  • 總結

    以上是生活随笔為你收集整理的MTK6577+Android GPIO的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。