打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
BLE
风之library
>《蓝牙》
2015.02.06
关注
七、换个硬件看看
1、使用购买的
CC2540
模块实验,修改了Debug接口,能够采用TI的CCDebug下载光盘自带的程序测试正常。
光盘例程使用
BLE-Stack
1.1修改,分别下载KebFob和HostAppTest。
2、下载
BLE-Stack
1.21中例程KebFob和HostAppTest测试连接过程也正常。
图1:测试UUID读取关键字成功,KeyFob的电量(百分比)
图2:测试Adv.Commands 读取RSSI值
3、使用
BLE-Stack
1.1例程中的虚拟键盘,测试连接失败(光盘和协议栈原始例程都测试了),用HostAppTest测试搜索到的设备地址与待绑定的地址是匹配的。
待做的事情:
1)搞清楚3连接过程中出现的问题。
2)花时间去熟悉API函数以及相关的结构体。
八、开始做硬件了
1、参考《CC2540EM_discrete_schematic.pdf 》绘制
CC2540
无线模块原理图。
1)引出P0(8pin)、P1(8pin)、P2(3pin)、电源(2pin)、USB(2pin)、RESET(1pin)共计24pin。
2)不知引脚排列是否合理,目前的排列有利于模块布线。
见附件:
CC2540
_BLE_RF.pdf
2、参考《
CC2540
_MiniDK_SCHEMATIC.pdf 》和购买套件的底板原理图绘制
CC2540
底板原理图。
1)添加低功耗加速度传感器CMA3000(用于计步等,可缺省不焊接)。
2)添加CP2102用于USB转串口,通过UART打印字符便于调试等。
3)可选USB供电、CCdebug供电、CR2032纽扣电池供电。
4)设计中多处采用0R电阻,便于二次修改。
见附件:
CC2540
Board.pdf
3、阅读BLE的宣传资料,觉得不适合在底板上添加传统的传感器,不知道是否需要添加传感器?
见附件:TI BLE @ CES.pdf
九、闲置阶段,随便玩玩
1、原理图修改、检查:
1)添加PCB天线和外置天线。
2)添加OLED显示、电源指示灯、添加拨码开关。
2、OLED选择了一款内置升压电路的型号与之前的像素一致:
1)选取内置升压的OLED省去了升压电路的设计。
2)实际经过调研科选择
TPS61040
作为升压芯片,满足需求(考虑到电感、续流二极管等物料不好采购的问题)。
3、确定底板上物料在ERP中的型号,主要的器件目前都已经确定、包括接插件。
4、调试
CC2540
的UART,调试OK能够打印信息:
1)
发现在Advertising过程中会出错(测试了多种发送情况,确认是Advertising时RF引起的)。
2)使用DMA、ISR都是同样的情况。
十、开始玩弄她吧
1、
CC2540
通信建立过程调试:
1)找到UART在advertising过程中发送数据乱码的问题,使能低功耗(PWRMGR_BATTERY)会伴随主时钟的切换,导致波特率不稳定照成的,关闭低功耗数据正常,有待进步一学习,暂时不做深入研究。
2)在调通串口的基础上实现基本的通信建立过程调试,主要是通过peripheral、central的例子,实现了PC通过串口向peripheral设备发送数据通过无线被central设备接收再通过串口传输至另一台PC。
Peripheral(Send):
01 82 fe 07 00 05 11 11 11 11 11
01 82 fe 07 00 05 22 22 22 22 22
Central(Receive):
04 FF 0D 1B 05 00 01 00 07 07 00 11 11 11 11 11
04 FF 0D 1B 05 00 01 00 07 07 00 22 22 22 22 22
以上参考:附件一、附件二。
2、Blood Pressure例程测试:
1)在新版本BLE-Stack1.21中未提供BP的Collector,只有一个BP Sensor,所以还需要花点时间建立Collector的工程。
2)在TI Wiki上找到了关于BLE-Stack1.1关于BP演示的说明,需要一个BleHealthDemo(C#开发)上位机的配合,Collector是工作在Network Process模式下。
测试效果参考:附件三。
3、开会提出的问题小结:
1)为什么要有Proflie?
A:Profile由蓝牙SIG发布,描述了不同设备使用蓝牙协议栈时的差异性和统一性。比如一个血压计,大家都按照这个BP Profile、BP Service来进行规范定义,那么一个BP收集器就能够收集不同厂家生产的BP Sensor测量的血压值等。如果没有Profile关有协议那么大家都只能闭门造车,我生产的手机带蓝牙功能,那么你使用的蓝牙耳机就必须是我生产的,因为那些数据格式、设备描述等只有我知道,所以才有音频Profile(A2DP)之后大家按照这个规范去严格定义自己的设备就可以了。
2)BT流行版本的Profile比较:
我所理解的在BT2.0、BT2.1、BT3.0这些版本能够使用传统Profile,而4.0之后会多出一部分GATT-Basic规范Profile。
这里我们需要理解的是:
BT2.0 = Core Version2.0 +EDR
BT2.1 = Core Version2.1 +EDR
BT3.0 = Core Version3.0 +HS
BT4.0 = Core Version4.0 +BLE = BR/EDR + BLE(这里和以往不同,V4.0有两个核心,
CC2540
只有BLE)
对于血压计:
V4.0 版本使用BP Profile(Blood Pressure Profile)+ BP Service
V4.0 之前版本使用HD Profile(Human Device Profile)
HD Profile(健康规范)包括 BP Profile(血压规范) + HT Profile(温度规范)+ ……
这些规范可以从官方网站查看:
https://www.bluetooth.org/Technical/Specifications/adopted.htm
以上参考:附件四、附件五。
3、附件:
附件一
附件二
附件三
附件四
附件五
十一、血压计分析
1、Blood Pressure示例程序占用资源(256K Flash + 8K RAM):
2、Blood Pressure Profile规定的数据格式:
3、Profile 定义了数据格式、过程、服务的UUID等:
以上这些会在协议属性表中体现,而这个属性表会通过相关API将他作为参数传给协议栈。
static gattAttribute_t bloodPressureAttrTbl[] =
{
// BloodPressure Service
{
{ ATT_BT_UUID_SIZE, primaryServiceUUID }, /* type */
GATT_PERMIT_READ, /* permissions */
0, /* handle */
(uint8 *)&bloodPressureService /* pValue */
},
// 1. Characteristic Declaration
{
{ ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ,
0,
&bloodPressureTempProps
},
// 2. Characteristic Value
{
{ ATT_BT_UUID_SIZE, bloodPressureTempUUID },
0, //return READ_NOT_PERMITTED
0,
&bloodPressureTemp
},
// 3.Characteristic Configuration
{
{ ATT_BT_UUID_SIZE, clientCharCfgUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8 *)&bloodPressureMeasConfig
},
// 4.Presentation Format
{
{ ATT_BT_UUID_SIZE, charFormatUUID },
GATT_PERMIT_READ,
0,
(uint8 *)&bloodPressureTempFormat
},
//////////////////////////////////////////////
// IMMEDIATE MEASUREMENT
//////////////////////////////////////////////
// 5.Characteristic Declaration
{
{ ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ,
0,
&bloodPressureImeasProps
},
// 6.Characteristic Value
{
{ ATT_BT_UUID_SIZE, bloodPressureImeasUUID },
0, //return READ_NOT_PERMITTED
0,
&bloodPressureImeas
},
// 7.Characteristic Configuration
{
{ ATT_BT_UUID_SIZE, clientCharCfgUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8 *)&bloodPressureIMeasConfig
},
//////////////////////////////////////////////
// FEATURE
//////////////////////////////////////////////
// 8.Characteristic Declaration
{
{ ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ,
0,
&bpFeatureProps
},
// 9.Characteristic Value
{
{ ATT_BT_UUID_SIZE, bpFeatureUUID },
GATT_PERMIT_READ,
0,
(uint8 *)&bpFeature
},
};
好吧,第一章分享到这里结束了,只是简简单单的帮助初学者入门,权当玩玩,专业开发者请忽略。不排除自己理解和排版造成的问题,请自行判断,谢谢。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
[转载]蓝牙4.0 BLE 数据传输(三)
BLE GATT规范中关于UUID与属性的详细解析
simpleBLECentral.C简单的翻译一下,方便编程,特此记录
关于Android 5.x的低功耗蓝牙BLE开发简介
项目五 蓝牙无线通信技术应用设计
Android Kotlin&BLE(低功耗蓝牙) 笔记
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×