没有合适的资源?快使用搜索试试~ 我知道了~
基于CSR硬件的蓝牙开发文档

温馨提示


试读
37页
我毕设对各种蓝牙资料做的总结,很多是对CSR公司技术资料的翻译整理。还包括一些应用方案,比较详细,希望对大家有所帮助
资源推荐
资源详情
资源评论















第一部分 BTM02E-08 蓝牙模块
一、 模块的基本参数
1、 特性
支持蓝牙协议 1.1、1.2
输出功率等级为 class2
支持 USB1.1 和 UART 串口
低电压供电 2.7V~3.6V
标准供电电压 3.3V
内置 8MbitFLASH 存储器
尺寸: mm
2、 描述
采用 CSR 公司的蓝牙芯片作为核心芯片,并配以 8MbitFLASH 存储器,SPI 接口,UART
接口,USB 接口,PCM 音频接口,16MHz 晶振,带通滤波器,天线匹配电路等。
并不是所有的应用都适合嵌入式应用,因为应用程序和固件栈必需共享片上 RAM,以
RFCOMM 为基础的应用可用的 RAM 大概为几百字节。应用代码必需控制在 32K 字以内。
二、 BlueCore2-External 蓝牙芯片工作原理
1、 关键特性
片外 8Mbit 的存储器可以灵活的用于系统解决方案。
片上 32Kbit 的 RAM 用来实现蓝牙无线传输中数据交换的缓冲
4M 波特率的异步串行接口
片上可运行多种协议栈:标准 HCI 协议栈,全部内嵌的 RFCOMM 协议栈等
96Ball-VFBGA 封装

2、管脚使用
USB 接口不用时应接地
所有 IO 管脚被配置成输入时,复位后将变成弱下拉
不用的 AIO(可编程模拟 IO)管脚不使用时应该悬空
3、 内部功能模块
USB:用来与其他数字设备的通用接口,BlueCore02 扮演外围设备角色,来回应主机的请
求
SPI(异步串行接口):用来与其它数字设备的接口,SPI 口可以用来调试软件和烧写外部
FLASH 存储器
UART:与其他设备通信的通用同步串口
可编程 IO:共有 15 个可编程管脚(12 个数字的和 3 个模拟的),有运行在片上的固件来
控制
4、 CSR 软件栈
CSR 为 BlueCore2 提供了片上运行的固件(Firmware),片上运行的协议栈仍需 HCI 的支
持
1)HCI Stack
该 Firmware 提供了一组特性及支持相应特性的 HCI
在标准蓝牙协议上做了扩展:
支持蓝牙串口协议——BCSP,一种以 UART 为物理层,可靠的特有协议(可选)
提供了额外的 50 个系列 HCI 指令
可以访问可编程 IO 端口
访问蓝牙时钟
访问固件上的随机数产生器
动态配置 UART(波特率,校验,数据位)
无线传输使能:一个简单的命令,与一个专门的物理开关有关,确定 radio 是否可以传
输数据
可以读取芯片外部管脚上的电压,可以运行在 VM 或主机上来电池的监测
提供一组 BCCMD 命令,来访问片上的“persist store”,该数据库存储了器件的蓝牙地
址,器件 class,radio 配置,USB/DFU 常数等(Device Firmware Upgrade)
UART 上 break 命令的应用:用于重启,开机进入低功耗,唤醒主机
提供一组“radio test”或者 BIST 指令,直接控制片上的 radio
虚拟机。固件提供虚拟机环境,来运行应用代码。虚拟机需要 BlueLab 和内嵌协议
RFCOMM(或者 L2CAP,SDP),运行在 VM 上的协议可以完成通过可编程 IO 点亮
LED 的简单工作
2)BlueCore RFCOMM Stack 软件栈(将以 Firmware 的形式转载到片上)
直到 RFCOMM 层的协议都运行在片上
与主机接口:RS232,RFCOMM 协议(如何建立无线串口连接?)
服务发现协议
3)虚拟机栈
所有代码都在片上运行,代码在固件旁边运行(代码与固件并行运行)
用户可以呼叫固件完成各种操作
用户的应用代码与堆栈是分开的,防止对堆栈造成影响,可以随时修改应用代码
4) 面向应用的应用软件的编写
当更高层的蓝牙协议栈像固件一样在片上运行时,底层将会通过片上运行的一个 UART 的

驱动程序提供 L2CAP,RFCOMM,SDP 的 API 给高层
5、片外存储器
提供了 8M 位的存储空间,字长为 16 位。用来存储代码和配置数据
6、UART 接口
信号机制。UART 接口为与其他串口器件提供了一种简单的机制。采用 RS232 协议电
平为 0V~VDD_PADS(IO 电路的电压),要求额外的电平转换芯片。
四种信号中,RX 和 TX 用来传输数据,RTS 和 CTS 可以用来做流控(低电平有效),采用
CMOS 工艺。UART 的波特率等参数设置有软件来完成。
复位。UART 接口可以发送一 BREAK 信号复位 BlueCore 芯片,即 RX 信号线被置低
的时间超过在 PS 中的 Key:PSKEY_HOST_IO_UART_RESET_TIMEOUT 设定的值,
可以用来主机复位系统。同样道理,芯片也可以发送一 BREAK 信号来唤醒主机。
波 特 率 。 可 以 通 过 公 式 计 算 结 果 设 置 任 意 波 特 率 , 也 可 以 设 置 标 准 波 特 率 。
PSKEY_UART_BAUD_RATE(0X204)

7、SPI(串行外围设备接口)
BlueCore 使用有 16 位数据位和 16 位地址位的 SPI,当处理器运行时或被终止时将会通过
SPI 交换数据
指令周期。芯片为从设备,从 SPI_MOSI 接受命令,从 SPI_MISO 发送数据
SPI 复位后,CSB 必需置低。写入时,MOSI 上的数据在时钟的上升沿写入 BlueCore。读出
时,在 CLK 的下降沿读出。CSB 变高时结束。
写入过程。线串行写入 8 位的命令字(写指令为 00000010),接着是 16 位地址,然
后 16 位的数据写入该地址中。芯片内地址自动加 1,接下来的数据将连续的存储于
FLASH 中。
读出过程。同上,先写入读命令字 C[15:0](00000011),然后写入读地址 A[15:0],
在 MISO 上将输出 16 位的校验字 T[15:0],跟着输出 16 位数据 D[15:0]。校验字包括写
入的命令字[7:0],和读出数据对应的地址[15:8],可以有效克服读出错误地址的内容。
读过程地址自动加 1.
8、PIO
可由片上运行的应用程序或者 HCI 来访问。
PIO[0]/RXEN。复用端。由 PS KEY 的 PSKEY_TX/RX_PIO_CONTROL(0x209)来决定
可以用来作为 radio 前端的传输开关。
PIO[2]/USB_PULL_UP(1)。复用端。UART 中,可用来做 PIO。USB 中,用来做上拉。
外部 RAM 应用中,用来做片选。

PIO[3]/USB_WAKE_UP 。 USB 中 , 由 PS KEY 中 的
PSKEY_USB_PIO_WAKEUP(0x2cf)
PIO[4]/USB_ON(1)。
PIO[5]/USB_DETACH(1)
PIO[6]/CLK_REQ。由 PS Key 中的 PSKEY_CLOCK_REQUEST_ENABLE(0x246)决定。
芯片处于深度睡眠时,管脚可以接低,当有一个时钟请求时接高,时钟必须有 4ms 的
上升沿。
9、USB
芯片包括一全速的 USB 接口(12Mbits/s),能够直接驱动 USB 电缆而无需 USB 收发芯片。
USB 的数据线 D+和 D-连接到 USB 内部的 USB IO缓冲器中,因此输出阻抗较低。为了
与USB电缆的特性阻抗相匹配,在D+和D-上必须串联电阻。
USB协议规定USB数据线输出的最小高电平为2.8V,为满足此要求,
VDD_USB 供电端至少为3.1V
自供电模式。电路将由自己的供电系统供电,而不是来自于USB电缆的VBU
S(5V),这种模式VBUS只会提供很小的电流(小于0.5mA)。要求V
BUS要经过一电阻网络分压,以便于当VBUS变高时(连接到了PC)Bl
ueCore可以检测到。
USB_ON 端可以由任一 PIO 来充当,但是必需在 PSKEY_USB_PIO_VBUS 中注明所选
的 PIO 号
Detach 和 Wake_up 信号
BlueCore 可以提供两个额外的信号给主机:USB_DETACH 和 USBWAKE_UP。这两个
而外的信号在 USB 电缆和协议中是不存在的,但是在嵌入式系统应用中却非常有用,
因为嵌入式应用中实际的 USB 电缆是不可见的(直接用 PCB 布线相连),所以不知
道什么时候 USB 电缆应该建立连接。
Usb_detach:置高时将会使 USB_D+和 USB_D-变为高组态,相当于断开总线连接。置
低时将恢复连接,并等待主机恢复。
USB_WAKE_UP:用来唤醒主机。只有 USB_DETACH 有效时才有意义,置为高电平
剩余36页未读,继续阅读

liu0829
- 粉丝: 2
- 资源: 4
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
- 3
前往页