下面是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