下面是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/csu_yang/archive/2010/09/28/5912659.aspx