本书全面介绍物联网工程的蓝牙4.0低功耗开发技术。全书分4篇,共18章,其中包括低功耗蓝牙、蓝牙4.0 BLE软件开发平台搭建、蓝牙4.0 BLE硬件开发平台搭建、定时器实验、串口实验、ADC实验、睡眠与唤醒实验等内容。
2010年,集传统蓝牙、低功耗蓝牙和高速蓝牙技术三位一体的蓝牙4.0发布,这3个功能可以组合也可以单独使用。蓝牙4.0规范的核心是低功耗技术(Low Energy),即蓝牙4.0 BLE。蓝牙4.0是3.0的升级版本,特点是省电、成本低、3ms小延迟、超长有效连接距离、AES128加密等,该技术最大特点是拥有超低的运行功耗和待机功耗,一颗纽扣电池可以连续工作数年之久,可应用于对成本和功耗都有严格要求的无线方案,如手机等移动设备、物联网领域,且在几乎能保证节点永久工作时,连接节点不会有丝毫的延迟。这种永久打开且瞬间连接的能力非普通蓝牙或其他无线连接可以比拟。
由于近年来智能手机(Smart Phone)的迅速普及,君不见大街小巷、地铁公交,多少人在低头刷屏,手机上的各种应用如雨后春笋,带动着各种手机应用开发一片欣欣向荣,手机越来越成为“我的物联网(Internet of My Things)”的中枢设备。目前几乎百分之百的智能手机都标配了蓝牙3.0,而随着2010年蓝牙4.0的发布,目前iPhone 4S、iPhone 5以及三星Gallaxy S3、S4、Note 2都已经支持蓝牙4.0,刚刚发布不久的安卓4.3也提供了蓝牙4.0的API接口。由于蓝牙4.0是蓝牙3.0的升级版本且兼容3.0,并提供了低功耗应用的蓝牙4.0 BLE,可以预见,不久的将来,在物联网领域蓝牙4.0将成为一颗璀璨的新星,在医疗、生活、智能家居,尤其是“我的物联网”中发挥举足轻重的作用。
物联网技术的特点就是物物相联,核心就是感知万物,终极目标就是要把分布于世界上的万事万物,通过网络互联,使得网络具有感知万物的能力。但这里有一个核心问题需要解决——电能,没有电就谈不上互联,更谈不上感知。也就是说,分布在宇宙空间小到一粒沙子,大到电网、大坝,要让这些事物具有持续的感知能力,持续长久的电能供应必不可少。为此低功耗设计势在必行,也顺应当前绿色、健康、环保理念。显然,作为物联网的重要技术,蓝牙4.0 BLE设计完全能满足以上要求。本书特点:
1. 深入浅出、循序渐进、注重细节本书在内容编排上采用模块化、进阶式的安排,由浅入深,由易到难,从构建系统软、硬件平台开始,结合CC2540芯片原理,从蓝牙4.0 BLE基础实验慢慢深入到蓝牙4.0 BLE协议栈再到项目实战,从最简单的点亮一盏小小的LED,到复杂的蓝牙USB综合开发应用,由浅入深,让初学者从零基础开始,慢慢深入了解和学习蓝牙4.0 BLE。本书详尽地描述了开发和设计的整个过程,注重细节,力求浅显易懂,包括各模块的电路连接原理,甚至实验需用到的如Nokia 5110液晶显示扩展板、CCDBG一扩二小板,也都详细描述并给出电路图,力求真实效果再现。只要认真学习本书,相信每位读者最后都能创作出自己的作品。
2. 理论联系实践
对于第1篇和第2篇,只要具备基本的8051单片机基础即可学习和掌握。对于第3篇,则需要相关的蓝牙理论知识,否则直接学习会碰到很多术语不懂, 理解一些过程会很困难。
物联网技术实践教程——基于蓝牙4
前言为此,我们首先详细地描述蓝牙4.0 BLE通信协议,之后再结合TI蓝牙4.0 BLE协议栈讲解,并在项目中将蓝牙理论与实践结合,力求理论充分联系实际,以加深读者的理解和掌握。
3. 以“我”为中心
本书把作者整个蓝牙学习和开发过程的感想、体会以及对读者的希望都真实记录下来,这个过程当然会走些弯路,但这些弯路或者一笔带过,或者忽略,本书力求呈现给读者一条“宽阔笔直的”蓝牙学习之路。虽然是以作者为中心,通过作者的学习和实践来详细地展现整个蓝牙4.0 BLE学习和开发的过程,但其实也希望读者以自己为中心,主动积极地参与项目实践,一步步构建自己的蓝牙项目。
4. 任务驱动
本书以任务驱动方式讲解,每次实验都提出具体任务,便于教师安排学生实验,也便于读者自行实验之后再对比。每个实验都配以相关图文解释,以激发读者学习热情,力求达到快速理解的效果,所有效果呈现图片都是程序正确运行时现场拍摄的,以力求代码的准确、无误。实验一个接一个由简单到复杂,循序渐进,遵从学习的规律。
5. 学习成本低
一般物联网实验工具箱动辄几千元、几万元,让广大有志学习物联网技术的同学和工程师望而却步。而本书的所有实验仅仅建立在两块CC2540开发板上,外加CCDBG仿真器和串口即可轻松调试,且只要稍加修改配置,实验可在任何CC2540开发板上轻松实现。目前各款CC2540开发板的淘宝价格大致二三百元不等。随着蓝牙4.0开发应用的迅速增长,成本还将进一步下降,由于CC2540开发板设计都有非常成熟的现成方案,不考虑时间,甚至你自己都可以设计一个,这更可以锻炼初学者的硬件动手能力,这样成本还更低。低门槛的学习和开发成本将更有利于广大学生和工程师学习和开发蓝牙4.0 BLE。学习本书,大家完全可以开发出具有自己特色的蓝牙设备,再配上你的手机,让你的手机通过蓝牙来感知世界,认真地体会物联网。
物联网、嵌入式的学习是痛并快乐的,走过很多弯路,有过一些迷惑,常常为了一个BUG调试通宵,但当调试成功的一刻又是如此地喜悦,所以我喜欢写自己的体会和感想,也愿意与读者分享。
借用一句格言“技术的学习是有限的,奉献的精神是无限的”,现将本书奉献给广大从事单片机、嵌入式、物联网和蓝牙学习开发的学子以及奋斗在一线的工程师们,希望本书能对你们的学习、开发、设计有所帮助,让你们少走弯路,我走过的弯路你们就不要再走了,^_^。
本书由浙江工业大学的毛剑飞老师和萧山电大的周雪老师共同主编并统稿,浙江工业大学的毛科技以及萧山电大的竺超明、陈立建参加了部分章节的编写。限于编者水平,出错之处在所难免,恳请各位读者给予批评指正,联系方式:mjf@zjut.edu.cn。
本书受浙江省自然科学基金(LY13F010010)和浙江工业大学重点教材建设项目资助,在此表示感谢;再次感谢清华大学出版社的白立军编辑对出版本书的关心和支持;感谢家人的理解与支持;同时也要感谢购买本书的读者——你。
毛剑飞
2015年6月
于浙江工业大学屏峰
第1篇概述及实验平台
第1章低功耗蓝牙3
1.1蓝牙与物联网3
1.2低功耗蓝牙与“我的物联网”5
1.3低功耗蓝牙概述8
1.4低功耗蓝牙的特点9
第2章蓝牙4.0 BLE软件开发平台搭建11
2.1选择IAR 8051的理由11
2.2IAR 80518.3的下载、安装和破解12
2.2.1下载IAR 80518.312
2.2.2安装IAR 80518.313
2.2.3破解IAR 80518.317
2.3IAR 8051集成开发环境简介21
2.4IAR 8051 C/C++22
2.5安装相关支持软件22
第3章蓝牙4.0 BLE硬件开发平台搭建24
3.1选择世嵌开发板的理由24
3.2世嵌最简配置开发套件25
3.2.1核心板WB2540MVA26
3.2.2底板WX253028
3.2.3仿真器CCDBG33
3.3搭建实验硬件环境35
3.4创建工程——点亮LED37
第2篇基 础 实 验
第4章GPIO实验534.1LED实验: 打开所有LED53
4.1.1任务要求及效果呈现53
物联网技术实践教程——基于蓝牙4
目录4.1.2实验原理54
4.1.3实验步骤56
4.1.4源码清单59
4.2LED实验: 让LED一闪一闪59
4.2.1任务要求及效果呈现59
4.2.2实验原理60
4.2.3源码清单60
4.3LED实验: 实现流水灯61
4.3.1任务要求及效果呈现61
4.3.2实验原理61
4.3.3源码清单62
4.4蜂鸣器实验: 驱动蜂鸣器发声63
4.4.1任务要求及效果呈现63
4.4.2实验原理63
4.4.3源码清单65
4.5按键实验: 按键控制LED66
4.5.1任务要求及效果呈现66
4.5.2实验原理66
4.5.3源码清单69
4.6按键实验: 按键控制LED (中断方式)71
4.6.1任务要求及效果呈现71
4.6.2实验原理71
4.6.3源码清单74
第5章定时器实验77
5.1定时器实验: 流水灯(查询方式)77
5.1.1任务要求及效果呈现77
5.1.2实验原理77
5.1.3源码清单81
5.2定时器实验: 流水灯(中断方式)83
5.2.1任务要求及效果呈现83
5.2.2实验原理83
5.2.3源码清单84
5.3定时器实验: PWM控制蜂鸣器86
5.3.1任务要求及效果呈现86
5.3.2实验原理87
5.3.3示波器与开发板连接90
5.3.4源码清单91
第6章串口实验97
6.1串口发送实验: 打印欢迎信息97
6.1.1任务要求及效果呈现97
6.1.2实验原理97
6.1.3硬件连接102
6.1.4源码清单103
6.2串口发送: 用printf打印系统信息104
6.2.1任务要求及效果呈现104
6.2.2实验原理104
6.2.3源码清单106
6.3串口收发: 用C标准库输入/输出函数107
6.3.1任务要求及效果呈现108
6.3.2实验原理108
6.3.3源码清单109
6.4串口收发: 中断方式112
6.4.1任务要求及效果呈现113
6.4.2实验原理113
6.4.3源码清单116
第7章ADC实验119
7.1测量芯片内部温度和供电电压119
7.1.1任务要求及效果呈现119
7.1.2实验原理120
7.1.3源码清单124
7.2测量光照强度126
7.2.1任务要求及效果呈现127
7.2.2实验原理127
7.2.3源码清单128
第8章睡眠与唤醒实验130
8.1外部中断唤醒130
8.1.1任务要求及效果呈现130
8.1.2实验原理131
8.1.3源码清单134
8.2定时器唤醒139
8.2.1任务要求及效果呈现139
8.2.2实验原理140
8.2.3源码清单142
第9章看门狗实验、Flash读写实验144
9.1看门狗实验144
9.1.1任务要求及效果呈现144
9.1.2实验原理145
9.1.3源码清单146
9.2Flash读写实验147
9.2.1任务要求及效果呈现148
9.2.2实验原理148
9.2.3源码清单150
第10章总线实验153
10.1单总线实验(DS18B20驱动)153
10.1.1任务要求及效果呈现153
10.1.2实验原理154
10.1.3源码清单157
10.2SPI总线实验(诺基亚5110液晶屏驱动)161
10.2.1任务要求及效果呈现161
10.2.2实验原理163
10.2.3源码清单171
第3篇BLE协议栈
第11章蓝牙4.0协议栈基础19711.1BLE协议栈整体构架197
11.2物理层198
11.3链路层198
11.3.1链路层状态机198
11.3.2链路层报文200
11.3.3设备发现200
11.3.4关于广播202
11.3.5连接过程202
11.3.6数据发送205
11.3.7管理连接205
11.4主机/控制器接口206
11.4.1物理接口与逻辑接口206
11.4.2控制器的配置206
11.4.3广播与观察207
11.4.4发起连接208
11.4.5连接管理210
11.5逻辑链路控制和适配协议210
11.6属性协议层、通用属性配置文件层210
11.6.1服务器与客户端模型210
11.6.2属性211
11.6.3属性的访问213
11.6.4服务213
11.6.5特性215
11.6.6属性协议216
11.6.7通用属性规范218
11.7安全管理层220
11.7.1安全概念220
11.7.2配对和绑定221
11.7.3数据签名221
11.8通用访问配置文件层222
11.8.1GAP角色222
11.8.2模式和规程222
11.8.3广播模式和观察规程223
11.8.4可发现性223
11.8.5可连接性224
11.8.6绑定226
第12章TI蓝牙协议栈开发平台227
12.1BLE协议栈开发平台配置227
12.2BLE协议栈软件开发框架228
12.3协议栈应用程序运行机理229
12.3.1开始应用程序: main()230
12.3.2初始化系统: osal_init_system()231
12.3.3启动系统: osal_start_system()233
12.3.4系统运行机理235
12.4OSAL操作系统抽象层236
12.4.1任务事件和事件处理236
12.4.2内存堆管理237
12.4.3OSAL消息237
12.5HAL硬件抽象层238
12.6BLE协议栈238
12.6.1通用访问配置文件239
12.6.2通用属性配置文件240
12.6.3GATT服务器应用程序241
12.7配置文件242
12.7.1GAP外围角色配置242
12.7.2GAP外围/广播多重角色配置243
12.7.3GAP Central Role Profile243
12.7.4GAP绑定管理器244
12.7.5简单属性配置文件245
12.7.6简单按键属性配置文件252
12.7.7设备信息服务253
12.7.8其他属性配置文件253
第13章蓝牙协议栈项目开发入门254
13.1简单BLE外围设备254
13.1.1项目配置254
13.1.2Linker Map文件257
13.1.3simpleBLEPeripheral.c源码分析258
13.2简单BLE中央设备273
13.2.1项目配置273
13.2.2Linker Map文件273
13.2.3simpleBLECentral.c源码分析274
第14章定制硬件抽象层281
14.1增加外设驱动281
14.2修改hal_board_cfg282
14.3修改hal_led284
14.4修改hal_key284
14.5增强UART功能286
14.6增加Nokia 5110液晶屏驱动294
第4篇BLE通信实验
第15章简单的蓝牙通信29715.1引言297
15.2搭建蓝牙通信实验平台298
15.3源码相关配置修改299
15.3.1修改Simple BLE Peripherial项目299
15.3.2修改Simple BLE Central项目301
15.4实验过程演示302
15.5实验: 实现自动连接和LED连接状态指示305
15.5.1任务要求及效果呈现305
15.5.2实验原理307
15.5.3源码修改308
第16章我的蓝牙感知器312
16.1控制LED312
16.1.1任务要求及效果呈现313
16.1.2实现外围设备315
16.1.3实现中央设备319
16.2感知外设CPU温度328
16.2.1任务要求及效果呈现329
16.2.2实现外围设备330
16.2.3实现中央设备333
16.3感知外设环境温度336
16.3.1任务要求及效果呈现337
16.3.2实现外围设备338
16.3.3实现中央设备342
16.4感知外设光照强度344
16.4.1任务要求及效果呈现344
16.4.2实现外围设备346
16.4.3实现中央设备350
16.5定时获取外设光照强度352
16.5.1任务要求及效果呈现352
16.5.2实现外围设备355
16.5.3实现中央设备362
16.6无线串口透传364
16.6.1任务要求及效果呈现364
16.6.2NPI模块原理与串口透传366
16.6.3实现外围设备368
16.6.4实现中央设备371
第17章蓝牙USB376
17.1iSensorHid(蓝牙键鼠)377
17.1.1任务要求及效果呈现377
17.1.2实现外围设备385
17.1.3实现中央设备390
17.2 iSensorCDC(蓝牙USB串口)395
17.2.1任务要求及效果呈现396
17.2.2实现外围设备398
17.2.3实现中央设备398
17.3iHostTest(网络处理机)400
17.3.1实现iHostTest400
17.3.2系统初始化402
17.3.3建立连接403
17.3.4测试GATT属性服务405
第18章蓝牙通信测试与支持414
18.1蓝牙协议分析仪414
18.2蓝牙支持417
参考文献420
图目录
图11物联网——感知世界3
图12蓝牙在医疗设备上的应用7
图13蓝牙防丢产品7
图14SENSORY的前端语音识别技术通过蓝牙耳机实现安全行驶8
图21IAR官方主页12
图22IAR产品下载目录13
图23IAR 80518.3评估版下载页面13
图24“IAR 80518.3下载任务”对话框13
图25EW80518303Autorun.exe自解压13
图26程序安装界面13
图27准备安装15
图28安装向导15
图29是否接受许可协议对话框15
图210自定义安装还是完全安装17
图211安装路径选择17
图212程序图标目录选择17
图213准备安装程序17
图214安装程序过程17
图215是否安装USB dongles驱动19
图216安装结束19
图217退出19
图218破解IAR 80518.319
图219License Manager界面19
图220编译错误20
图221增加一行“Z(DATA)VREG=087F”20
图222现在编译正确了20
图223IAR 8051集成开发环境22
图31世嵌科技官网24
图32CC2540蓝牙4.0低功耗最简配置开发板套件(2模块+2底板+1仿真器)25
图33WB2540MVA核心板26
图34WB2540MVA核心板机械尺寸和元件布局27
图35WX2530底板(绿色)+CC2540核心板(蓝色)28
图36开发板整体架构30
图37WX2530底板输入接口30
图38跳线使能USB接口31
图39仿真器接口封装32
物联网技术实践教程——基于蓝牙4
图 目 录图310仿真器灰排母座应朝板子外侧插入仿真接口32
图311CCDBG仿真器(上面虽未标明支持CC2540,但实际完全支持)34
图312某淘宝店推出的PL2303HX模块36
图313开发板与外配的硬件连接37
图314复制安装目录下的蓝牙协议栈到你的工作目录37
图315协议栈的项目范例37
图316复制得一个副本37
图317将项目改名37
图318项目文件目录39
图319项目文件目录41
图320修改mTest.eww文件41
图321新工程诞生41
图322移除原工程文件41
图323选择Options命令41
图324将常量和字符串置于RAM memory41
图325将输出的hex文件改为你喜欢的名字42
图326将Driver设置为Texas Instruments43
图327选择Add→AddFiles命令43
图328选中3个文件43
图329文件改名43
图330文件已经添加44
图331清空编辑区46
图332编写代码46
图333编译代码46
图334下载调试46
图335调试开始46
图336点亮绿灯46
图337设置断点47
图338启动不下载的调试48
图339调试开始48
图340调试运行到断点处48
图341单击step over图标49
图342调试光标进入下一行语句49
图41基础实验一效果54
图42LED原理54
图43打开项目并另存源文件57
图44将源文件改名并另存57
图45将另存的文件添加57
图46将mTest.c文件从项目编译链接中排除57
图47为mTestLedAllOpen.c编写代码58
图48让LED一闪一闪59
图49流水灯效果61
图410流水灯程序设计和调试界面62
图411驱动蜂鸣器发声63
图412蜂鸣器原理64
图413按键控制LED亮灭66
图414按键电路原理图67
图415按键按下和松开的电信号变化68
图416按键控制LED(中断方式)71
图51中断查询方式的定时流水灯77
图52中断方式的定时流水灯83
图53实验过程演示: 按下键2,黄灯亮(左图),释放,黄灯熄灭(右图)87
图54200Hz声音时的通道2和通道3的波形87
图552000Hz声音时的通道2和通道3的波形87
图56本人自购的示波器90
图57开发板与示波器连线90
图61打印欢迎信息97
图62CC2540串口与PC机串口的硬件连接103
图63串口输出系统硬件信息104
图64使用C标准库输入输出函数进行串口收发实验108
图65中断方式下的串口数据收发实验113
图71手指压在CC2540上以测量芯片内部温度的变化119
图72芯片内部电压和温度(当手指按在CC2540芯片上时温度立即上升)120
图73测量光敏电阻分压127
图74手指按住光敏电阻(分压为1.805V)127
图75手指离开光敏电阻(分压为0.400V)127
图76LED强光直射光敏电阻(分压为0.071V)128
图77相机袋压在光敏电阻上(2.900V)128
图78光敏电阻原理128
图81按键控制休眠实验130
图82串口打印的信息(按键催眠、唤醒CPU实验)130
图83进入反汇编代码查看PCON.IDLE=1指令地址134
图84开发板的演示效果(睡眠定时器唤醒实验)140
图85串口控制台打印的实验过程信息(睡眠定时器唤醒实验)140
图91正常的流水灯演示实验144
图92没有及时喂狗而导致反复重启145
图93控制台显示的反复重启效果145
图94Flash读写实验148
图101手指按在DS18B20上面温度一直在上升154
图102DS18B20实验——手指按在DS18B20上面使得温度上升154
图103DS18B20温度测量模块154
图104DS18B20的Reset时序154
图105初始欢迎页162
图106键2按下背光打开162
图107键1按下开始测量气温162
图108键2按下背光关掉162
图109实验过程在串口控制台的演示162
图1010Nokia 5110显示屏正反面(带PCB小板)163
图1011CC2540与Nokia 5110的电路连接原理164
图1012PCD8544写指令时序165
图1013PCD8544初始化时序165
图1014显存结构167
图1015用水平寻址方式(V=0)往RAM写入数据的次序167
图1016汉字液晶点阵及对应编码171
图111BLE协议栈构架197
图112链路层状态机199
图113两个设备建立连接以实现可靠数据传输202
图114连接事件204
图115属性结构211
图116服务声明样例214
图117特性声明215
图118特性数值215
图121单一设备的配置227
图122网络处理器的配置228
图123SimpleBLEPeripheral项目界面229
图124系统运行机理235
图125属性结构240
图131SimpleBLEPeripheral项目界面254
图132设置预处理宏255
图133配置文件中定义预处理宏255
图134Linker Map文件257
图135SimpleBLECentral项目界面273
图136Linker Map文件273
图141添加外设驱动源文件282
图151我的蓝牙通信简易实验平台298
图152CCDBG端子扩展原理298
图153CCDBG端子扩展板与CCDBG连接298
图154增加和修改预定义宏299
图155增加预定义宏301
图156实验过程控制台显示304
图157实验初始液晶显示304
图158实验过程液晶显示304
图159实验过程控制台显示306
图1510实验过程液晶显示307
图161串口控制台打印实验过程313
图162连接建立并参数更新后的LCD显示及外围设备LED显示314
图163单击按键后的LCD显示及外围设备LED显示314
图164LCD显示MCU温度信息329
图165串口控制台打印实验过程329
图166LCD显示环境温度信息337
图167串口控制台打印实验过程337
图168LCD显示光照强度344
图169串口控制台打印实验过程344
图1610中央设备串口控制台打印实验过程353
图1611外围设备串口控制台353
图1612LCD显示即时光照强度355
图1613串口控制台打印实验过程365
图1614LCD显示当前串口发送和接收信息366
图171中央设备启动过程1(在扫描期间USB开始初始化)377
图172中央设备启动过程2(框中部分是显示的重合部分)377
图173系统初始在完成的初始LCD界面(PC自动发送键盘灯状体的USB报告)377
图174蓝牙鼠标串口控制台显示379
图175蓝牙鼠标PC桌面测试379
图176蓝牙键盘功能1串口控制台显示382
图177蓝牙键盘功能1 PC桌面测试382
图178蓝牙键盘功能2串口控制台显示384
图179蓝牙键盘功能2 播放器测试——快进384
图1710蓝牙键盘功能2 播放器测试——快退384
图1711蓝牙键盘功能2 播放器测试——暂停384
图1712蓝牙键盘灯控制实验: 串口信息输出384
图1713蓝牙键盘灯控制实验: LED显示(共3幅图,每幅图的左上: 中央设备;右下: 外围设备)384
图1714蓝牙键盘灯控制实验: LCD显示(共两幅图,每幅图的左边: 中央设备;右边: 外围设备)384
图1715插入USB口之后出现第3个串口(COM5: USB CDC虚拟串口)396
图1716系统启动界面中自动配置串口透传396
图1717串口透传通信过程396
图1718启动BTool402
图1719BTool初始化界面403
图1720开始扫描404
图1721发现广播设备404
图1722建立连接406
图1723读写属性操作界面406
图1724利用特性UUID发现特性起始句柄407
图1725利用特性句柄读特性值408
图1726利用特性UUID读特性值408
图1727解决二进制向浮点型转换409
图1728利用多个特性句柄读多个特性值410
图1729根据特性句柄写LED特性值411
图1730写入之前(仅绿灯亮)411
图1731写入之后(LED全亮)411
图1732利用特性句柄写环境温度通知配置411
图1733利用特性句柄写光照强度通知配置412
图181选择芯片对话框415
图182SmartRF Packet Sniffer界面415
图183Sniffer抓包结果416
图184TI低功耗蓝牙技术主页417
图185CC254X PC端开发范例418
图186CC254X移动智能设备开发范例418
图187CC254X嵌入式设备开发范例419
表目录
表11始终增长的传输速率8
表31核心板J3直插引脚定义27
表32核心板J4直插引脚定义27
表33核心板J5直插引脚定义28
表34LED接口30
表35按键接口30
表36传感器接口31
表37UART接口(J13)31
表38电源接口(J11)31
表39底板J4直插引脚定义31
表310底板J5直插引脚定义32
表311底板仿真接口定义33
表41P1 (0x90)端口154
表42P2(0xA0)端口255
表43P1SEL (0xF4)端口1功能选择55
表44P2SEL(0xF5)端口2功能选择和端口1外设优先级控制55
表45P1DIR(0xFE)端口1方向56
表46P2DIR(0xFF)端口2方向和端口0 外设优先级控制56
表47P0(0x80)端口064
表48P0SEL(0xF3)端口0功能选择64
表49P0DIR(0xFD)端口0功能选择65
表410P0(0x80)端口067
表411P0SEL(0xF3)端口0功能选择67
表412P0DIR(0xFD)端口0方向67
表413P0INP(0x8F)端口0输入模式67
表414P2INP(0xF7)端口2输入模式68
表415P0IFG(0x89)端口P0.7~P0.0中断状态标志72
表416PICTL(0x8C)位0端口0中断模式配置72
表417P0IEN(0xAB)端口P0.7~P0.0中断使能73
表418IEN0(0xA8)位7使能所有中断源73
表419IEN1(0xB8)位5端口0中断源使能73
表420 IRCON(0xC0)位5端口0中断标志73
表51T1CNTH(0xE3)定时器1计数器高位78
表52T1CNTL(0xE2)定时器1计数器低位78
表53T1CTL(0xE4)定时器1的控制和状态78
表54T1STAT(0xAF)定时器1状态78
表55T1CC0H(0xDD)定时器1通道1捕获/比较值高位79
表56T1CC0L(0xDA)定时器1通道0捕获/比较值低位79
表57CLKCONCMD(0xC6)与定时器相关的位时钟控制命令79
物联网技术实践教程——基于蓝牙4
表 目 录表58CLKCONSTA(0x9E)时钟控制状态80
表59IEN0(0xA8)位7中断源使能总开关83
表510IEN1(0xB8)位1定时器1中断使能84
表511T1STAT(0xAF)位5定时器1状态84
表512IRCON(0xC0)位1定时器1中断标志84
表513PERCFG(0xF1)外设控制87
表514P2DIR(0xFF)端口2方向和端口0外设优先级控制87
表515P0SEL(0xF3)端口0功能选择88
表516P0DIR(0xFD)端口0功能选择88
表517T1CCTL3(0x62A3)定时器1通道3捕获/比较控制88
表518T1CC0H(0xDD)定时器1通道1捕获/比较值高位89
表519T1CC0L(0xDA)定时器1通道0捕获/比较值低位89
表61U0CSR(0x86)USART0控制和状态99
表62U0UCR(0xC4)USART0的UART控制99
表63U0GCR(0xC5)USART0通用控制100
表64U0BUF又名U0DBUF(0xC1)USART0接收/传送数据缓存100
表65U0BAUD(0xC2)USART0波特率控制101
表66P2DIR(0xFF)端口2方向和端口0外设优先级控制101
表6732MHz系统时钟的常用波特率设置101
表68CHVER(0x6249)芯片版本105
表69CHIPID (0x624A)芯片ID105
表610CHIPINFO0(0x6276)芯片信息字节0105
表611CHIPINFO1(0x6277)芯片信息字节1106
表612TCON(0x88)中断标志114
表613IRCON2(0xE8)中断标志5114
表614串口收发中断向量描述114
表615IEN0(0xA8)中断使能0114
表616IEN2 (0x9A)中断使能2115
表71APCFG(0xF2)模拟外设I/O 配置120
表72ADCL(0xBA)ADC数据低位120
表73ADCH(0xBB)ADC数据高位121
表74ADCCON1 (0xB4)ADC 控制1121
表75ADCCON2(0xB5)ADC控制2121
表76ADCCON3(0xB6)ADC控制3122
表77TR0(0x624B)测试寄存器0123
表78ATEST(0x61BD)模拟测试控制123
表81PCON(0x87)供电模式控制132
表82SLEEPCMD(0xBE)睡眠模式控制132
表83SLEEPSTA(0x9D)睡眠模式控制状态132
表84ST2(0x97)休眠定时器2141
表85ST1(0x96)休眠定时器1141
表86ST0(0x95)休眠定时器0141
表87STLOAD(0xAD)睡眠定时器加载状态141
表91看门狗寄存器145
表101发送ROM指令155
表102发送存储器指令156
表103Nokia 5110液晶屏接口(带PCB小板)163
表104USART功能配置164
表105PCD8544指令集165
表106表105中有关字符的解释166
表107PCD8544 SPI时钟频率167
表108PERCFG(0xF1)外设控制168
表109U1CSR(0xF8)USART 1控制和状态168
表1010U1UCR(0xFB)USART 1控制168
表1011U1GCR(0xFC)USART 1通用控制169
表1012U1BUF(0xF9)USART 1接收/传送数据缓存170
表111首要服务与次要服务的属性数据库样例214
表122SimpleKeys GATT Profile属性表253
1.1移动通信发展简史1
1.2中国移动通信发展现状6
1.3各类移动通信系统概述7
1.3.1无绳电话系统7
1.3.2无线寻呼系统8
1.3.3集群移动通信系统9
1.3.4无线局域网10
1.3.5卫星移动通信系统12
1.3.6蜂窝移动通信系统14
1.4移动通信系统的工作频段16
习题18
第2章第二代移动通信系统19
2.1GSM移动通信系统19
2.1.1GSM系统的网络结构19
2.1.2GSM服务区域的划分21
2.1.3GSM的编号计划22
2.1.4GSM系统的接口24
2.1.5GSM的语音编码26
2.1.6GSM系统的业务27
2.1.7GSM的无线接口28
2.1.8GSM系统的移动性管理34
2.2IS—95CDMA系统39
2.2.1扩频通信技术39
2.2.2IS—95CDMA的关键技术41
2.2.3IS—95 CDMA系统的无线接口46
习题49
第3章2.5G移动通信系统51
3.1GPRS系统51
3.1.1概述51
3.1.2GPRS基本原理53
移动通信技术及应用
目录3.1.3GPRS基本功能和业务58
3.1.4GPRS的基本概念64
3.1.5GPRS业务流程69
3.2CDMA 2000—1X系统81
3.2.1CDMA技术的演进与标准81
3.2.2CDMA 2000—1X系统结构 81
3.2.3CDMA 2000—1X关键技术82
3.2.4CDMA 2000—1X工程组网简介85
3.2.5CDMA 2000—1X的语音和数据信道88
习题89
第4章第三代移动通信系统90
4.1CDMA 2000 1x EVDO系统90
4.1.1概述90
4.1.21x EVDO的网络结构94
4.1.3EVDO Rev A信道95
4.1.4EVDO Rev A关键技术97
4.2WCDMA系统104
4.2.1概述104
4.2.2WCDMA标准的演进106
4.2.3WCDMA的空中接口113
4.3TDSCDMA系统135
4.3.1概述135
4.3.2TDSCDMA的网络结构135
4.3.3TDSCDMA系统的关键技术143
习题155
第5章第四代移动通信系统157
5.1概述157
5.1.1第四代移动通信系统的关键特性要求157
5.1.2第四代移动通信系统标准的确定159
5.1.3准4G网络在全球的应用情况160
5.2第四代移动通信系统的关键技术161
5.2.1OFDM技术161
5.2.2MIMO技术163
5.3LTE系统165
5.3.1LTE的技术特点165
5.3.2LTE的网络结构166
5.3.3EUTRAN接口的通用协议模型168
5.3.4LTE的无线信道171
5.3.5无线资源管理173
5.3.6移动性管理176
5.3.7LTEA的性能增强181
5.3.8TDLTE与LTE FDD的对比183
5.4WiMAX系统185
5.4.1WiMAX的产生和发展185
5.4.2移动WiMAX——IEEE 802.16e 186
5.4.34G技术——IEEE 802.16m188
习题189
第6章移动通信业务190
6.12G移动通信业务190
6.1.1基本业务190
6.1.2补充业务191
6.23G移动通信业务196
6.2.13G业务的特点及发展趋势196
6.2.23G业务的分类197
6.2.3典型的3G业务199
6.3移动智能网业务203
6.3.1智能网基础203
6.3.2移动智能网203
6.3.3移动智能网业务205
习题208
第7章移动互联网——移动通信网与互联网的融合209
7.1互联网简介209
7.1.1互联网的产生和发展209
7.1.2互联网在中国的发展210
7.1.3OSI参考模型211
7.1.4TCP/IP协议模型214
7.2移动互联网的产生及发展217
7.2.1移动互联网简介217
7.2.2移动互联网的特点218
7.2.3移动互联网的发展现状220
7.3移动互联网的体系结构及关键技术223
7.3.1终端技术223
7.3.2网络平台技术223
7.3.3应用平台技术224
7.4典型的移动互联网业务应用225
7.4.1移动电子商务225
7.4.2移动定位业务228
7.4.3移动搜索业务233
7.4.4移动浏览业务239
7.4.5移动支付业务242
7.4.6移动广告业务245
7.4.7移动音乐业务249
习题251
参考文献252
目 录
第一篇 概述及实验平台1
第1章 低功耗蓝牙(BLE)概述3
1.1 蓝牙与物联网3
1.2 低功耗蓝牙与我的物联网5
1.3 什么是低功耗蓝牙8
1.4 BLE如何实现低功耗9
第2章 蓝牙4.0BLE软件开发平台搭建11
2.1 为什么是IAR 805111
2.2 安装IAR8051-8.312
2.2.1 下载IAR8051-8.312
2.2.2 安装IAR8051-8.313
2.2.3 破解IAR8051-8.319
2.3 IAR8051集成开发环境简介22
2.4 IAR 8051 C/C++23
2.5 安装相关支持软件23
第3章 蓝牙4.0BLE硬件开发平台搭建25
3.1 为什么是世嵌开发板25
3.2 世嵌最简配置开发套件27
3.2.1 核心板:WB2540MVA27
3.2.2 底板:WX253029
3.2.3 仿真器:CCDBG35
3.3 搭建实验硬件环境36
3.4 创建工程-点亮LED38
第二篇 基础实验49
第4章 GPIO实验51
4.1 LED实验:打开所有LED51
4.1.1 任务要求及效果呈现51
4.1.2 实验原理52
4.1.3 实验步骤55
4.1.4 程序清单(含详细注释)57
4.2 LED实验:让LED一闪一闪57
4.2.1 任务要求及效果呈现57
4.2.2 实验原理58
4.2.3 程序清单(含详细注释)58
4.3 LED实验:实现流水灯59
4.3.1 任务要求及效果呈现59
4.3.2 实验原理60
4.3.3 程序清单(含详细注释)61
4.4 蜂鸣器实验:驱动蜂鸣器发声62
4.4.1 任务要求及效果呈现62
4.4.2 实验原理62
4.4.3 程序清单(含详细注释)64
4.5 按键实验:按键控制LED65
4.5.1 任务要求及效果呈现65
4.5.2 实验原理65
4.5.3 程序清单(含详细注释)68
4.6 按键实验:按键控制LED (中断方式)70
4.6.1 任务要求及效果呈现70
4.6.2 实验原理71
4.6.3 程序清单(含详细注释)74
第5章 定时器实验77
5.1 定时器实验:流水灯(查询方式)77
5.1.1 任务要求及效果呈现77
5.1.2 实验原理77
5.1.3 程序清单(含详细注释)81
5.2 定时器实验:流水灯(中断方式)83
5.2.1 任务要求及效果呈现83
5.2.2 实验原理84
5.2.3 程序清单(含详细注释)85
5.3 定时器实验:PWM控制蜂鸣器86
5.3.1 任务要求及效果呈现87
5.3.2 实验原理88
5.3.3 示波器与开发板连接91
5.3.4 源码清单92
第6章 串口实验99
6.1 串口发送实验:打印欢迎信息99
6.1.1 任务要求及效果呈现99
6.1.2 实验原理100
6.1.3 硬件连接104
6.1.4 源码清单105
6.2 串口发送:用printf打印系统信息106
6.2.1 任务要求及效果呈现106
6.2.2 实验原理107
6.2.3 源码清单108
6.3 串口收发:用C标准库输入输出函数110
6.3.1 任务要求及效果呈现110
6.3.2 实验原理110
6.3.3 源码清单112
6.4 串口收发:中断方式115
6.4.1 任务要求及效果呈现115
6.4.2 实验原理116
6.4.3 源码清单119
第7章 ADC实验122
7.1 测量芯片内部温度和供电电压122
7.1.1 任务要求及效果呈现122
7.1.2 实验原理123
7.1.3 源码清单127
7.2 测量光照强度130
7.2.1 任务要求及效果呈现130
7.2.2 实验原理131
7.2.3 源码清单132
第8章 睡眠与唤醒实验134
8.1 外部中断唤醒134
8.1.1 任务要求和效果呈现134
8.1.2 实验原理135
8.1.3 源码清单138
8.2 定时器唤醒144
8.2.1 任务要求和效果呈现144
8.2.2 实验原理145
8.2.3 源码清单147
第9章 看门狗实验、FLASH读写实验149
9.1 看门狗实验149
9.1.1 任务要求和效果呈现149
9.1.2 实验原理150
9.1.3 源码清单151
9.2 FLASH读写实验152
9.2.1 任务要求和效果呈现153
9.2.2 实验原理154
9.2.3 源码清单155
第10章 总线实验159
10.1 单总线实验(DS18B20驱动)159
10.1.1 任务要求和效果呈现159
10.1.2 实验原理160
10.1.3 源码清单163
10.2 SPI总线实验(诺基亚5110液晶屏驱动)167
10.2.1 任务要求和效果呈现167
10.2.2 实验原理169
10.2.3 源码清单177
第三篇 BLE协议栈201
第11章 蓝牙4.0协议栈基础202
11.1 BLE协议栈整体构架202
11.2 物理层(PHY)202
11.3 链路层(LL)203
11.3.1 链路层状态机203
11.3.2 链路层报文205
11.3.3 设备发现205
11.3.4 关于广播206
11.3.5 连接过程206
11.3.6 数据发送209
11.3.7 管理连接209
11.4 主机/控制器接口(HCI)210
11.4.1 物理接口与逻辑接口210
11.4.2 控制器的配置210
11.4.3 广播与观察211
11.4.4 发起连接212
11.4.5 连接管理213
11.5 逻辑链路控制和适配协议(L2CAP)213
11.6 属性协议层(ATT)、通用属性配置文件层(GATT)214
11.6.1 服务器与客户端模型214
11.6.2 属性214
11.6.3 属性的访问216
11.6.4 服务216
11.6.5 特性217
11.6.6 属性协议218
11.6.7 通用属性规范220
11.7 安全管理层(SM)223
11.7.1 安全概念223
11.7.2 配对和绑定223
11.7.3 数据签名224
11.8 通用访问配置文件层(GAP)224
11.8.1 GAP角色224
11.8.2 模式和规程224
11.8.3 广播模式和观察规程225
11.8.4 可发现性225
11.8.5 可连接性226
11.8.6 绑定227
第12章 TI蓝牙协议栈开发平台228
12.1 BLE协议栈开发平台配置228
12.2 BLE协议栈软件开发框架229
12.3 协议栈应用程序运行机理230
12.3.1 开始应用程序:main()230
12.3.2 初始化系统:osal_init_system()232
12.3.3 启动系统:osal_start_system()234
12.3.4 系统运行机理235
12.4 OSAL操作系统抽象层236
12.4.1 任务事件和事件处理237
12.4.2 内存堆管理237
12.4.3 OSAL消息238
12.5 HAL硬件抽象层238
12.6 BLE协议栈239
12.6.1 通用访问配置文件(GAP)239
12.6.2 通用属性配置文件(GATT)240
12.6.3 GATT服务器应用程序241
12.7 配置文件241
12.7.1 GAP外围角色配置242
12.7.2 GAP外围/广播多重角色配置243
12.7.3 GAP Central Role Profile243
12.7.4 GAP绑定管理器244
12.7.5 简单属性配置文件(Simple GATT Profile)244
12.7.6 简单按键属性配置文件(SimpleKeys GATT Profile)250
12.7.7 设备信息服务251
12.7.8 其他属性配置文件251
第13章 蓝牙协议栈项目开发入门252
13.1.1 项目配置252
13.1.2 Linker Map文件255
13.1.3 simpleBLEPeripheral.c源码分析255
13.2 简单BLE中央设备(SimpleBLECentral)270
13.2.1 项目配置270
13.2.2 Linker Map文件271
13.2.3 simpleBLECentral.c源码分析271
第14章 定制硬件抽象层293
14.1 增加外设驱动293
14.2 修改hal_board_cfg294
14.3 修改hal_led295
14.4 修改hal_key296
14.5 增强UART功能298
14.6 增加Nokia5110液晶屏驱动305
第四篇 BLE通信实验293
第15章 简单的蓝牙通信295
15.1 引言295
15.2 搭建蓝牙通信实验平台295
15.3 源码相关配置修改297
15.3.1 修改 Simple BLE Peripherial 项目297
15.3.2 修改 Simple BLE Central 项目298
15.4 实验过程演示300
15.5 实验:实现自动连接和LED连接状态指示303
15.5.1 任务要求与效果呈现303
15.5.2 实验原理305
15.5.3 源码修改305
第16章 我的蓝牙感知器(iSensor)309
16.1 控制LED309
16.1.1 任务要求与效果呈现310
16.1.2 实现外围设备311
16.1.3 实现中央设备315
16.2 感知外设CPU温度323
16.2.1 任务要求与效果呈现323
16.2.2 实现外围设备325
16.2.3 实现中央设备327
16.3 感知外设环境温度329
16.3.1 任务要求与效果呈现330
16.3.2 实现外围设备331
16.3.3 实现中央设备335
16.4 感知外设光照强度336
16.4.1 任务要求与效果呈现336
16.4.2 实现外围设备338
16.4.3 实现中央设备342
16.5 定时获取外设光照强度343
16.5.1 任务要求与效果呈现344
16.5.2 实现外围设备347
16.5.3 实现中央设备353
16.6 无线串口透传355
16.6.1 任务要求与效果呈现355
16.6.2 NPI模块原理与串口透传357
16.6.3 实现外围设备358
16.6.4 实现中央设备362
第17章 蓝牙USB366
17.1 iSensorHid(蓝牙键鼠)366
17.1.1 任务要求与效果呈现367
17.1.2 实现外围设备375
17.1.3 实现中央设备379
17.2 iSensorCDC(蓝牙USB串口)384
17.2.1 任务要求与效果呈现384
17.2.2 实现外围设备386
17.2.3 实现中央设备387
17.3 iHostTest(网络处理机)388
17.3.1 实现iHostTest388
17.3.2 系统初始化389
17.3.3 建立连接390
17.3.4 测试GATT属性服务393
第18章 蓝牙通信测试与支持402
18.1 蓝牙协议分析仪(Sniffer)402
18.2 蓝牙支持405
参考文献408
图目录
图 1-1 物联网—感知世界3
图 1-2 蓝牙在医疗设备上的应用7
图 1-3 蓝牙防丢产品7
图 1-4 SENSORY的前端语音识别技术通过蓝牙耳机实现安全行驶8
图 2-1 IAR官方主页12
图 2-2 IAR产品下载目录12
图 2-3 IAR8051-8.3评估版下载页面13
图 2-4 IAR8051-8.3下载任务对话框13
图 2-5 EW8051-8303-Autorun.exe自解压14
图 2-6 程序安装界面14
图 2-7 准备安装14
图 2-8 安装向导15
图 2-9 是否接受许可协议15
图 2-10 自定义安装还是完全安装16
图 2-11 安装路径选择16
图 2-12 程序图标目录选择17
图 2-13 准备安装程序17
图 2-14 安装程序过程18
图 2-15 是否安装USB dongles 驱动18
图 2-16 安装结束18
图 2-17 退出19
图 2-18 破解IAR8051-8.319
图 2-19 License manager界面20
图 2-20 编译错误21
图 2-21 增加一行“-Z(DATA)VREG=08-7F"21
图 2-22 现在编译正确了22
图 2-23 IAR8051集成开发环境22
图 3-1 世嵌科技官网26
图 3-2 CC2540蓝牙4.0低功耗最简配置开发板套件(2模块+2底板+1仿真器)26
图 3-3 WB2540MVA核心板27
图 3-4 WB2540MVA核心板机械尺寸和元件布局28
图 3-5 WX2530底板(绿色)+CC2540核心板(蓝色)30
图 3-6 开发板整体架构31
图 3-7 WX2530底板输入接口31
图 3-8 跳线使能USB接口32
图 3-9 仿真器接口封装图34
图 3-10 仿真器灰排母座应朝板子外侧插入仿真接口34
图 3-11 CCDBG仿真器(上面虽未标明支持CC2540,但实际完全支持)35
图 3-12 某淘宝店推出的PL2303HX模块37
图 3-13 开发板与外配的硬件连接38
图 3-14 复制安装目录下的蓝牙协议栈到你的工作目录39
图 3-15 协议栈的项目范例39
图 3-16 复制一个副本40
图 3-17 项目改名40
图 3-18 项目文件目录40
图 3-19 项目文件目录41
图 3-20 修改eww文件41
图 3-22 新工程诞生42
图 3-21 移除原工程文件1
图 3-23 选中“Options...”选项1
图 3-24 将常量和字符串置于RAM memory1
图 3-25 将输出的hex文件改为你喜欢的名字43
图 3-26 将Driver设置为“Texas Instruments"43
图 3-28 点击“Add Files..."43
图 3-27 选中三个文件1
图 3-29 文件改名44
图 3-31 文件已经添加44
图 3-30 清空编辑区1
图 3-32 编写代码45
图 3-33 编译代码45
图 3-34 下载调试46
图 3-35 调试开始46
图 3-36 点亮绿灯1
图 3-38 设置断点47
图 3-37 启动不下载的调试1
图 3-39 调试开始1
图 3-40 调试运行到断点处1
图 3-42 按下"step over"图标48
图 3-41 调试光标进入下一行语句1
图 4-1 基础实验一效果51
图 4-2 LED原理图52
图 4-3 打开项目并另存源文件55
图 4-4 将源文件改名并另存55
图 4-5 将另存的文件添加56
图 4-6 将“mTest.c”文件从项目编译链接中排除56
图 4-7 为mTestLedAllOpen.c编写代码56
图 4-8 让LED一闪一闪58
图 4-9 流水灯效果60
图 4-10 流水灯程序设计和调试界面60
图 4-11 驱动蜂鸣器发声62
图 4-12 蜂鸣器原理图63
图 4-13 按键控制LED亮灭65
图 4-14 按键电路原理图66
图 4-15 按键按下和松开的电信号变化67
图 4-16 按键控制LED(中断方式)71
图 5-1 中断查询方式的定时流水灯77
图 5-2 中断方式的定时流水灯83
图 5-3 实验过程演示:按下键2,黄灯亮(左图),释放,黄灯熄灭(右图)87
图 5-4 200HZ声音时的通道2和通道3的波形87
图 5-5 2000HZ声音时的通道2和通道3的波形88
图 5-6 本人自购的示波器91
图 5-7 开发板与示波器连线图92
图 6-1 打印欢迎信息99
图 6-2 CC2540串口与PC机串口的硬件连接图104
图 6-3 串口输出系统硬件信息106
图 6-4 使用C标准库输入输出函数进行串口收发实验110
图 6-5 中断方式下的串口数据收发实验116
图 7-1 手指压在CC2540上以测量芯片内部温度的变化122
图 7-2 芯片内部电压和温度(当手指按在CC2540芯片上时,温度立即上升)123
图 7-3 测量光敏电阻分压130
图 7-4 手指按住光敏电阻(分压:1.805V)1
图 7-5 手指离开光敏电阻(分压:0.400V)1
图 7-6 LED强光直射光敏电阻(分压:0.071V)1
图 7-7 相机袋压在光敏电阻上(2.900V)1
图 7-8 光敏电阻原理图1
图 8-1 按键控制休眠实验图134
图 8-2 串口打印的信息(按键催眠、唤醒CPU实验)135
图 8-3 进入反汇编代码查看PCON.IDLE=1指令地址137
图 8-4 开发板的演示效果(睡眠定时器唤醒实验)145
图 8-5 串口控制台打印的实验过程信息(睡眠定时器唤醒实验)145
图 9-1 正常的流水灯演示实验149
图 9-2 没有及时喂狗而导致反复重启149
图 9-3 控制台显示的反复重启效果150
图 9-4 Flash读写实验154
图 10-1 手指按在DS18B20上面,温度一直在上升159
图 10-2 DS18B20实验:手指按在DS18B20上面,使得温度上升160
图 10-3 DS18B20温度测量模块160
图 10-4 初始欢迎页面1
图 10-5 键2按下,背光打开1
图 10-6 键1按下,开始测量气温1
图 10-7 键2按下,背光关掉1
图 10-8 实验过程在串口控制台的演示1
图 10-9 诺基亚5110显示屏正反面(带PCB小板)169
图 10-10 CC2540与诺基亚5110的电路连接原理图170
图 10-11 PCD8544写指令时序171
图 10-12 PCD8544初始化时序171
图 10-13 显存结构172
图 10-14 用水平寻址方式(V=0)往RAM写入数据的次序173
图 10-15 汉字液晶点阵及对应编码176
图 11-1 BLE协议栈构架202
图 11-2 链路层状态机204
图 11-3 两个设备建立连接以实现可靠数据传输207
图 11-4 连接事件208
图 11-5 属性结构215
图 11-6 服务声明217
图 11-7 特性声明218
图 11-8 特性数值218
图 12-1 单一设备的配置228
图 12-2 网络处理器的配置229
图 12-3 SimpleBLEPeripheral项目界面230
图 12-4 系统运行机理236
图 12-5 属性结构240
图 13-1 SimpleBLEPeripheral项目界面252
图 13-2 选项框中设置预处理宏253
图 13-3 配置文件中定义预处理宏253
图 13-4 Linker Map文件255
图 13-5 SimpleBLECentral项目界面271
图 13-6 Linker Map文件271
图 14-1 添加外设驱动源文件294
图 15-1 我的蓝牙通信简易实验平台296
图 15-2 CCDBG端子扩展296
图 15-3 CCDBG端子扩展板与CCDBG连接297
图 15-4 增加和修改预定义宏297
图 15-5 增加预定义宏299
图 15-6 实验过程控制台显示(左图:SimpleBLEPeripheral;右图:SimpleBLECentral)300
图 15-7 实验初始液晶显示(左图:SimpleBLEPeripheral;右图:SimpleBLECentral)301
图 15-8 实验过程液晶显示(左图:SimpleBLEPeripheral;右图:SimpleBLECentral)301
图 15-9 实验过程控制台显示(左图:SimpleBLEPeripheral;右图:SimpleBLECentral)304
图 15-10 实验过程液晶显示(左图:SimpleBLEPeripheral;右图:SimpleBLECentral)304
图 16-1 串口控制台打印实验过程(左图:外围设备端;右图:中央设备端)310
图 16-2 连接建立并参数更新后的LCD显示及外围设备LED显示311
图 16-3 单击按键后的LCD显示及外围设备LED显示311
图 16-4 LCD显示MCU温度信息(左图:外围设备端;右图:中央设备端)323
图 16-5 串口控制台打印实验过程(左图:外围设备端;右图:中央设备端)324
图 16-6 LCD显示环境温度信息(左图:外围设备端;右图:中央设备端)330
图 16-7 串口控制台打印实验过程(左图:外围设备端;右图:中央设备端)331
图 16-8 LCD显示光照强度(左图:外围设备端;右图:中央设备端)337
图 16-9 串口控制台打印实验过程(左图:外围设备端;右图:中央设备端)337
图 16-10 中央设备串口控制台打印实验过程(左图:连接和发现;右图:四种定时模式)345
图 16-11 外围设备串口控制台1
图 16-12 LCD显示即时光照强度(左图:外围设备端;右图:中央设备端)346
图 16-13 串口控制台打印实验过程(左图:外围设备端;右图:中央设备端)356
图 16-14 LCD显示当前串口发送和接收信息(左图:外围设备;右图:中央设备)357
图 17-1 中央设备启动过程1(扫描期间,USB开始初始化)367
图 17-2 中央设备启动过程2(框中部分是显示的重合部分)368
图 17-3 系统初始完成的初始LCD界面(PC自动发送键盘灯状体的USB报告)368
图 17-4 蓝牙鼠标串口控制台显示(左图:外围设备;右图:中央设备)369
图 17-5 蓝牙鼠标PC桌面测试370
图 17-6 蓝牙键盘功能1串口控制台显示(左图:外围设备;右图:中央设备)371
图 17-7 蓝牙键盘功能1 PC桌面测试371
图 17-8 蓝牙键盘功能2串口控制台显示(左图:外围设备;右图:中央设备)372
图 17-9 蓝牙键盘功能2 播放器测试——快进372
图 17-10 蓝牙键盘功能2 播放器测试——快退373
图 17-11 蓝牙键盘功能2 播放器测试——暂停373
图 17-12 蓝牙键盘灯控制实验:串口信息输出(左图:外围设备;右图:中央设备)374
图 17-13 蓝牙键盘灯控制实验:LED显示(共三幅图,每幅图的左上:中央设备;右下:外围设备)374
图 17-14 蓝牙键盘灯控制实验:LCD显示(共两幅图,每幅图的左边:中央设备;右边:外围设备)374
图 17-15 插入USB口之后出现第3个串口(COM5:USB CDC虚拟串口)384
图 17-16 系统启动界面,自动配置串口透传385
图 17-17 串口透传通信过程385
图 17-18 启动BTool389
图 17-19 bTool初始化界面390
图 17-20 开始扫描391
图 17-21 发现广播设备392
图 17-22 建立连接392
图 17-23 读写属性操作界面393
图 17-24 利用特性UUID发现特性起始句柄394
图 17-25 利用特性句柄读特性值395
图 17-26 利用特性UUID读特性值396
图 17-27 解决二进制向浮点型转换396
图 17-28 利用多个特性句柄读多个特性值397
图 17-29 根据特性句柄写LED特性值398
图 17-30 写入之后(LED全亮)1
图 17-31 写入之前(仅绿灯亮)1
图 17-32 利用特性句柄写环境温度通知配置399
图 17-33 利用特性句柄写光照强度通知配置400
图 18-1 选择芯片对话框403
图 18-2 SmartRF Packet Sniffer界面403
图 18-3 Sniffer抓包结果404
图 18-4 TI 低功耗蓝牙技术主页405
图 18-5 CC254X PC端开发范例406
图 18-6 CC254X 移动智能设备开发范例406
图 18-7 CC254X 嵌入式设备开发范例407
表目录
表 1-1 始终增长的传输速率8
表 3-1 核心板J3直插引脚定义28
表 3-2 核心板J4直插引脚定义28
表 3-3 核心板J5直插引脚定义29
表 3-4 LED接口31
表 3-5 按键接口32
表 3-6 传感器接口32
表 3-7 UART接口(J13)33
表 3-8 电源接口(J11)33
表 3-9 底板J4直插引脚定义33
表 3-10 底板J5直插引脚定义33
表 3-11 底板仿真接口定义34
表 4-1 P1 (0x90)–端口152
表 4-2 P2(0xA0)–端口253
表 4-3 P1SEL (0xF4)–端口1 功能选择53
表 4-4 P2SEL (0xF5)–端口2 功能选择和端口1外设优先级控制53
表 4-5 P1DIR (0xFE)–端口1方向54
表 4-6 P2DIR (0xFF)–端口2方向和端口0 外设优先级控制54
表 4-7 P0 (0x80)–端口063
表 4-8 P0SEL (0xF3)–端口0 功能选择63
表 4-9 P0DIR (0xFD)–端口0 功能选择63
表 4-10 P0 (0x80)–端口066
表 4-11 P0SEL (0xF3)–端口0 功能选择66
表 4-12 P0DIR (0xFD)–端口0 方向66
表 4-13 P0INP (0x8F)–端口0 输入模式66
表 4-14 P2INP (0xF7)–端口2 输入模式67
表 4-15 P0IFG(0x89)–端口P0.7到P0.0中断状态标志72
表 4-16 PICTL(0x8C)位0–端口0中断模式配置72
表 4-17 P0IEN(0xAB)–端口P0.7到P0.0中断使能72
表 4-18 IEN0(0xA8)位7-使能所有中断源72
表 4-19 IEN1(0xB8)位5-端口0中断源使能72
表 4-20 IRCON(0xC0)位5-端口0中断标志72
表 5-1 T1CNTH(0xE3)–定时器1计数器高位77
表 5-2 T1CNTL(0xE2)–定时器1计数器低位78
表 5-3 T1CTL(0xE4)–定时器1的控制和状态78
表 5-4 T1STAT(0xAF)–定时器1状态78
表 5-5 T1CC0H(0xDD)–定时器1 通道1 捕获/比较值高位79
表 5-6 T1CC0L(0xDA)–定时器1 通道0 捕获/比较值低位79
表 5-7 CLKCONCMD(0xC6)与定时器相关的位–时钟控制命令79
表 5-8 CLKCONSTA(0x9E)–时钟控制状态80
表 5-9 IEN0(0xA8)位7–中断源使能总开关84
表 5-10 IEN1(0xB8)位1-定时器1中断使能84
表 5-11 T1STAT(0xAF)位5–定时器1状态84
表 5-12 IRCON(0xC0)位1-定时器1中断标志84
表 5-13 PERCFG(0xF1)-外设控制88
表 5-14 P2DIR(0xFF)-端口2方向和端口0外设优先级控制88
表 5-15 P0SEL(0xF3)-端口0功能选择89
表 5-16 P0DIR(0xFD)-端口0功能选择89
表 5-17 T1CCTL3(0x62A3)-定时器1通道3捕获/比较控制89
表 5-18 T1CC0H(0xDD)-定时器1通道1捕获/比较值高位90
表 5-19 T1CC0L(0xDA)-定时器1通道0捕获/比较值低位90
表 6-1 U0CSR (0x86)-USART0控制和状态100
表 6-2 U0UCR(0xC4)-USART0的UART控制101
表 6-3 U0GCR (0xC5)-USART0通用控制102
表 6-4 U0BUF又名U0DBUF(0xC1)-USART0接收/传送数据缓存102
表 6-5 U0BAUD(0xC2)-USART0波特率控制102
表 6-6 P2DIR (0xFF)–端口2方向和端口0外设优先级控制103
表 6-7 32MHZ系统时钟的常用波特率设置103
表 6-8 CHVER(0x6249)–芯片版本107
表 6-9 CHIPID (0x624A) –芯片ID107
表 6-10 CHIPINFO0(0x6276)–芯片信息字节0107
表 6-11 CHIPINFO1(0x6277)–芯片信息字节1108
表 6-12 TCON(0x88)–中断标志117
表 6-13 IRCON2(0xE8)–中断标志5117
表 6-14 串口收发中断向量描述117
表 6-15 IEN0(0xA8)–中断使能0117
表 6-16 IEN2 (0x9A)–中断使能2117
表 7-1 APCFG (0xF2)–模拟外设I/O 配置123
表 7-2 ADCL (0xBA)-ADC 数据低位123
表 7-3 ADCH (0xBB) - ADC 数据高位123
表 7-4 ADCCON1 (0xB4)-ADC 控制1124
表 7-5 ADCCON2 (0xB5)-ADC控制2124
表 7-6 ADCCON3 (0xB6)-ADC 控制3125
表 7-7 TR0 (0x624B)–测试寄存器0126
表 7-8 ATEST (0x61BD)–模拟测试控制126
表 8-1 PCON(0x87)–供电模式控制136
表 8-2 SLEEPCMD(0xBE)–睡眠模式控制136
表 8-3 SLEEPSTA(0x9D)–睡眠模式控制状态136
表 8-4 ST2(0x97)–休眠定时器2146
表 8-5 ST1(0x96)–休眠定时器1146
表 8-6 ST0(0x95)–休眠定时器0146
表 8-7 STLOAD(0xAD)–睡眠定时器加载状态146
表 9-1 看门狗寄存器150
表 10-1 发送ROM 指令161
表 10-2 发送存储器指令162
表 10-3 诺基亚5110液晶屏接口(带PCB小板)169
表 10-4 USART功能配置169
表 10-5 PCD8544指令集171
表 10-6 上表有关字符的解释172
表 10-7 PCD8544 SPI时钟频率172
表 10-8 PERCFG (0xF1)–外设控制173
表 10-9 U1CSR (0xF8)-USART 1 控制和状态173
表 10-10 U1UCR (0xFB)-USART 1控制174
表 10-11 U1GCR (0xFC)-USART 1 通用控制174
表 10-12 U1BUF (0xF9) - USART 1 接收/传送数据缓存175
表 10-13 U1BAUD (0xFA) - USART 1 波特率控制175
表 11-1 首要服务与次要服务的属性数据库样例217
表 12-1 Simple GATT Profile 属性表248
表 12-2 SimpleKeys GATT Profile 属性表251