XX1182在此案子主要用來echo cancellation and noise suppression,包括錄音與與藍芽連接時PCM的聲音處理。
此Chip的參數設定方式透過UART傳入Commond的方式來更改,透過修改不同Memory Address位址,可以設定聲音傳送的路徑、設定microphone與speaker的pgagain值大小等。
##CONTINUE##
Command的格式是以FCF3為開頭作為sync word,例如:
寫值:
FC F3 3B 1E 34 00 55 代表 write memory 1E34 with 0055
讀值:
FC F3 37 1E 34 代表 read memory contents of 1E34
因此,在driver中,我們可以利用一個Array來儲存要修改的參數:
unsigned char FmInitStr[][7] ={
{0xFC, 0xF3, 0x3B, 0x1E, 0x30, 0x02, 0x21},
{0xFC, 0xF3, 0x3B, 0x1E, 0x34, 0x00, 0x0F},
{0xFC, 0xF3, 0x3B, 0x1E, 0x3D, 0x0A, 0x00},
{0xFC, 0xF3, 0x3B, 0x1E, 0x41, 0x00, 0x01},
{0xFC, 0xF3, 0x3B, 0x1E, 0x44, 0x00, 0x01},
{0xFC, 0xF3, 0x3B, 0x1E, 0x45, 0x00, 0xDE},
{0xFC, 0xF3, 0x3B, 0x1E, 0x46, 0x00, 0x10},
{0xFC, 0xF3, 0x3B, 0x1E, 0x36, 0x00, 0x1F},
{0xFC, 0xF3, 0x3B, 0x0F, 0xA9, 0x00, 0x80},
{0xFC, 0xF3, 0x3B, 0x1E, 0x70, 0x07, 0xC0},
{0xFC, 0xF3, 0x3B, 0x1E, 0x52, 0x00, 0x07},
{0xFC, 0xF3, 0x3B, 0x1E, 0x51, 0xC0, 0x00},
{0xFC, 0xF3, 0x3B, 0x1E, 0x3A, 0x00, 0x00}
};
然後再利用一個迴圈依序將Commond透過UART傳入即可!
for(i=0;i<13;i++) bresult =" WriteFile" style="color: rgb(255, 255, 51);">IE65的值,若是正常狀況下,讀取的值會不斷的增加,反之,則為0。
2007年3月28日
XX1182設定方式
標籤: Audio, WinCE Driver
2007年3月19日
讓Source Insight顯示完整路徑名稱
2007年3月16日
SyncBack 免費好用的資料備份及同步軟體
##CONTINUE##
目的:同步Server與桌機上Project的資料!
商業軟體有 SyncBackSE 與 SyncBackPro。
免費的版本則是 SyncBack。
http://www.2brightsparks.com/
使用上蠻簡單的,如圖,選擇來源與目的資料夾,來源的話可以選擇Server上的Project的資料夾,目的的話就選擇本機的資料夾就可以了!
至於運作方式,我是選擇備份來源資料夾資料,避免更改Server上的資料。
接著執行就可以了!
2007年3月15日
wince下加載驅動程式
加載流驅動程序有三種方法:
第一種加載類型是在系統啟動的時候進行的。當Winows CE的平台啟動的時候,設備管理器(Device.exe)從註冊表的HKEY_LOCAL_MACHINE\Drivers\RootKey下面加載入口點,通常RootKey的值都被設置為Drivers\BuiltIn。然後設備管理器(Device.exe)通過\RootKey提供的入口點開始讀取 HKEY_LOCAL_MACHINE \Drivers\Builtin的內容,並加載已列出的驅動程式。
##CONTINUE##
第二種加載的類型是在設備管理程式自動檢測外圍設備設備與基於Windows CE平台的連接時進行的。
第三種加載類型是當設備管理器程序不能夠自動檢測或加載某一種驅動程式的時候,這個時候的可以使用系統提供的函數ActivateDeviceEx函數來加載驅動程序。
HANDLE ActivateDeviceEx(
LPCWSTR lpszDevKey,
LPCVOID lpRegEnts,
DWORD cRegEnts,
LPVOID lpvParam
);
lpszDevKey :[HKEY_LOCAL_MACHINE]下的登錄機碼名稱
lpvParam:傳送至驅動程式的Init函式中的指標。
傳回值:裝置的控制碼,可用來卸載Driver時傳送之參數!
以PCT661的PowerButton Driver為例:
方法一:
若在Platform.reg中已經有定義相關資訊,則必須在相關設定中加入"Flags"的參數,並將值定為4
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PWRBUTTON]
"Prefix"="PWR"
"Dll"="PwrButton.Dll"
"Order"=dword:2
"Ioctl"=dword:4
"KeyMuxTime"=dword:64 ; 100 ms
IF BSP_ATLAS_KEYPANEL_V3
"KeyMuxValue"=dword:C3 ; VK_APP3
ELSE
"KeyMuxValue"=dword:d ; VK_RETURN
"Flags"=dword:4
Flags設定為4表示系統開機時不去載入此driver!
有關Flags參數設定,可參考MSDN裡ActivateDeviceEx()說明!
接著就可以在AP中呼叫ActivateDeviceEx()
Step1 :
呼叫前須先將"Flags"的值設為0,Driver才能成功被載入:
if(RegCreateKeyEx( HKEY_LOCAL_MACHINE,szPWRBTNDevKey,0,_T("PWRBUTTON"),REG_OPTION_VOLATILE,0,NULL,&hKey,&dwDisposition) == ERROR_SUCCESS)
{
DisplayData(TEXT("RegCreateKeyEx Success"));
val = 0; RegSetValueEx(hKey,_T("Flags"),0,REG_DWORD,(PBYTE)&val,sizeof(DWORD));
RegCloseKey(hKey);
}
Step2 :
呼叫ActivateDeviceEx():
TCHAR szPWRBTNDevKey[] = _T("Drivers\\BuiltIn\\PWRBUTTON");
hDev = ActivateDeviceEx( szPWRBTNDevKey, NULL, 0, NULL );
方法二:
若沒有在Platfom.reg中設定Registry相關資料,則必須在載入前於Registry自行加入相關設定:
if(RegCreateKeyEx( HKEY_LOCAL_MACHINE,szKeyPADDevKey,0,
_T("KEYPAD"),REG_OPTION_VOLATILE,0,NULL,&hKey,&dwDisposition) == ERROR_SUCCESS)
{
RegSetValueEx(hKey,_T("Prefix"),0,REG_SZ,(const BYTE*)TEXT("PWR"),sizeof(TEXT("PWR")));
RegSetValueEx(hKey,_T("Dll"),0,REG_SZ,(const BYTE*)TEXT("touchpad.dll"),sizeof(TEXT("PwrButton.dll")));
val = 4;
RegSetValueEx(hKey,_T("Ioctl"),0,REG_DWORD,(PBYTE)&val,sizeof(DWORD));
val = 100;
RegSetValueEx(hKey,_T("KeyMuxTime"),0,REG_DWORD,(PBYTE)&val,sizeof(DWORD));
...............
RegCloseKey(hKey);
}
接著一樣再呼叫ActivateDeviceEx()
若想卸載Driver,則可以呼叫DeactivateDevice()
DeactivateDevice(hDev);
hDev為ActivateDeviceEx()之傳回值
問題:
* 有些Driver無法成功載入,如Bluetooth
* 有些Driver只能載入一次,卸載後無法再載入第二次,例如KEYPAD