1. 程式人生 > >MTK 功能機GPIO配置

MTK 功能機GPIO配置

Ø       GPIO設定篇

一、GPIO有關的函式

1.GPIO_ModeSetup:

函式原型:void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)

功能:設定GPIO的工作模式是作為GPIO,還是作為專有功能介面。

引數:

pin:GPIO 的pin腳號,對應於原理圖上MTK62XX 主CPU晶片的上的GPIO標號

conf_dada:值有0~3。其中0是表示作為GPIO模式,其他根據專有功能的不同進行設定。

2.GPO_InitIO

函式原型:void GPIO_InitIO(char direction, char port)

功能:初始化GPIO的工作方向是作為輸入,還是作為輸出

引數:

direction:工作方向,0表示輸入,1表示輸出

port:GPIO的pin腳

3.GPIO_ReadIO

函式原型:char GPIO_ReadIO(char port)

功能:從GPIO讀取資料

引數:

port:GPIO的pin腳

4.GPIO_WriteIO

函式原型:void GPIO_WriteIO(kal_char data, kal_char port)

功能:往GPIO寫資料

引數:

data 1表示給高電平,0表示給低電平

port:GPIO的pin腳

備註:這些函式在Gpio.C中可以找到。

二、GPIO模式設定

GPIO口在系統上電的時候,有的是預設高電平,有的是預設低電平,這是MCU內部決定的,軟體無法更改,但是在系統開機過程中,會對GPIO進行初始化,MCU中有幾個GPIO模式初始化暫存器,通過這個暫存器給GPIO設定初始模式。

例如:以下這個暫存器就是用來設定0-7號GPIO的模工作模式的。

這個初始化過程在Gpio_Drv.C中的函式GPIO_init()中,專案開始的時候,先要檢查這個部分的模式設定是否正確。

三、各個功能模組的GPIO設定

1.     LCD背光,馬達

有的LCD背光是靠GPIO進行控制的,有的則靠PMIC進行控制。但不管那個方式進行控制,都只需修改Custom_equipment.c中的相關部分就可以了,具體如下:

首先,檢查陣列

GPIO_MAP_ENTRY gpio_map_tbl[] = {

/*GPIO_LABEL_LCD_BACKLIGHT */ {GPIO_VAILD, GPIO_PORT_24, netname[GPIO_LABEL_LCD_BACKLIGHT], NULL },

};

將沒有使用的GPIO,用GPIO_INVALID給遮蔽掉。

然後,修改函式custom_cfg_gpio_set_level,在對應的GPIO型別上將控制函式新增進去即可。比如:

   switch(gpio_dev_type)    

   {

   case GPIO_DEV_LED_MAINLCD:

if( gpio_dev_level == LED_LIGHT_LEVEL0)// LEVEL0- LEVEL5是背光由若到強的控制,LEVEL0表示關閉背光

GPIO_WriteIO(GPIO_OFF, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );

        else

           GPIO_WriteIO(GPIO_ON, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );

        PWM2_level(gpio_dev_level);

        break;

2.     藍芽

在檔案bt_hw_define.h中參照原理圖進行對應GPIO的修改。

   #define BT_GPIO_RESET 52//39 //GPIO_39 : PMIC reset

   #define BT_GPIO_DSC 36//;4 //GPIO_4 : to disconnect RFComm link

   #define BT_GPIO_POWER 4//12 //GPIO_12: Power

   #define BT_GPIO_DATASELECT 0//;3 //GPIO_3: DataSelect

3.     Camera

在檔案Camera_hw.c和sccb.h中參照原理圖進行對應GPIO的修改。

【Camera_hw.c】

#define MODULE_POWER_PIN 6  // GPIO NO.

#define MODULE_RESET_PIN 12  // GPIO NO.

#define MODULE_CMPDN_PIN 13  // GPIO NO.

【sccb.h】

#define SCCB_SERIAL_CLK_PIN 8

#define SCCB_SERIAL_DATA_PIN 9

4.     TouchPanel

在檔案Touch_panel_spi.h中參照原理圖進行對應GPIO的修改

   #define SPI_DIN_PIN     1 //17  /*1GPO*/

   #define SPI_CLK_PIN     8 //20   /*8GPO*/

   #define SPI_DOUT_PIN    38 //22  /*18GPI*/

   #define SPI_CS_PIN      9 //23  /*9GPO*/

   #define SPI_BUSY_PIN    5 //21  /*5GPI*/

四、總結

GPIO的設定相對來講比較簡單,只要仔細參對原理圖,基本上就可以將GPIO配置好。當然有些時候GPIO配置好了也達不到效果,就需要和硬體工程師一起來進行檢測分析,測量對應電路的工作電壓或電流,來判斷工作是否正常。總之在前期的除錯方面,多跟硬體工程師溝通、討論、分析,會很快解決問題。

Ø中斷除錯

中斷除錯一般來說包括以下幾個方面,一一做簡單介紹:

1.       中斷號匹配

這個部分在檔案eint_def.c中進行設定,參照原理圖設定即可。

2.       中斷觸發方式的設定

在檔案eint_def.c中,首先要對中斷的觸發響應時間進行設定,是在陣列變數custom_eint_sw_debounce_time_delay中。一般情況下這個部分是不用動的,但有時候中斷觸發有問題的時候,這就是一個除錯點。比如對於Touchpanel的中斷,對應的響應時間一般是0,如果不是0,就需要修改。

另外,因為中斷觸發分電平觸發和邊沿觸發,電平觸發又分高電平觸發和低電平觸發,邊沿觸發又分為上升沿觸發和下降沿觸發,因此先需要跟硬體工程師瞭解對應的中斷觸發方式,然後在對應的中斷初始化的地方修改觸發方式。

3.       中斷處理流程除錯

有時候中斷設定好了,對應功能也不能正常使用,那麼就需要除錯中斷處理流程了,需要增加trace,一般我們會用系統帶的trace函式kal_prompt_trace,有時候除錯這個函式不能正常工作,那麼我們就用這個檔案中的函式sys_print列印trace資訊,要使用這個函式,需要在系統最開始啟動的時候,呼叫sys_uart_init進行初始化。這個函式庫是在6228平臺上做的,可能在其他平臺上暫存器因為不同,需要進行修改。

往往在除錯的過程中,經常發現是給晶片供電方面出了問題。因為有時候MTK給過來的程式碼,在他們的參考設計上是一種供電方式,但是在我們的設計上可能就是不一樣了。所以在找到晶片供電部分程式碼的時候,查詢對應資料,看是否呼叫正常。

4.       

相關推薦

MTK 功能GPIO配置

Ø       GPIO設定篇 一、GPIO有關的函式 1.GPIO_ModeSetup: 函式原型:void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada) 功能:設定GPIO的工作模式是作為GPIO,還

MTK功能禁止第一次開機屏幕校準和啟動藍牙

esc light efault defined data script 方便 class ram 參考文件: Bluetooth.res <CACHEDATA type="byte" id="NVRAM_BT_POWER_STATUS" restore_flag=

MTK功能編譯錯誤ToolsMSYSinmake.exe: *** Couldn’t reserve spac e for cygwin’s heap, Win32 error

批處理文件 方法 ould please parser build 功能機 mtk bin MTK功能機編譯錯誤 E:\workspace\project\XIN03D_11C\Tools\MSYS\bin\make.exe: *** Couldn‘t reserve s

MTK 功能6261a下除錯震動開關的LED跑馬燈驅動

一直做上層, 沒弄過驅動, 最近其他人有點忙, 沒空弄, 這個東西又比較簡單, 所以就交給我了.作為新手, 還是記錄一下. 1., 根據硬體同事提供的原理圖: 確定了LED使用的gpio是GPIO1,GPIO2,GPIO3, 對應led的rgb三個顏色. 2.開

mtk 功能驅動除錯

驅動程式主要分散於兩個目錄 $PROJECT\custom\drv $PROJECT\drv 很明顯,第一個目錄是客戶化專案的驅動程式,第二目錄就是主要的驅動,是比較相對獨立的模組。編譯時,custom 是個作為一個獨立的模組。 當然,還有一些介面定義的目錄,它們在 $PROJECT\interface\hw

STM32 (3) GPIO功能講解 GPIO 口輸入輸出 暫存器配置 群號860099671

講解GPIO操作原理,使用各種型號的STM32  開啟官方的《STM32中文參考手冊》8.1  8.2小節  GPIO功能描述  我們今天重點要分析的是下圖 上圖是100腳的STM32微控制器  1.  GPIO是包含引腳的 2. 如何找GPIO功能:

mtk硬體啟動關閉藍芽功能的專案:mtk 上層操作GPIO應用示例

mtk硬體啟動關閉藍芽功能的專案:mtk上層操作GPIO應用示例 專案要求: 接上篇: 1:藍芽按鍵(KCOL2+KROW1)長按3秒,軟體上控制GPIO144拉高2秒後關閉,藍芽就開啟並搜尋配對。同時拉高GPIO98,控制音訊的模擬開關切換藍芽音源。 2:藍芽在工作狀

MTK GPIO配置

轉載:http://blog.csdn.net/mcgrady_tracy/article/details/40788873如果需要定製GPIO口呢,需要使用mediatek/dct/DrvGen.exe工具,點選Open,選擇mediatek/custom/project_

臺式vim配置

line 顯示 mpi php ogg abs ins ati xpl set autoread syntax on "set number " filetype ident on "set autoindent "set expandtab set cin

如何在Linux虛擬配置rabbitMQ

width wid blog 修改 開啟 ges bsp eight 端口 1.配置Erlang環境的linux虛擬機 配置的步驟直接上圖: 2.rabiitMQ安裝到linux 直接上圖: 2.1安裝MQ 2.2修改rabb

剛剛安裝好的Centos7虛擬無法配置網卡eth0的配置文件

eth0 centos 昨天一個朋友問我,安裝了一臺Centos7的虛擬機,網卡配置文件中找不到eth0,如圖所示即使改了ifcfg-eno16777736為ifcfg-eth0,重啟網卡提示錯誤,並且恢復到修改之前於是到網上看了下,還真是不少出現這個問題的,也找到了解決之法,修改兩個配置文件1.編輯

MTK工具Flash_Tool部分4032錯誤解決辦法

cache enter 錯誤 解決 兩種 bin medium 方法 文件 MTK刷機工具Flash_Tool部分4032錯誤解決辦法 先說明一點,這個辦法不是萬能的,我測試解決了以下兩種情況下的4032: 1、本來正常的

linux 虛擬模擬配置網絡路由環境-簡版

邊界 標準 face war 網絡路由 add gateway 網卡配置 table 前言:網絡路由不管是平常在家裏,還是在公司中,都是必需配置的,所以還是非常重要的,今天小編就給大家做個配置網絡路由配置的小實驗,僅供大家參考。 一、首先,來簡單介紹一下網絡路由。 1.

關於如何在windows7安裝mtk驅動程序

MTK WEP加密時,輸入密碼過程Wi-Fi連接 按鈕變灰 1.當采用WEP加密的情況下,key的長度有相應的限制。 目前MT6573支持WEP 40、WEP 104和WEP 128三種密鑰長度。 當密鑰類型選擇WEP40時,可選的密鑰長度5個字符(5 Alphanumeric Chars

新建/克隆虛擬配置

src 網關 修改主機名 service 行修改 方便 edi ifcfg-eth bsp 新學linux,整理出來的文章,方便我自己這個懶人=_= 1.新建虛擬機 修改主機名(改成自己能記得的) 修改的命令:vi /etc/sysconfig/network 進入後:

安裝 虛擬(CentOS) 配置服務器間免驗證登錄

應用 圖片 鏡像文件 pts 配置服務 inux 平臺 可用 etc 安裝 虛擬機(CentOS) 配置服務器間免驗證登錄 作為搭建Hadoop 相關應用平臺的基礎工作,先要安裝與配置linux服務器資源,因條件有限,這裏以虛擬機替代實體機,下面為如何安裝與配置虛擬機的相

V-3-2添加虛擬配置硬件

vmware選擇需要新建虛擬機的服務器。右鍵,新建虛擬機。也可以選擇服務器後點擊下圖左上角的新建虛擬機按鈕。彈出對應的窗口。並且根據需要更改相應的配置。如下圖,設置創建虛擬機的名字。然後按“下一步”。之後需要選擇存儲器,也就是選擇新創建的虛擬機生成的虛擬機文件的位置。設置選擇客戶機的操作系統,根據需求選擇,這

虛擬如何配置yum源

shadow clean lis 配置yum源 vpd rep png 虛擬 text 虛擬機掛載本地yum源 一、將所需ISO文件鏈接到虛擬機,如圖: 二、掛載 三、配置yum倉庫文件 四、 (1)清理緩存 yum clean all(2)yum repolist 檢查y

mac Android Studio 真測試 配置

str 開發者模式 開機密碼 roi 完成 andro 密碼 9.png 修改 mac 上android 真機測試,相對於iphone還是麻煩一些的,就親自實操,寫一下過程,希望對碼友們有幫助 配置:Android studio 3.0 mac :12.6 手機:小米5x

git+python+管理實現配置文件版本控制

git+python+管理機實現配置文件隨著公司業務越來越多,業務的分組也越來越多,像nginx,haproxy,lvs等也會區分出多組配置,所以想著自己寫一套簡單的支持多人操作/版本控制/快速回滾的一套管理方案。簡單描述一下我的設計思路通過單一的跳板機來git pull拉取每個業務的nginx配置文件,在通