[转]wince 蓝牙

下面是WinCE中蓝牙协议栈的架构图:

 

可以看到,HCI传输层以上的协议层全部由WinCE实现了,所以蓝牙模块只需要实现了基带层和链路管理层,并提供HCI传输接口给WinCE就可以了。WinCE支持使用USB、UART、SDIO等接口的蓝牙模块。

 

开发板上使用的是CSR-BC4-EXT-C2-PA蓝牙模块,模块接在串口0上。使用CSR的BCSP传输协议。以下是配置方法:

 

1 添加Bluetooth Stack with Universal Loadable Driver

 

2 注册表配置

 

[HKEY_LOCAL_MACHINE/Software/Microsoft/Bluetooth/Transports/BuiltIn/1]

 

    "driver"="bthcsr.dll"

 

    "flags"=dword:4

 

    "name"="COM0:"

 

    "baud"=dword:1c200

 

    "resetdelay"=dword:1388

 

使用COM0,波特率115200。

 

3 配置PSKEY

 

先用BlueFlash烧写固件,然后用PSTool配置PSKEY,只要配置HOST_INTERFACE和UART_BAUDRATE就可以了,其他按默认配置。

 

PSKEY_HOST_INTERFACE: UART link running BCSP

 

PSKEY_UART_BAUDRATE:  115.2kbaud

 

4 添加文件传输服务

 

1) 在PB里增加OBEX inbox和OBEX File Browser组件

 

2) 修改注册表:

 

; @CESYSGEN IF SERVERS_MODULES_OBEXFILE

 

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Obex/Services/{f9ec7bc4-953c-11d2-984e-525400dc9e09}]

 

    "BaseDir"="//Temp//Ftp" ;默认根目录.对方可见目录

 

    "Server"="obexfile.dll"

 

    "canWrite" = dword:1   ;可访问,可读写

 

    "authenticate"= dword:0 

 

    "transport authentiate" = dword:0

 

    ; @CESYSGEN IF CE_MODULES_BTD

 

    "BluetoothSdpRecord"=hex:35,41,09,00,01,35,03,19,11,06,09,00,04,35,11,35,/

 

    03,19,01,00,35,05,19,00,03,08,0a,35,03,19,00,08,/

 

    09,00,06,35,09,09,65,6e,09,00,6a,09,01,00,09,00,/

 

    09,35,08,35,06,19,11,06,09,01,00,09,01,00,25,03,/

 

    46,54,50

 

    ; @CESYSGEN ENDIF CE_MODULES_BTD

 

; @CESYSGEN ENDIF SERVERS_MODULES_OBEXFILE

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xy1001/archive/2008/12/06/3452861.aspx

 

wince串口蓝牙

 

今天终于搞好串口蓝牙了,对于有经验的人来说三五分钟的事情就OK了,我搞了多少天我都不记得了

唉,现在搞驱动啊,主要还是得靠技术支持,所以后来的XDJM要记住了,一个人打拼非常难的!

不多说了,直入正题:

第一步,如果你是一个刚开始搞蓝牙的人,那么,就先用wince自带的 bthcsr 驱动来测试是否正常与主机通信(也测试BT是否是好的)

 

在注册表加入(这些内容在一份bchs-srn-004_wpp_bcsp_release_notes.pdf的文档有说明)

 

[HKEY_LOCAL_MACHINE/Software/Microsoft/Bluetooth/Transports/BuiltIn/1] 

   "driver"="bthcsr.dll"

   "Name"="COM2:"

   "baud"=dword:E100 ;57600bps

   "FlashChip"=dword:0

   "flags"=dword:4

   "resetdelay"=dword:1388 

然后飞线过去和蓝牙模组启动试下,当然串口要对啊,如果是正常启动的话那么恭喜你,第一步已通过,否则检测下串口是否有效,BT是否好的!

 

 

第二步,PSKEY 一早就听说过这个了,但没一点印像,到底这东西有多大,是什么样的,其实只是一些数据而已,官方的配置里有N项,但其实我们只用到几个就行了

 

//PSKEY start

 

// PSKEY_BDADDR

&0001 = 0000 a5a5 005b 0002 //蓝牙地址,这个不用管

// PSKEY_HOSTIO_MAP_SCO_PCM   //PCM这个也不用

&01ab = 0000// False

// PSKEY_HOSTIO_MAP_SCO_CODEC //这个也不用

&01b0 = 0000// False

// PSKEY_PCM_CONFIG32    //默认值这个也不用

&01b3 = 0080 0000

// PSKEY_PCM_FORMAT      //这个也不用

&01b6 = 006c

// PSKEY_UART_BAUDRATE 

&01be = 00EC// 请查表,可以找到对应的波特率,00Ec是 57600

// PSKEY_ANA_FTRIM

&01f6 = 0022       //这个也不用

// PSKEY_HOST_INTERFACE

&01f9 = 0001// USB link   //0001 代表串口蓝牙

// PSKEY_ANA_FREQ    //这个也不用

&01fe = 3e80

 

//pskey end

总结,就两个地方,一个是波特率,一个是接口方式

 

 

注,我调试的是 BC04-ROM 的芯片,如果是 -flash 相应改下注册表还有驱动

 

第三,用官方的驱动,这个网上难找,如PSKEY,最好问支持能力强的供应商要

 

bchs-srn-004_wpp_bcsp_release_notes.pdf 说这个驱动叫 WPP-BCSP,那么就叫 WPP-BCSP吧,把它扔到BSP驱动程序的目录,编译它,如果通不过提示有错(error C2220: warning treated as error - no object file generated

),那就降低编译警告级别(在驱动里的属性修改)

 

最后一步

 

[HKEY_LOCAL_MACHINE/Software/Microsoft/Bluetooth/Transports/BuiltIn/1] 

   "driver"="Bthbcsp.dll"

   "Name"="COM2:"

   "baud"=dword:E100

   "FlashChip"=dword:0

   "flags"=dword:4

   "resetdelay"=dword:1388 

 

(当然要把 PSconfig.Psr打进windows目录,因为驱动会根据这个文件来配置)

 

OK最后就扫描下附近的蓝牙吧

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liqiong154/archive/2008/12/15/3516832.aspx

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////

 

WINCE5.O对USB蓝牙适配器服务的支持

 

<1>添加蓝牙协议栈

   蓝牙组件位置:Communication Services and Networking/Networking - Personal Area Network (PAN)/Bluetooth/

   Bluetooth Protocol Stack with Transport Driver Support/Bluetooth Stack with Integrated USB Driver

   Bluetooth Protocol Stack with Transport Driver Support/Bluetooth Stack with Universal Loadable Driver

   Bluetooth Profiles Support/Bluetooth DUN Gateway

   Bluetooth Profiles Support/Bluetooth HS/HF and Audio Gateway Service

   Bluetooth Profiles Support/Bluetooth LAP and Configuration Utility

   Bluetooth Profiles Support/Bluetooth PAN

<2>添加对象交换协议

   Applications and Services Development/OBEX Client

   Applications and Services Development/OBEX Server/OBEX File Browser

   Applications and Services Development/OBEX Server/OBEX Inbox

<3>修改注册表

   修改注册表文件内容:C:/WINCE500/PUBLIC/SERVERS/OAK/FILES/servers.reg

   查找下面内容,并添加

    "CanWrite" = dword:1 

    "Authenticate" = dword:0 

    "Password" = "0000 " 

    "Transport Authenticate"=dword:0

 

    修改前:

; @CESYSGEN IF SERVERS_MODULES_OBEXFILE

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Obex/Services/{f9ec7bc4-953c-11d2-984e-525400dc9e09}]

    "BaseDir"="//Temp//Ftp"

    "Server"="obexfile.dll"

; @CESYSGEN IF CE_MODULES_BTD

 "BluetoothSdpRecord"=hex:35,41,09,00,01,35,03,19,11,06,09,00,04,35,11,35,/

                             03,19,01,00,35,05,19,00,03,08,0a,35,03,19,00,08,/

                             09,00,06,35,09,09,65,6e,09,00,6a,09,01,00,09,00,/

                             09,35,08,35,06,19,11,06,09,01,00,09,01,00,25,03,/

                             46,54,50

; @CESYSGEN ENDIF CE_MODULES_BTD

; @CESYSGEN ENDIF SERVERS_MODULES_OBEXFILE

 

 

; @CESYSGEN IF SERVERS_MODULES_OBEXEXEC

;[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Obex/Services/{f9ec7bc4-953c-11d2-984e-525400dc9e09}]

;    "Server"="obexexec.dll"

; @CESYSGEN ENDIF SERVERS_MODULES_OBEXEXEC

 

    修改后:

; @CESYSGEN IF SERVERS_MODULES_OBEXFILE

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Obex/Services/{f9ec7bc4-953c-11d2-984e-525400dc9e09}]

    "BaseDir"="//Temp//Ftp"

    "Server"="obexfile.dll"

; @CESYSGEN IF CE_MODULES_BTD

 "BluetoothSdpRecord"=hex:35,41,09,00,01,35,03,19,11,06,09,00,04,35,11,35,/

                             03,19,01,00,35,05,19,00,03,08,0a,35,03,19,00,08,/

                             09,00,06,35,09,09,65,6e,09,00,6a,09,01,00,09,00,/

                             09,35,08,35,06,19,11,06,09,01,00,09,01,00,25,03,/

                             46,54,50

;下面要添加的

    "CanWrite" = dword:1 

    "Authenticate" = dword:0 

    "Password" = "0000 " 

    "Transport Authenticate"=dword:0

; @CESYSGEN ENDIF CE_MODULES_BTD

; @CESYSGEN ENDIF SERVERS_MODULES_OBEXFILE

 

<4>重新编译工程

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/flowlight/archive/2008/05/31/2500031.aspx

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gooogleman/archive/2010/01/27/5261085.aspx

 

bt porting

bt启动过程:

中断初始化:

FM1182串口注册表:

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial2]

"Dll"="AtlasSerial.Dll"

"IoBase"=dword:ab020000

"Tsp"="Unimodem.dll"

"Prefix"="COM"

"Order"=dword:00000001

"Index"=dword:00000009

"FriendlyName"="Serial Cable on USP2 Atlas Debugging Board"

"IGUID"="{fb3d8a97-b0f0-4186-8f66-feb4fb3ea660}"

 

FM1182串口中断初始化信息:Serial: port(2) intr (23)

 

BT串口注册表:

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial5]

"Dll"="AtlasSerial.Dll"

"IoBase"=dword:ab050000

"Tsp"="Unimodem.dll"

"Prefix"="COM"

"Order"=dword:00000001

"Index"=dword:00000008

"FriendlyName"="Serial Cable on USP5 Atlas Debugging Board"

 

BT串口中断初始化:Serial: port(5) intr (25)

 

FM1182驱动active:+FM1182CTRL::DLL_PROCESS_ATTACH

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/FM1182]

"Prefix"="FME"

"Dll"="FM1182CTRL.dll"

"Order"=dword:00000001

"Index"=dword:00000001

 

CSRSERIAL驱动初始化:CSR_DllEntry DLL_PROCESS_ATTACH 

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/SerialCSR]

"Prefix"="CSR"

"Dll"="SerialCSR.Dll"

"Order"=dword:00000001

"Index"=dword:00000001

 

BT的初始化:bthp int HCI_OpenConnection

[HKEY_LOCAL_MACHINE/Services/BTSVC]

"Dll"="BTSVC.Dll"

"Order"=dword:00000009

"Keep"=dword:00000001

"Prefix"="BTS"

"Index"=dword:00000001

 

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Bluetooth/HCI]

"flags"=dword:00000004

"Name"="CSR1:"

"baud"=dword:0001c200

"Driver"="bthcsr.dll"

"resetdelay"=dword:00001388

 

HCI_OpenConnection时启动CSR_Open;CSR_OPEN中打开逻辑串口8,调用PSConfig将PSR文件里的参数值写入到BT中去,然后建立HCI通过CSRSERIAL.DLL的串口8至BT模块的通道.

 

PhoneLink启动时打开FME1,调用fm1182的FME_OPEN,会打开COM9,设置好COM9的状态,然后调用FM1182PowerOn打开FM1182的电源,写入FM1182的初始化值.

同时调用wavedev的IOCTL(WODM_BT_SCO_AUDIO_CONTROL),参数为0,设置声音路由为正常的声音路由

 

CSR BT的port过程

CSR BT分为BC4-ROM和BC4—FLASH,而bc4_rom又分带EEPROM和不带EEPROM的。

带EEPROM的

 BC04 No EEPROM :

1. Please include bthbcsp.dll in the OS image.

2. Add "Bluetooth Stack with Universal Loadable Driver" 

3. Write following infomation in reg.

[HKEY_LOCAL_MACHINE/Software/Microsoft/Bluetooth/Transports/BuiltIn/1]

 "Driver"="bthbcsp.dll"

 "flags"=dword:4

     "name"="COM7:"  ; Please set this value to correct com port name

 "baud"=dword:1c200

 "resetdelay"=dword:1388

 "Priority256"=dword:132

 "PacketSize"=dword:192

 "SerialTimeoutConstant"=dword:1000

 "SerialIntervelTimeout"=dword:ffffffff

 "ReopenDelay"=dword:100

 "FlashChip"=dword:0   ;   1: flash 0:no flash

4. If the csr chip without EEPRON, please include PSConfig.psr in OS image(under //windows)

5. If Bluetooth started successful. The Microsoft Bluetooth manager can work well now.

 

然后按照sirf的BT补丁包bluetooth_evb_20070201rel.zip里面的描述更新BSP和CSP,同时更新注册表和BIB文件,

另外需要按电路图BT使用物理的COM5口,逻辑的COM8口,FM1182使用物理的COM2口,逻辑的COM9口更改CPP和注册表等文件同步即可。

 

 

BC04 with EEPROM :

  Add "Bluetooth Stack with Integrated CSR Chip Driver"

 

 

bluetooth超时:PSCONFIGCE.CPP文件137行改为:

     if((GetTickCount() - giStartTime > LINKTIMEOUT) && !gbLinked)

                    uBCSP_TXQueue.CommandNumber = EXIT_STATE;

 

 

  if(GetTickCount() - giStartTime > 20000)

  {

   uBCSP_TXQueue.CommandNumber = EXIT_STATE;

   RETAILMSG(1, (TEXT("------bluetooth init config fail!!!/r/n")));

  }

 

    if(ubcsp_config.link_establishment_state > 0)

          gbLinked = TRUE;

     超过20S时退出蓝牙config;

 

 

wavemain.cpp中注释掉671行,758,764行,注释掉BspWavRt5610.cpp第28行。

 

 

 

各位同仁,小弟最近要在wince平台上做CSR BlueCore4-ROM 的蓝牙驱动,用的是UART接BlueCore4-ROM,

初次接触无线通讯模块,不知在wince平台上开发应当注意什么?是不是只要通过串口把蓝牙初始化就可以了。需不需要重新定义流设备驱动,另外,注册表那边应当不要做太大的改动吧。恳请各位过来人指点一二。先谢谢各位了。

另外:找到一些人的开发流程,如下:

        1、每个产品的蓝牙方案都已经确立了对应的蓝牙通讯方式:uart或者usb,因此,作为蓝牙开发的第一步,首先要在开发BSP阶段就驱动uart或者usb端口 。能够保证所选用的端口能够正常的通讯。这里的驱动,是一般的wince驱动。

        2、编译内核,增加蓝牙功能,打开Platform Builder, 我们可以在networking—personal area network(PAN)下面选择bluetooth的Transport Driver 

下面有3种驱动:UART、USB和UNIV三种,虽然wince自带了CSR的transport驱动,但最终还是调用UART驱动:

这一部分可能需要修改部分代码,具体代码分布在下面这个目录中: PUBLIC/COMMON/OAK/DRIVERS/BLUETOOTH/TRANSPORTS ,其中主要涉及的函数为:HCI_OpenConnection(),HCI_CloseConnection(),HCI_SetCallback()。

        3、在编译内核的时候,如果所选用的版本包含了profile,可以把需要的profile加入所裁减的内核,然后增加profile所对应的注册表项,该表项可以在对应的平台的帮助文件里面找到

        4、编译内核后,下载就可以测试了。从上面可以看到,开发wince的蓝牙功能,只需要修改transport驱动,注册表,另外,如果所选用的wince平台只是内核(wince4.0 or wince5.0),微软没有做蓝牙的UI,所以,开发用户可以根据mobile的UI来制作自己的UI

 

FM1182的SPKOUT音量调节,修改1E3E这个参数,现在是1E3E=0200,(相当于放大2倍),加大时,输出也加大,可以调节为0280,0300,0380等

坚哥 19:28:44

FM1182的MIC的音量可以调节1E3D,现在0300,可以加大,0380,0400,0500,0600等,合适就好

FM1182的SPKOUT音量调节,修改1E3E这个参数,现在是1E3E=0200,(相当于放大2倍),加大时,输出也加大,可以调节为0280,0300,0380等

坚哥 19:28:44

FM1182的MIC的音量可以调节1E3D,现在0300,可以加大,0380,0400,0500,0600等,合适就好

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zjh824/archive/2009/10/28/4737884.aspx

你可能感兴趣的:([转]wince 蓝牙)