《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種基于WinCE6.0的數字調頻收音機的設計
一種基于WinCE6.0的數字調頻收音機的設計
單片機與嵌入式系統(tǒng)
王 波,李會勇,鐘 君
摘要: 摘要:提出一種基于WinCE6.0的數字調頻收音機的設計方案,,介紹了基于WinCE6.0的系統(tǒng)設計流程和數字調頻收音機芯片Si4730的特性,,詳細分析了WinCE6.0下驅動程序和應用程序的設計方法,并通過基于S3C2440的硬件平
Abstract:
Key words :

摘要:提出一種基于WinCE 6.0的數字調頻收音機的設計方案,介紹了基于WinCE 6.0的系統(tǒng)設計流程和數字調頻收音機芯片Si4730" title="Si4730">Si4730的特性,詳細分析了WinCE6.0" title="WinCE6.0">WinCE6.0下驅動程序和應用程序的設計方法,并通過基于S3C2440" title="S3C2440">S3C2440的硬件平臺加以驗證,。該方案具有可靠性高、功耗低,、界面美觀等優(yōu)點,。
關鍵詞:WinCE6.0;Si4730,;I2C總線驅動程序" title="I2C總線驅動程序">I2C總線驅動程序,;S3C2440

    本設計利用數字收音機芯片Si4730,為基于WincE6.0的智能系統(tǒng)集成FM功能提供了一種很好的解決方案,,該方案實現了全頻手動與自動搜臺等功能,。

1 基于WinCE6.0的系統(tǒng)設計流程
    如圖1所示,基于WinCE 6.0的系統(tǒng)設計一般分為3個過程:針對不同的硬件平臺設計BSP包,,BSP包括Boot-loader,、OAL和驅動程序;針對系統(tǒng)的需求,,利用Platform Builder for CE 6.0選擇合適的組件,,構建操作系統(tǒng)并導出SDK;在SDK的支撐下開發(fā)應用程序,。

b.JPG


    WinCE 6.0與其早期版本相比,,開發(fā)工具有了較大的變化。Platform Builder已經不是一個單獨發(fā)行的工具,,Platform Builder 6.0已經成為Visual Studio.Net 2005的一個插件,,所以在visual Studio.Net 2005集成開發(fā)環(huán)境中即可完成WinCE6.0的系統(tǒng)定制,、驅動開發(fā)和應用程序開發(fā)。

2 數字收音機芯片Si4730
2.1 Si4730簡介
    Si4730/31是Silicon Labs公司推出的高集成度AM/FM收音機芯片,,原理圖如圖2所示,。

c.JPG


    Si4731具有RDS/RBDS功能和數字音頻接口。在不包括天線的情況下,,Si4730/31及其外圍電路只需15 mm2,。它的功能十分豐富,包括自動搜臺,、自動校準,、數字調諧、自適應噪聲抑制能力等,,這些特性非常適合于便攜式設備,。由于不需要RDS/RBDS功能,所以這里選用Si4730這款芯片,。
2.2 Si4730的控制接口
    Si4730的外圍電路非常簡單,,如圖3所示,。Si4730提供了3種控制方式:2線模式(兼容I2C總線),、SPI模式、3線模式,。芯片通過RST引腳上升沿時GP01與GP02的引腳狀態(tài)來決定采用哪種方式,,當GP01與GP02懸空時Si4730為2線模式。SEN引腳接高電平時,,器件地址為0xC6H,;接低電平時,地址為0x22H,。

k.JPG



3 接口電路與驅動程序的設計
    本設計的硬件平臺采用S3C2440處理器,,已經完成BSP包的開發(fā)以及WinCE 6.0操作系統(tǒng)的移植。
3.1 接口電路的設計
    由于S3C2440具有I2C接口,,所以只需將其與Si4730的I2C接口互相連接,。Si4730的復位引腳RST與S3C2440的GPB5引腳相連。
3.2 驅動程序的設計
    驅動程序由兩部分組成:I2C總線的驅動和GPIO口的驅動,。I2C總線的驅動用于操作系統(tǒng)與Si4730之間的通信,,GPIO口的驅動用于應用程序控制Si4730的復位。
3.2.1 Si4730的命令
    Si4730的命令有兩種:一種是控制命令,,如調諧到某一頻率,、自動搜索等;一種是屬性命令,,如設置接收信號的強度門限,、輸出音量的大小等,。常用的命令有以下幾種:
    ①上電(POWER_UP),命令格式為{0x01,,0xd0,,0x05}。
    ②獲取芯片信息(GET_REV),,命令格式為{0x10},。
    ③調諧到某一頻率(FM_TUNE_FREQ),命令格式為{0x20,,0x00,,ARG2,ARG3,,0x00},。其中ARG2與ARG3是頻率的十六進制數,例如102.3 MHz,,則ARG2為0x27,,ARG3為0xF6。
④自動搜索(FM_SEEK_START),,命令格式為{0x21,,0x0c)。
3.2.2 I2C總線驅動的實現
    這里采用流接口驅動程序的設計方法開發(fā)I2C總線驅動,。I2C總線驅動提供給操作系統(tǒng)的流接口為I2C_Init(),、I2C Open()、I2C Close(),、I2C Write(),、I2C Read()、I2C_IOControl()等,,應用程序通過調用CreateFile(),、WirteFile()和DeviceloControl()等接口函數來訪問設備。在已編譯完成的WinCE6.0鏡像工程中添加I2C總線驅動的流程如圖4所示,。

l.JPG


    ①添加子工程,。在鏡像工程的Solution Explorer窗口中,右鍵選擇Add New Subproject,,新建子工程,。
    ②編寫I2C總線驅動程序。在Source files下新建I2c.c的源文件,,并在該文件中編寫驅動代碼,,驅動程序的主要內容就是實現流接口函數。讀I2C總線的實現函數為BooL_WRITE_IIC(UINT32 slvAddr,UINT8 n,,UINT8*data),。寫I2C總線的實現函數為BooL READ_IIC(UINT32 slvA-ddr,UINT32 addr,,UINT8 n,,UINT8*data)。I2C_IOControl()的作用是傳遞I/O控制命令給設備,,在該函數里實現了對Si4730的控制,。部分代碼如下:
    m.JPG
    d.JPG
    ③注冊表中注冊設備驅動程序。打開platform.reg文件,,在其中添加注冊信息如下:
    e.JPG
    ④將驅動程序打包進鏡像中,。打開platform.bib配置文件,添加如下代碼:
     I2c.dll$(_FLATRELEASEDIR)\I2c.dll NK SHK
    ⑤創(chuàng)建驅動程序的def文件,。工程需要def文件導出相應的函數,,文件的部分內容為:
    f.JPG
3.2.3 GPIO驅動的實現
    Si4730工作時需要一個復位信號,這里使用S3C2440的GPB5口來進行控制,。在驅動中設置寄存器GPXCON為輸出功能,,設置寄存器GPXDAT的值為0或1來控制輸出口為低電平或高電平。相關代碼如下:
    g.JPG
    h.JPG
4 應用程序設計
4.1 功能實現
    應用程序的作用是調用驅動程序的流接口函數控制Si4730,,從而實現FM的功能,。在應用層中需要用到的API是CreateFile()、Devicelo Control(),、ReadFile(),、WriteFile(),,函數的參數說明可以參考Visual Studio 2005的幫助文件,。
    程序中首先使用CreateFile()打開設備句柄:
    I2Cdriver=CreateFile(L“I2C:”,GENERIC_READ|GENERIC_WRITE,,0,,NULL,OPEN_EXISTING,,0,,NULL);
    然后就可使用DeviceIocontrol(),、ReadFile(),、Write File()等API函數對設備進行控制,如調諧的實現:
    DeviceloControl(I2Cdriver,,IOCTL_FM_TUNE,,NULL,0,,NULL,,0,,NULL,NULL),;
4.2 界面設計
    良好的界面是應用程序重要的部分,,如圖5所示,界面中應該有如下幾個部分:播放,、頻率向上調諧,、頻率向下調諧、音量控制等,。

a.JPG

此內容為AET網站原創(chuàng),,未經授權禁止轉載。