小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MTK 音頻和BMT簡(jiǎn)介

 姚小夭 2010-10-26

1 音頻的通路有兩種:

            i.              T卡-->內(nèi)存-->DSP解碼-->PCM信號(hào)--> 模擬基帶(ABB)--> [外部功放]-->輸出

            ii.              FM/TV chip-->模擬基帶(ABB)--> [外部功放]-->輸出

注:由于耳機(jī)功率相對(duì)較小所以在驅(qū)動(dòng)耳機(jī)時(shí)只需要ABB內(nèi)部的一級(jí)放大即可,二在驅(qū)動(dòng)speaker的時(shí)候需要較高的功率所以需要經(jīng)過(guò)一級(jí)外部功放。另外耳機(jī)的立體聲是BB的兩路信號(hào)(MP3_OUTR&MP3_OUTL)直接差分輸出的而speaker只使用了其中的一路,另一路信號(hào)被舍棄。

       由于音頻信號(hào)經(jīng)過(guò)數(shù)字和模擬兩個(gè)階段,所以對(duì)信號(hào)的放大可以分為數(shù)字增益和模擬增益。其中模擬增益依靠硬件電路完成,范圍內(nèi)線性度好不容易失真;而數(shù)字增益則是通過(guò)軟件完成,該方式線性度差容易出現(xiàn)失真等問(wèn)題。在Afe2.c文件中有函數(shù)

void AFE_SetLevelVolume(kal_uint8 aud_func, kal_uint8 MaxAnalogGain, kal_uint8 step, kal_uint8 level)是通過(guò)改變模擬增益改變輸出音量大小的函數(shù)。其原理是更改ABB中可編程放大器的放大倍數(shù)來(lái)改變聲音的大小。而函數(shù)

void AFE_SetOutputVolume( kal_uint8 aud_func, kal_uint8 volume1, kal_int8 digital_gain_index )則是通過(guò)調(diào)整數(shù)字增益來(lái)改變音量的。

        

Pcm編解碼電路的任務(wù)是數(shù)字信號(hào)與模擬信號(hào)的轉(zhuǎn)換

     Pcm緩沖區(qū)的數(shù)據(jù)處理:在event_callback里收到MEDIA_DATA_REQUEST后按如下流程處理。

a.PCM_Strm_Open;

       b. 調(diào)用setBuffer;

       c. 填數(shù)據(jù); GetWriteBuffer

       d. 調(diào)用WriteDataDone;

       e. 調(diào)用FinishWriteData;

f.  播放play(mdi_audio_play_string_with_vol_path)

      

2.音頻對(duì)應(yīng)的驅(qū)動(dòng)主要有以下文件:

Afe2.c------AFE_GetOutputVolume(),AFE_SetLevelVolume(),

Afe_turnonextamplifier(),afe_turnonextamplfier();

Afe.c------afe_switchextamplifier(char sw_on)等

 

audcoeff.c:此文件要注意outputchanal的配置,配置錯(cuò)誤將沒(méi)有聲音出現(xiàn)

const unsigned char  L1SP_MICROPHONE1  = L1SP_LNA_0;

const unsigned char  L1SP_MICROPHONE2  = L1SP_LNA_1;

const unsigned char  L1SP_SPEAKER1     = L1SP_BUFFER_0;

const unsigned char  L1SP_SPEAKER2     = L1SP_BUFFER_ST;

const unsigned char  L1SP_LOUD_SPEAKER  = L1SP_BUFFER_ST_M|L1SP_BUFFER_EXT;;

 

audcoeff_default.h: 定義語(yǔ)音增強(qiáng)參數(shù);

 

gpio_drv.c: 設(shè)置模式以及方向

 

nvram_default_audio.c: 配置各音階的音量,每個(gè)參數(shù)里有“音量0~音量6”7個(gè)音量等級(jí)和16 Level Setting模擬增益調(diào)節(jié)

GAIN_NOR_CTN_VOL  //call wait tone

GAIN_NOR_KEY_VOL    //keypad volume;

GAIN_NOR_MIC_VOL   //microphone input

GAIN_NOR_GMI_VOL   // fm radio sound 

GAIN_NOR_SPH_VOL   // speech sound

GAIN_NOR_SID_VOL    //side tone

GAIN_NOR_MED_VOL  //music

在l1audio.h中有如下定義。

     #define  L1SP_KEYTONE         0  // 按鍵音。

#define  L1SP_TONE            1  // 單音和弦。

#define  L1SP_SPEECH          2  // 語(yǔ)音。

#define  L1SP_SND_EFFECT      3  // 聲效。

#define  L1SP_AUDIO           4  // MP3等

#define  L1SP_VOICE           5  // 錄音

#define  L1SP_DAI             6  // 數(shù)字聲音

#define  L1SP_FM_RADIO        7  // FM聲音。

  

手機(jī)里的音頻參數(shù)有如下內(nèi)容

 

FIR = Finite filter, IIR= Infinite filter, 調(diào)整響應(yīng)曲線

ES = Echo suppression, 抑制回音

AEC = Acoustic echo canceller, 消除回音

AGC = Automatic gain control, 自動(dòng)增益補(bǔ)償

NS = Noise suppression, 背景噪音抑制

 

3.音頻格式:

MP3

MP3的全稱(chēng)是Moving Picture Experts Group Audio Layer III。簡(jiǎn)單的說(shuō),MP3就是一種音頻壓縮技術(shù),由于這種壓縮方式的全稱(chēng)叫MPEG Audio Layer3,所以人們把它簡(jiǎn)稱(chēng)為MP3。MP3是利用 MPEG Audio Layer 3 的技術(shù),將音樂(lè)以1:10 甚至 1:12 的壓縮率,壓縮成容量較小的file,換句話說(shuō),能夠在音質(zhì)丟失很小的情況下把文件壓縮到更小的程度。而且還非常好的保持了原來(lái)的音質(zhì)。正是因?yàn)镸P3體積小,音質(zhì)高的特點(diǎn)使得MP3格式幾乎成為網(wǎng)上音樂(lè)的代名詞。每分鐘音樂(lè)的MP3格式只有1MB左右大小,這樣每首歌的大小只有3-4兆字節(jié)。使用MP3播放器對(duì)MP3文件進(jìn)行實(shí)時(shí)的解壓縮(解碼),這樣,高品質(zhì)的MP3音樂(lè)就播放出來(lái)了。

 

WMA

WMA (Windows MediaAudio)格式是來(lái)自于微軟的重量級(jí)選手,后臺(tái)強(qiáng)硬,音質(zhì)要強(qiáng)于MP3格式,更遠(yuǎn)勝于RA格式,

RealAudio

 RealAudio主要適用于在網(wǎng)絡(luò)上的在線音樂(lè)欣賞,這些格式的特點(diǎn)是可以隨網(wǎng)絡(luò)帶寬的不同而改變聲音的質(zhì)量,在保證大多數(shù)人聽(tīng)到流暢聲音的前提下,令帶寬較富裕的聽(tīng)眾獲得較好的音質(zhì)。

MIDI

 MIDI(Musical InstrumentDigitalInterface)

MID文件并不是一段錄制好的聲音,而是記錄聲音的信息,然后在告訴聲卡如何再現(xiàn)音樂(lè)的一組指令。

 

CD

*.cda格式,就是CD音軌。標(biāo)準(zhǔn)CD格式也就是44.1K的采樣頻率,速率88K/秒,16位量化位數(shù),因?yàn)镃D音軌可以說(shuō)是近似無(wú)損的,因此它的聲音基本上是忠于原聲的,因此如果你如果是一個(gè)音響發(fā)燒友的話,CD是你的首選。

 

4.“POP”噪聲是指音頻器件在上電、斷電瞬間以及上電穩(wěn)定后,各種操作帶來(lái)的瞬態(tài)沖擊所產(chǎn)生的爆破聲。產(chǎn)生“POP”噪聲的瞬態(tài)沖擊通常是一種很窄的尖脈沖......

如何消除pop音:

    開(kāi)始播放時(shí)的pop音:先輸出音頻,延遲一段時(shí)間后,再打開(kāi)音頻功放

這種方式只是利用軟件掩飾的指標(biāo)方法,真正的消除應(yīng)從硬件著手:比如減小輸出端的偶合電容,改用橋式電路等;

     5.音頻放大器

音頻放大器分為A類(lèi)、B類(lèi)和AB類(lèi)和D類(lèi)以及k類(lèi)放大器,一般情況下用D類(lèi)放大器,因?yàn)樾矢?,體積小。

設(shè)計(jì)的時(shí)候一般音頻輸入輸出采用差分方式,雙聲道給耳機(jī),偏置一路給功放。

 

BMT充電介紹:

 

1.電池充電相關(guān)文件:bmt.c    chr_parameter.c

 

2.充電有三個(gè)過(guò)程:預(yù)充電、恒流充電、恒壓充電

1)        當(dāng)Vbat<3.3V  屬于預(yù)充階段,在這個(gè)階段充電跟電池還有多少電壓沒(méi)有關(guān)系,即使電池電壓為0V也應(yīng)該可以沖進(jìn)電(一般正規(guī)廠商電池內(nèi)部有保護(hù)電路,當(dāng)放電到兩點(diǎn)幾伏時(shí)已經(jīng)截止,不能放出電了),只要電池本身沒(méi)問(wèn)題!關(guān)鍵是確保BATDET腳是否處于低電平!手機(jī)充電是沒(méi)有任何反應(yīng)的。

2)        當(dāng)電池電壓低于3.3V時(shí),PMIC(電源管理芯片)不能提供Vcore、Vdd等電壓,CPU處于關(guān)機(jī)狀態(tài),這時(shí)CPU是不工作的!手機(jī)是沒(méi)有任何反應(yīng)的,在這個(gè)模式只要BATDET腳通過(guò)下拉電阻置低,即可進(jìn)行預(yù)充!

充電電流Ipre=10mV/Rsense  現(xiàn)在MTK平臺(tái)Rsense=0.33R, 可知Ipre=30mA

 

2).  當(dāng)3.3V<bat<4.2V  PMIC的LDO開(kāi)始輸出電壓,從而cpu開(kāi)始工作,這是進(jìn)入恒流充電階段充電電流Icc=160mV/Rsense ,現(xiàn)在MTK平臺(tái)Rsense=0.33R,可知Icc=480mA

   

3).  Vbat>4.2V 進(jìn)入恒壓充電階段,這個(gè)階段電流逐漸變小,電壓維持不變!當(dāng)電流減小到接近為0時(shí),CPU發(fā)出控制信號(hào)這時(shí)停止充電!

 

 

以下為充電狀態(tài)圖:

                                        

 

 

  

3.當(dāng)充電器插入時(shí),亦即為PMIC充電模塊提供了Vcharge電壓,只要把PMIC的BATDET腳接地即可啟動(dòng)充電模塊,這時(shí)會(huì)產(chǎn)生一個(gè)充電中斷信號(hào)到CPU,通知CPU現(xiàn)在已經(jīng)進(jìn)入充電狀態(tài)。這時(shí)PMIC會(huì)產(chǎn)生一個(gè)中斷給CPU,CPU開(kāi)始啟動(dòng)如下模塊:

 

一、ADC采樣,主要是采集Vchrg,Vbat及從MOSFET漏極輸出的電壓。

 

二、發(fā)消息給MMI層,讓它顯示充電狀態(tài)及一些采樣數(shù)據(jù)

 

三、檢測(cè)電池電壓有沒(méi)有超過(guò)保護(hù)電壓及電池連接是否連接正確,如果有問(wèn)題即可通過(guò)CHRCTRL(GPI031)切斷充電電路!

 

四、平時(shí)顯示“充電器沒(méi)有連接”警告,是因?yàn)镻MIC的BATDET腳float(懸空),MOSFET沒(méi)有打開(kāi),從而沒(méi)有充電電流引起的

 

PMIC 會(huì)通過(guò)電池BAT ID腳來(lái)判斷要不要給電池充電,并不是用來(lái)區(qū)分是鋰電還是鎳氫電池!區(qū)別鋰電還是鎳氫電池是通過(guò)PMIC的BATUSE腳,低電平是選擇鋰電!我們目前使用的電池ID電阻是10k左右,只要電池三個(gè)腳都接到電池connector上,就可以通過(guò)電池ID電阻把BATDET腳接地,充電也就開(kāi)始了(包括預(yù)充電)!插充電器后,只要把PMIC的BATDET腳接地,就可以保證有電流流入了,電池的電壓只影響充電狀態(tài)(比如是預(yù)充還是恒流充電),如果電池電壓較低,只是預(yù)充的時(shí)間稍長(zhǎng)一些,最多一兩個(gè)小時(shí)應(yīng)該可以完成預(yù)充電,進(jìn)入恒流充電狀態(tài)!

一般電池都有自保護(hù),一塊合格的電池不應(yīng)該會(huì)出現(xiàn)是0V的情況!

 

 

 

附:

1.當(dāng)電池電壓過(guò)低時(shí),即進(jìn)入鎖定狀態(tài),用萬(wàn)用表測(cè)得電池兩端的電壓為0V!手機(jī)在低電壓鎖定后不能充電跟手機(jī)的充電電路沒(méi)有關(guān)系!

2.電池保護(hù)IC主要有過(guò)沖保護(hù)、過(guò)放保護(hù)、大電流保護(hù)等功能。

3.鋰電池不能把電全部放完,必須加保護(hù)IC,如果電池電壓放電低于2V,就不能充進(jìn)電了!

4.電池被鎖定后,需要激活電壓把電池喚醒。

5.電池在低壓時(shí)充不進(jìn)去電,與電池廠家選用的保護(hù)IC有關(guān)!

在Chr_parmeter.c文件中有如下數(shù)據(jù)結(jié)構(gòu),其中定義了有關(guān)電池和充電部分的全部典型值。

bmt_customized_struct  bmt_custom_chr_def =

{

#ifndef  __CUST_NEW__

   31,/*GPIO_CHRCTRL*/

   14,/*GPIO_BATDET*/

   7,/*GPIO_VIBRATOR*/

#endif /*__CUST_NEW__*/

 

/*charing parameters*/

/*Check Phy parameters,Maybe changed*/

   1100000,/*Typical_LI_BATTYPE*/     鋰電池典型值(容量)

   1100000,/*Typical_NI_BATTYPE*/       鎳氫電池典型值(容量)

   1000000,/*ICHARGE_ON_HIGH*/        最大充電電流

   0,/*ICHARGE_ON_LOW*/                          最小充電電流

   1000000,/*ICHARGE_OFF_HIGH*/  //??50000   

   4050000,/*V_FAST2TOPOFF_THRES*/                   

   2500000,/*BATTMP_MINUS_40C*/                          

   1469409,/*BATTMP_0C*/                                        

   520042,/*BATTMP_45C*/                                       

   6000000,/*MAX_VBAT_LI*/                      

鋰電池最大VBAT值

   5500000,/*MAX_VBAT_NI*/

                                   鎳氫電池最大VBAT值

   3400000,/*V_PRE2FAST_THRES*/                          

   250000,/*I_TOPOFF2FAST_THRES*/  /*250ma,TOPOFF->FAST*/

                                   快速充電關(guān)閉電流

   120000,/*I_TOPOFF2FULL_THRES*/   /*120ma,TOPOFF->BATFULL*/

                                   正常充電關(guān)閉電流

   4110000,/*V_FULL2FAST_THRES*/  /*BATFULL->FAST*/

                                  

   414557,/*V_TEMP_FAST2FULL_THRES_NI*/ /*50oC,FAST->BATFULL*/

                                  

   4050000,/*V_FULL2FAST_THRES_NI*/

   600000,/*FAST_ICHARGE_HIGHLEVEL*/  /*600ma,for table search*/

                                                        快速充電最高限制電流

   400000,/*FAST_ICHARGE_LOWLEVEL*/   /*400ma,for table search*/

                                                        快速充電最低限制電流

   4050000,/*V_PROTECT_HIGH_LI*/

   3800000,/*V_PROTECT_LOW_LI*/

#if defined(__RGT_DRV_M100__) //M100 support Nokia charger

   7000000,                                      諾基亞充電器電壓 7v

#else

   6500000,/*VCHARGER_HIGH*/    普通充電器電壓為6.5v

#endif

   0,/*VCHARGER_LOW*/

/*Time delay*/

/* PRE CHARGE ,search table*/

/*TON = 3s,TOFF=2s*/

   3,/*PRE_TON*/

   2,/*PRE_TOFF*/

 

/* FAST CHARGE ,search table*/

/*TON = 3s,TOFF=0s*/

   3,/*TOPOFF_TON*/

   0,/*TOPOFF_TOFF*/

 

   6,/*BATFULL_TON_LI*/   /*unit : second*/

   0,/*BATFULL_TOFF_LI*/

   1,/*BATFULL_TON_NI*/   /*unit : second*/

   9,/*BATFULL_TOFF_NI*/

   6,/*BATFULL_TOFF*/

   10,/*BATHOLD_OFF*/

 

   5,/*ADC_ISENSE_RESISTANCE_FACTOR*/         /*1/0.2*/

   24, /*bmt_measure_discard_time*/ /*24 ticks*/

   //ADC_CALIDATA adc_cali_param 

以下為手機(jī)電壓檢測(cè)部分的ADC校準(zhǔn)值

   {

      {

         5524,

         5524,

         5524,

         5524,

         5524,

         5524

      },

      {

         (23286),

         (23286),

         (23286),

         (23286),

           (23286),

         (23286)

      }

   },

  

   /*ratio = adc_volt_factor/100*/

   //const kal_uint16 adc_volt_factor[ADC_MAX_CHANNEL]

   {

       50,

       50,

       50,

      100,

       50,

      50

   },

      //const kal_uint8 TONOFFTABLE[6][2] =

   {

      {7,1},

      {8,1},

      {9,1},

      {7,1},/*talk */

      {8,1},/*talk */

      {9,1}/*talk */

   },

  

   //const kal_int32 CurrOffset[3] =      

   {

      100000, //100ma

      100000,

      100000

   },

   KAL_FALSE, /* enable checking temperature while charging */

#if defined(__MT6253_PLATFORM_SUPPORT__)

   KAL_TRUE /* enable checking charging voltage while charging */        

#else

   KAL_FALSE /* enable checking charging voltage while charging */       

#endif  

};

Pmic_custom.c文件中宏

       #define AC_CHR_CURRENT        CHR_CURRENT_650  

#define USB_CHR_CURRENT       CHR_CURRENT_450

分別是對(duì)交流充電器和USB充電時(shí)的電流限制分別為650ma和450ma

Bmt_main.c是關(guān)于電池和充電器的驅(qū)動(dòng)文件。

在文件Auxmain.c文件AUX_task_main函數(shù)中

       case MSG_ID_READ_ALL_ADC_CHANNEL_REQ:

            adc_measure_count=0;

            vbat_value = 0;

            aux_read_adc_channel(vbat_adc_logic_id);

            visense_value = 0;

            aux_read_adc_channel(visense_adc_logic_id);

            vcharger_value = 0;

            aux_read_adc_channel(vcharger_adc_logic_id);

            vbattemp_value = 0;

            aux_read_adc_channel(vbattemp_adc_logic_id);

            vaux_value = 0;

            aux_read_adc_channel(vaux_adc_logic_id);

            break;

部分是開(kāi)機(jī)后進(jìn)入工程模式下讀取電源相關(guān)ADC值部分代碼


本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/jiangyu912/archive/2010/07/16/5738758.aspx

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多