




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MTK Driver Introduction,首先需要注意兩個宏定義 1. _CUST_NEW_ 程序中有多處用該宏將代碼隔開 Make文件中若如下定義: DRV_CUSTOM_TOOL_SUPPORT = TRUE Option.mak文件中 ifdef DRV_CUSTOM_TOOL_SUPPORT ifeq ($(strip $(DRV_CUSTOM_TOOL_SUPPORT),TRUE) COM_DEFS += _CUST_NEW_ endif endif,2. WIN32 #ifndef WIN32 #endif 用該宏將真機與模擬器的代碼分隔開,一. GPIO口的初使化與使用, GPIO口的初始化 方法:兩種: 1.工具 customdrvDrv_ToolDrvGen.exe 修改: customdrvmisc_drvIWIT23_NEP_07A_PMJ_BBcodegencodegen.dws 2.程序中修改:Gpio_drv.c void GPIO_init(void) 操作 1. 寫狀態(tài) a. 模式修改 GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada) b. 方向修改 void GPIO_InitIO(char direction, char port) c. 置高與置低 GPIO_WriteIO(char data, char port),d. 上拉與下拉的使能 void GPIO_PullenSetup(kal_uint16 pin, kal_bool enable) 2. 讀取狀態(tài) a. 返回模式 char GPIO_ReturnMode(char port); b. 返回方向 char GPIO_ReturnDir(char port); c. 返回電平值 char GPIO_ReturnDout(char port); 3. GPIO使用中需注意的問題,二.中斷的配置與使用,. 中斷個數 8個 EINT0, EINT1為專用中斷, EINT2-7 與GPIO等功能復用 . 設置中斷模式 通過DRV_TOOL或Gpio_init(void)來初始化,也可在程序中通過 GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)隨時修改 . 中斷注冊函數 在某個TASK中注冊中斷,建議注冊在AUX_TASK中,便于管理 EINT_Registration(FLICK_EINT_NO, KAL_TRUE, flick_state, FLICK_EINT_HISR, KAL_TRUE); . 中斷處理函數 以FLICK及BATTERY兩個中斷為例:,void FLICK_EINT_HISR(void) /added by Jeff Ji 071024 ilm_struct *flick_ilm; aux_id_struct *aux_id_data; if (flick_state = LEVEL_HIGH) aux_id_data = (aux_id_struct*) construct_local_para(sizeof(aux_id_struct), TD_CTRL); aux_id_data-aux_id = AUX_ID_FLICK_OFF; DRV_BuildPrimitive(flick_ilm, MOD_EINT_HISR, MOD_UEM, MSG_ID_AUX_ID, aux_id_data); ,else aux_id_data = (aux_id_struct*) construct_local_para(sizeof(aux_id_struct), TD_CTRL); aux_id_data-aux_id = AUX_ID_FLICK_ON; DRV_BuildPrimitive(flick_ilm, MOD_EINT_HISR, MOD_UEM, MSG_ID_AUX_ID, aux_id_data); msg_send_ext_queue(flick_ilm); flick_state = !flick_state; EINT_Set_Polarity(FLICK_EINT_NO,flick_state); ,void BATTERY_EINT_HISR(void) iwit_battery_state = !iwit_battery_state; EINT_Set_Polarity(BAT_EINT_NO,iwit_battery_state); iwit_fakeChargerAct = KAL_TRUE; if(iwit_battery_state = LEVEL_HIGH)/plug out bmt_set_chr_status(bmt_chr_out); bmt_charger_action(KAL_FALSE); else /plug in if(iwit_charger_present) bmt_set_chr_status(bmt_chr_in); bmt_charger_action(KAL_TRUE); ,三. 鍵盤配置,5X6鍵盤 Powerkey單獨,第6列 DEVICE_KEY_END Keypad_def.c 配置行列矩陣 Kbd_table.h 定義 DRIVER KEY CODE KeyBrd.c 定義KeyPadMap GlobalConstants.h 定義MMI KEY CODE,四. LCD驅動 Lcd_sw.h 1. 定義寫命令及寫數據的函數 #define LCD_CtrlWrite_HX8306A(_data) *(volatile kal_uint32 *) LCD_HX8306A_CTRL_ADDR= (_data 2. 定義是否使用DMA方式 #define LCD_CMD_DMA_MODE 3. 若是并口屏,要定義LCD接口的位數 #define LCD_18BIT_MODE, Lcd.c void LCD_FunConfig(void) MainLCD = void LCD_Init_ST7549T(kal_uint32 bkground, void *buf_addr) void LCD_BlockWrite_ST7549T(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy) void LCD_EnterSleep_ST7549T(void) void LCD_ExitSleep_ST7549T(void) void LCD_SetContrast_ST7549T(kal_uint8 level), 串口屏 void init_lcd_interface(void) SPI_Initialize();/modified by jeff ji 071024 /* init_lcd_interface() * void lcdSendSerialData(kal_uint8 SerialData, kal_bool rs) #define lcdSendCmd(cmd) lcdSendSerialData(cmd, 0) #define lcdSendData(data) lcdSendSerialData(data,1), 并口屏: void init_lcd_interface(void) kal_uint32 i; REG_LCD_ROI_CTRL=0; CLEAR_LCD_CTRL_RESET_PIN; #if (defined(MT6219)|defined(MT6226)|defined(MT6226M)|defined(MT6227)|defined(MT6223)| defined(MT6223P) SET_LCD_PARALLEL_CE2WR_SETUP_TIME(kal_uint32)2); SET_LCD_PARALLEL_CE2WR_HOLD_TIME(2); SET_LCD_PARALLEL_CE2RD_SETUP_TIME(2); SET_LCD_PARALLEL_WRITE_WAIT_STATE(3); SET_LCD_PARALLEL_READ_LATENCY_TIME(31); SET_LCD_ROI_CTRL_CMD_LATENCY(3,#if (defined(MT6226)|defined(MT6226M)|defined(MT6227)|defined(MT6223)| defined(MT6223P) #if (defined(LCD_16BIT_MODE) SET_LCD_PARALLEL_16BIT_DATA_BUS;/ywm+ 20060518 #elif (defined(LCD_18BIT_MODE) GPIO_ModeSetup(55, 1); *(volatile unsigned short *) 0x801201B0) |= 0x4000; *(volatile unsigned short *) 0x801201D0) |= 0x0001; SET_LCD_PARALLEL_18BIT_DATA_BUS; #elif (defined(LCD_8BIT_MODE) SET_LCD_PARALLEL_8BIT_DATA_BUS; #endif #endif #if (defined(MT6219) DISABLE_LCD_PARALLEL_SYNC; #endif #endif SET_LCD_CTRL_RESET_PIN; Delayms(100); /* init_lcd_interface() */,五. 音效優(yōu)化,Speaker Receiver Micphone 模式:normal ; handfree ; headset Nvram_default_audio.c 值的范圍 0 - 255 Audcoeff.c FIR 需使用音頻測試儀器測出的參數,一般都是normal模式下的參數; handfree模式下的參數要依靠經驗和嘗試來確定。 const unsigned short DG_DL_Speech = 0x1000; const unsigned short DG_Microphone = 0x1400; 以上兩個變量為Receiver及Microphone的數字增益,值可以在0x1000至0x2000之間調整,但一般情況下不需調整。使用默認值,而只調整Nvram_default_audio.c當中的模擬增益值的大小即可,audcoeff_default.h #define DEFAULT_SPEECH_LOUDSPK_MODE_PARA 128, 224, 5128, 0, 374, 0, 400, 0 第一個參數范圍值0至1024 , 值越大,回聲抑制越弱 ; 值越小,回聲抑制越強。該值可以用于改善音頻的回聲及斷續(xù)。 其它值不建議修改.,_Apply_Mic_Setting對MIC的設置,注意MIC的單端及差分設置 void _apply_mic_setting_c63216(kal_int16 a_lowest) if( afe.mic_src=L1SP_LNA_1 ) /* Headset Mode */ *AFE_VAC_CON0 |= 0x0480; /* Switch input source to headset microphone */ *AFE_VAC_CON1 |= 0x0040; /* Switch on resister string */ else /* Normal Mode */ *AFE_VAC_CON0 /* Switch off resister string */ ,六. ADC使用,1. 工具配置 2. 系數設置 Chr_parameter.c const kal_uint16 adc_volt_factorADC_MAX_CHANNEL 100, 100, 50, 250, 50, 50,/*NC*/ 50 /*NC*/ , 50為一倍,3. ADC測量 Auxmain.c,七. Touch panel 1.MAKE文件中如下配置 TOUCH_PANEL_SUPPORT = MT6301 2. Touch_panel_spi.h #define SPI_DIN_PIN gpio_tp_spi_din_pin /*GPO*/ #define SPI_CLK_PIN gpio_tp_spi_clk_pin /*GPO*/ #define SPI_DOUT_PIN gpio_tp_spi_dout_pin /*GPI*/ #define SPI_CS_PIN gpio_tp_spi_cs_pin /*GPO*/ #define SPI_BUSY_PIN gpio_tp_spi_busy_pin /*GPI*/ 3. Touch_panel_custom.h #define TOUCH_PANEL_COORD_X_START 0 #define TOUCH_PANEL_COORD_X_END 239 #define TOUCH_PANEL_COORD_Y_START 0 #define TOUCH_PANEL_COORD_Y_END 319,八. USB 1. MAKE文件中 _CHARGER_USB_DETECT_WIHT_ONE_EINT_ _USB_ENABLE_ USB_IN_NORMAL_MODE_SUPPORT = TRUE 2. ADC配置,工具配置 ADC_CHR_USB 3. Chr_parameter.c const kal_uint16 adc_volt_factorADC_MAX_CHANNEL 100, 100, 50, 250, 50, 50,/*NC*/ 50 /*NC*/ ,九. UART 串口初始化 Uart.c中,void UART_HWInit(UART_PORT port) UARTDCBStruct UART_DefaultConfig = UART_BAUD_115200, /* baud; */ len_8, /* dataBits; */ sb_1, /*stopBits; */ pa_none, /* parity; */ fc_none, /*no flow control*/ 0x11, /* xonChar; */ 0x13, /* xoffChar; */ KAL_FALSE ;, 關于AT模式串口及Trace模式串口的設置(NVRAM) Nvram_common_config.c static kal_uint8 const NVRAM_EF_PORT_SETTING_DEFAULT = #if defined(_ONLY_ONE_UART_) 0x63, 0x00, /* TST uses uart_port2(value is 1) */ 0x00, 0x00, /* APP uses uart_port1 */ #else 0x01, 0x00, /* TST uses uart_port2(value is 1) */ 0x00, 0x00, /* APP uses uart_port1 */ #endif,#if defined(EMPTY_MMI) 0x00, 0x10, 0x0E, 0x00, /* tst default baud rate base = 921600 = 0x000E1000 */ #else 0x00, 0xC2, 0x01, 0x00, /* tst default baud rate base = 115200 = 0x0001C200 */ #endif #if defined (_GPRS_MODE_) 0x00, 0xC2, 0x01, 0x00, /* ps default baud rate base = 115200 = 0x0001C200 */ #else 0x00, 0xC2, 0x01,0x00, /* ps default baud rate base = 57600 = 0x0000E100 */ #endif 0x00, /* High SpeedSIM */ 0x00, /* SWDBG */ 0x03, 0x63, /* uart power setting, plus 1-byte padding
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 丙肝工作管理制度
- 業(yè)主進度管理制度
- 業(yè)務掛靠管理制度
- 業(yè)務津貼管理制度
- 業(yè)務經費管理制度
- 東莞宿舍管理制度
- 絲織車間管理制度
- 嚴格內部管理制度
- 個人捐款管理制度
- 個人病情管理制度
- 課題申報參考:新時代高?!靶凶叩乃颊n”教學模式創(chuàng)新與保障機制研究
- 2023-2024學年北京市朝陽區(qū)八年級下學期期末英語試卷(含答案)
- 《瑞幸咖啡財務舞弊案例分析》11000字(論文)
- 學校消防報警系統(tǒng)安裝施工方案
- 品管圈PDCA獲獎案例呼吸科提高患者吸入劑規(guī)范使用達標率
- 電池安全管理
- 我的家鄉(xiāng)廣東河源
- 智能制造變革者
- 腸道菌群移植治療糖尿病
- 痛風腎病的中醫(yī)護理方案
- 麻醉恢復室病人的護理
評論
0/150
提交評論