图书目录

第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 80518.3的下载、安装和破解12

2.2.1下载IAR 80518.312

2.2.2安装IAR 80518.313

2.2.3破解IAR 80518.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

图目录

图11物联网——感知世界3

图12蓝牙在医疗设备上的应用7

图13蓝牙防丢产品7

图14SENSORY的前端语音识别技术通过蓝牙耳机实现安全行驶8

图21IAR官方主页12

图22IAR产品下载目录13

图23IAR 80518.3评估版下载页面13

图24“IAR 80518.3下载任务”对话框13

图25EW80518303Autorun.exe自解压13

图26程序安装界面13

图27准备安装15

图28安装向导15

图29是否接受许可协议对话框15

图210自定义安装还是完全安装17

图211安装路径选择17

图212程序图标目录选择17

图213准备安装程序17

图214安装程序过程17

图215是否安装USB dongles驱动19

图216安装结束19

图217退出19

图218破解IAR 80518.319

图219License Manager界面19

图220编译错误20

图221增加一行“Z(DATA)VREG=087F”20

图222现在编译正确了20

图223IAR 8051集成开发环境22

图31世嵌科技官网24

图32CC2540蓝牙4.0低功耗最简配置开发板套件(2模块+2底板+1仿真器)25

图33WB2540MVA核心板26

图34WB2540MVA核心板机械尺寸和元件布局27

图35WX2530底板(绿色)+CC2540核心板(蓝色)28

图36开发板整体架构30

图37WX2530底板输入接口30

图38跳线使能USB接口31

图39仿真器接口封装32

物联网技术实践教程——基于蓝牙4

图 目 录图310仿真器灰排母座应朝板子外侧插入仿真接口32

图311CCDBG仿真器(上面虽未标明支持CC2540,但实际完全支持)34

图312某淘宝店推出的PL2303HX模块36

图313开发板与外配的硬件连接37

图314复制安装目录下的蓝牙协议栈到你的工作目录37

图315协议栈的项目范例37

图316复制得一个副本37

图317将项目改名37

图318项目文件目录39

图319项目文件目录41

图320修改mTest.eww文件41

图321新工程诞生41

图322移除原工程文件41

图323选择Options命令41

图324将常量和字符串置于RAM memory41

图325将输出的hex文件改为你喜欢的名字42

图326将Driver设置为Texas Instruments43

图327选择Add→AddFiles命令43

图328选中3个文件43

图329文件改名43

图330文件已经添加44

图331清空编辑区46

图332编写代码46

图333编译代码46

图334下载调试46

图335调试开始46

图336点亮绿灯46

图337设置断点47

图338启动不下载的调试48

图339调试开始48

图340调试运行到断点处48

图341单击step over图标49

图342调试光标进入下一行语句49

图41基础实验一效果54

图42LED原理54

图43打开项目并另存源文件57

图44将源文件改名并另存57

图45将另存的文件添加57

图46将mTest.c文件从项目编译链接中排除57

图47为mTestLedAllOpen.c编写代码58

图48让LED一闪一闪59

图49流水灯效果61

图410流水灯程序设计和调试界面62

图411驱动蜂鸣器发声63

图412蜂鸣器原理64

图413按键控制LED亮灭66

图414按键电路原理图67

图415按键按下和松开的电信号变化68

图416按键控制LED(中断方式)71

图51中断查询方式的定时流水灯77

图52中断方式的定时流水灯83

图53实验过程演示: 按下键2,黄灯亮(左图),释放,黄灯熄灭(右图)87

图54200Hz声音时的通道2和通道3的波形87

图552000Hz声音时的通道2和通道3的波形87

图56本人自购的示波器90

图57开发板与示波器连线90

图61打印欢迎信息97

图62CC2540串口与PC机串口的硬件连接103

图63串口输出系统硬件信息104

图64使用C标准库输入输出函数进行串口收发实验108

图65中断方式下的串口数据收发实验113

图71手指压在CC2540上以测量芯片内部温度的变化119

图72芯片内部电压和温度(当手指按在CC2540芯片上时温度立即上升)120

图73测量光敏电阻分压127

图74手指按住光敏电阻(分压为1.805V)127

图75手指离开光敏电阻(分压为0.400V)127

图76LED强光直射光敏电阻(分压为0.071V)128

图77相机袋压在光敏电阻上(2.900V)128

图78光敏电阻原理128

图81按键控制休眠实验130

图82串口打印的信息(按键催眠、唤醒CPU实验)130

图83进入反汇编代码查看PCON.IDLE=1指令地址134

图84开发板的演示效果(睡眠定时器唤醒实验)140

图85串口控制台打印的实验过程信息(睡眠定时器唤醒实验)140

图91正常的流水灯演示实验144

图92没有及时喂狗而导致反复重启145

图93控制台显示的反复重启效果145

图94Flash读写实验148

图101手指按在DS18B20上面温度一直在上升154

图102DS18B20实验——手指按在DS18B20上面使得温度上升154

图103DS18B20温度测量模块154

图104DS18B20的Reset时序154

图105初始欢迎页162

图106键2按下背光打开162

图107键1按下开始测量气温162

图108键2按下背光关掉162

图109实验过程在串口控制台的演示162

图1010Nokia 5110显示屏正反面(带PCB小板)163

图1011CC2540与Nokia 5110的电路连接原理164

图1012PCD8544写指令时序165

图1013PCD8544初始化时序165

图1014显存结构167

图1015用水平寻址方式(V=0)往RAM写入数据的次序167

图1016汉字液晶点阵及对应编码171

图111BLE协议栈构架197

图112链路层状态机199

图113两个设备建立连接以实现可靠数据传输202

图114连接事件204

图115属性结构211

图116服务声明样例214

图117特性声明215

图118特性数值215

图121单一设备的配置227

图122网络处理器的配置228

图123SimpleBLEPeripheral项目界面229

图124系统运行机理235

图125属性结构240

图131SimpleBLEPeripheral项目界面254

图132设置预处理宏255

图133配置文件中定义预处理宏255

图134Linker Map文件257

图135SimpleBLECentral项目界面273

图136Linker Map文件273

图141添加外设驱动源文件282

图151我的蓝牙通信简易实验平台298

图152CCDBG端子扩展原理298

图153CCDBG端子扩展板与CCDBG连接298

图154增加和修改预定义宏299

图155增加预定义宏301

图156实验过程控制台显示304

图157实验初始液晶显示304

图158实验过程液晶显示304

图159实验过程控制台显示306

图1510实验过程液晶显示307

图161串口控制台打印实验过程313

图162连接建立并参数更新后的LCD显示及外围设备LED显示314

图163单击按键后的LCD显示及外围设备LED显示314

图164LCD显示MCU温度信息329

图165串口控制台打印实验过程329

图166LCD显示环境温度信息337

图167串口控制台打印实验过程337

图168LCD显示光照强度344

图169串口控制台打印实验过程344

图1610中央设备串口控制台打印实验过程353

图1611外围设备串口控制台353

图1612LCD显示即时光照强度355

图1613串口控制台打印实验过程365

图1614LCD显示当前串口发送和接收信息366

图171中央设备启动过程1(在扫描期间USB开始初始化)377

图172中央设备启动过程2(框中部分是显示的重合部分)377

图173系统初始在完成的初始LCD界面(PC自动发送键盘灯状体的USB报告)377

图174蓝牙鼠标串口控制台显示379

图175蓝牙鼠标PC桌面测试379

图176蓝牙键盘功能1串口控制台显示382

图177蓝牙键盘功能1 PC桌面测试382

图178蓝牙键盘功能2串口控制台显示384

图179蓝牙键盘功能2 播放器测试——快进384

图1710蓝牙键盘功能2 播放器测试——快退384

图1711蓝牙键盘功能2 播放器测试——暂停384

图1712蓝牙键盘灯控制实验: 串口信息输出384

图1713蓝牙键盘灯控制实验: LED显示(共3幅图,每幅图的左上: 中央设备;右下: 外围设备)384

图1714蓝牙键盘灯控制实验: LCD显示(共两幅图,每幅图的左边: 中央设备;右边: 外围设备)384

图1715插入USB口之后出现第3个串口(COM5: USB CDC虚拟串口)396

图1716系统启动界面中自动配置串口透传396

图1717串口透传通信过程396

图1718启动BTool402

图1719BTool初始化界面403

图1720开始扫描404

图1721发现广播设备404

图1722建立连接406

图1723读写属性操作界面406

图1724利用特性UUID发现特性起始句柄407

图1725利用特性句柄读特性值408

图1726利用特性UUID读特性值408

图1727解决二进制向浮点型转换409

图1728利用多个特性句柄读多个特性值410

图1729根据特性句柄写LED特性值411

图1730写入之前(仅绿灯亮)411

图1731写入之后(LED全亮)411

图1732利用特性句柄写环境温度通知配置411

图1733利用特性句柄写光照强度通知配置412

图181选择芯片对话框415

图182SmartRF Packet Sniffer界面415

图183Sniffer抓包结果416

图184TI低功耗蓝牙技术主页417

图185CC254X PC端开发范例418

图186CC254X移动智能设备开发范例418

图187CC254X嵌入式设备开发范例419

表目录

表11始终增长的传输速率8

表31核心板J3直插引脚定义27

表32核心板J4直插引脚定义27

表33核心板J5直插引脚定义28

表34LED接口30

表35按键接口30

表36传感器接口31

表37UART接口(J13)31

表38电源接口(J11)31

表39底板J4直插引脚定义31

表310底板J5直插引脚定义32

表311底板仿真接口定义33

表41P1 (0x90)端口154

表42P2(0xA0)端口255

表43P1SEL (0xF4)端口1功能选择55

表44P2SEL(0xF5)端口2功能选择和端口1外设优先级控制55

表45P1DIR(0xFE)端口1方向56

表46P2DIR(0xFF)端口2方向和端口0 外设优先级控制56

表47P0(0x80)端口064

表48P0SEL(0xF3)端口0功能选择64

表49P0DIR(0xFD)端口0功能选择65

表410P0(0x80)端口067

表411P0SEL(0xF3)端口0功能选择67

表412P0DIR(0xFD)端口0方向67

表413P0INP(0x8F)端口0输入模式67

表414P2INP(0xF7)端口2输入模式68

表415P0IFG(0x89)端口P0.7~P0.0中断状态标志72

表416PICTL(0x8C)位0端口0中断模式配置72

表417P0IEN(0xAB)端口P0.7~P0.0中断使能73

表418IEN0(0xA8)位7使能所有中断源73

表419IEN1(0xB8)位5端口0中断源使能73

表420 IRCON(0xC0)位5端口0中断标志73

表51T1CNTH(0xE3)定时器1计数器高位78

表52T1CNTL(0xE2)定时器1计数器低位78

表53T1CTL(0xE4)定时器1的控制和状态78

表54T1STAT(0xAF)定时器1状态78

表55T1CC0H(0xDD)定时器1通道1捕获/比较值高位79

表56T1CC0L(0xDA)定时器1通道0捕获/比较值低位79

表57CLKCONCMD(0xC6)与定时器相关的位时钟控制命令79

物联网技术实践教程——基于蓝牙4

表 目 录表58CLKCONSTA(0x9E)时钟控制状态80

表59IEN0(0xA8)位7中断源使能总开关83

表510IEN1(0xB8)位1定时器1中断使能84

表511T1STAT(0xAF)位5定时器1状态84

表512IRCON(0xC0)位1定时器1中断标志84

表513PERCFG(0xF1)外设控制87

表514P2DIR(0xFF)端口2方向和端口0外设优先级控制87

表515P0SEL(0xF3)端口0功能选择88

表516P0DIR(0xFD)端口0功能选择88

表517T1CCTL3(0x62A3)定时器1通道3捕获/比较控制88

表518T1CC0H(0xDD)定时器1通道1捕获/比较值高位89

表519T1CC0L(0xDA)定时器1通道0捕获/比较值低位89

表61U0CSR(0x86)USART0控制和状态99

表62U0UCR(0xC4)USART0的UART控制99

表63U0GCR(0xC5)USART0通用控制100

表64U0BUF又名U0DBUF(0xC1)USART0接收/传送数据缓存100

表65U0BAUD(0xC2)USART0波特率控制101

表66P2DIR(0xFF)端口2方向和端口0外设优先级控制101

表6732MHz系统时钟的常用波特率设置101

表68CHVER(0x6249)芯片版本105

表69CHIPID (0x624A)芯片ID105

表610CHIPINFO0(0x6276)芯片信息字节0105

表611CHIPINFO1(0x6277)芯片信息字节1106

表612TCON(0x88)中断标志114

表613IRCON2(0xE8)中断标志5114

表614串口收发中断向量描述114

表615IEN0(0xA8)中断使能0114

表616IEN2 (0x9A)中断使能2115

表71APCFG(0xF2)模拟外设I/O 配置120

表72ADCL(0xBA)ADC数据低位120

表73ADCH(0xBB)ADC数据高位121

表74ADCCON1 (0xB4)ADC 控制1121

表75ADCCON2(0xB5)ADC控制2121

表76ADCCON3(0xB6)ADC控制3122

表77TR0(0x624B)测试寄存器0123

表78ATEST(0x61BD)模拟测试控制123

表81PCON(0x87)供电模式控制132

表82SLEEPCMD(0xBE)睡眠模式控制132

表83SLEEPSTA(0x9D)睡眠模式控制状态132

表84ST2(0x97)休眠定时器2141

表85ST1(0x96)休眠定时器1141

表86ST0(0x95)休眠定时器0141

表87STLOAD(0xAD)睡眠定时器加载状态141

表91看门狗寄存器145

表101发送ROM指令155

表102发送存储器指令156

表103Nokia 5110液晶屏接口(带PCB小板)163

表104USART功能配置164

表105PCD8544指令集165

表106表105中有关字符的解释166

表107PCD8544 SPI时钟频率167

表108PERCFG(0xF1)外设控制168

表109U1CSR(0xF8)USART 1控制和状态168

表1010U1UCR(0xFB)USART 1控制168

表1011U1GCR(0xFC)USART 1通用控制169

表1012U1BUF(0xF9)USART 1接收/传送数据缓存170

表111首要服务与次要服务的属性数据库样例214

表122SimpleKeys 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 EVDO系统90

4.1.1概述90

4.1.21x EVDO的网络结构94

4.1.3EVDO Rev A信道95

 4.1.4EVDO Rev A关键技术97

4.2WCDMA系统104

4.2.1概述104

4.2.2WCDMA标准的演进106

4.2.3WCDMA的空中接口113

4.3TDSCDMA系统135

4.3.1概述135

4.3.2TDSCDMA的网络结构135

4.3.3TDSCDMA系统的关键技术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.3EUTRAN接口的通用协议模型168

5.3.4LTE的无线信道171

5.3.5无线资源管理173

5.3.6移动性管理176

5.3.7LTEA的性能增强181

5.3.8TDLTE与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 8051 11

2.2 安装IAR8051-8.3 12

2.2.1 下载IAR8051-8.3 12

2.2.2 安装IAR8051-8.3 13

2.2.3 破解IAR8051-8.3 19

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 核心板:WB2540MVA 27

3.2.2 底板:WX2530 29

3.2.3 仿真器:CCDBG 35

3.3 搭建实验硬件环境 36

3.4 创建工程-点亮LED 38

第二篇 基础实验 49

第4章 GPIO实验 51

4.1 LED实验:打开所有LED 51

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 按键实验:按键控制LED 65

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 Profile 243

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_cfg 294

14.3 修改hal_led 295

14.4 修改hal_key 296

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 控制LED 309

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章 蓝牙USB 366

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 实现iHostTest 388

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.3 19

图 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 memory 1

图 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  启动BTool 389

图 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)–端口1 52

表 4-2  P2(0xA0)–端口2 53

表 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)–端口0 63

表 4-8  P0SEL (0xF3)–端口0 功能选择 63

表 4-9  P0DIR (0xFD)–端口0 功能选择 63

表 4-10  P0 (0x80)–端口0 66

表 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) –芯片ID 107

表 6-10  CHIPINFO0(0x6276)–芯片信息字节0 107

表 6-11 CHIPINFO1(0x6277)–芯片信息字节1 108

表 6-12  TCON(0x88)–中断标志 117

表 6-13  IRCON2(0xE8)–中断标志5 117

表 6-14  串口收发中断向量描述 117

表 6-15  IEN0(0xA8)–中断使能0 117

表 6-16  IEN2 (0x9A)–中断使能2 117

表 7-1  APCFG (0xF2)–模拟外设I/O 配置 123

表 7-2  ADCL (0xBA)-ADC 数据低位 123

表 7-3  ADCH (0xBB) - ADC 数据高位 123

表 7-4  ADCCON1 (0xB4)-ADC 控制1 124

表 7-5  ADCCON2 (0xB5)-ADC控制2 124

表 7-6  ADCCON3 (0xB6)-ADC 控制3 125

表 7-7  TR0 (0x624B)–测试寄存器0 126

表 7-8  ATEST (0x61BD)–模拟测试控制 126

表 8-1  PCON(0x87)–供电模式控制 136

表 8-2  SLEEPCMD(0xBE)–睡眠模式控制 136

表 8-3  SLEEPSTA(0x9D)–睡眠模式控制状态 136

表 8-4  ST2(0x97)–休眠定时器2 146

表 8-5  ST1(0x96)–休眠定时器1 146

表 8-6  ST0(0x95)–休眠定时器0 146

表 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