整体

1.TI的蓝牙平台支持2种协议栈/应用配置:单一设备配置、网络处理器配置

2.协议栈最顶层2个通用profile:

GAP 通用访问配置文件层 Generic Access Profile

GATT 通用属性配置文件层 Generic Attribute Profile

3. GAP:处理设备的接入方式及接入过程:

①设备发现 ②链路建立 ③链路终止 ④启动安全功能 ⑤设备配置(主要是连接参数配置)

GATT:完成服务器与客户端之间通信的相关子过程

4.BLE支持40个信道的跳频机制,其中3个通道用于Advertise,剩下的用于数据通信

5.OS抽象层:疑问 如何配置一个新的任务,任务的优先级,事件触发机制,消息的传递

6.主要用于实现的是2个代码文件:

OSAL\_SimpleBLEPeripheral.c 任务回调函数数据的定义 和 任务初始化函数定义 作为OSAL的外部全局变量

SimpleBLEPeripheral.c BLE应用程序的实现代码,该源文件调用一系列的BLE API函数,完成复杂的蓝牙协议

通过 const pTaskEventHandleFn tasksArr[] 数组来存储要调用的函数

simpleBLEPeripheral.h 一些常量的定义,和蓝牙应用程序任务初始化和任务回调函数声明。

7.LL层任务函数优先级最高, 而应用程序函数的优先级最低

8.OSAL为每个任务分配了1个16位的Event,每一位代表一个事件,最高位代表SYS\_EVENT\_MSG,这个事件被OSAL系统保留

9.main()函数中最后进入的 void osal\_run\_system( void ),这个函数就是看相应任务有没有事件发生,有时间发生就跳转到相应的函数

10.任务间通信,一般通过 事件 和 消息 进行,每当任务间有消息传递,都会触发SYS\_EVENT\_MSG事件,并且每次处理完事件后,都要清空标志位。

osal\_set\_event() OSAL.h中 该函数会直接调度一个事件

osal\_start\_timerEx() OSAL\_Timers.h中 需要掩饰触发的事件,调用这个函数

11.Heap Manager(堆栈管理),函数osal\_mem\_alloc,给函数分配需要的字节数,osal\_mem\_free()用来释放内存。

OSAL( 操作系统抽象层 Operate System Abstraction Layer )

1.OSAL中的消息:

发送消息前,用osal\_msg\_allocate()函数分配内存空间,填充数据,调用osal\_msg\_send()将消息发送到指定的函数中去。然后置位该函数的SYS\_EVENT\_MSG,然后接收端使用osal\_mem\_receive()将消息接收过来,接收完成后,使用osal\_mem\_deallocate()函数来回收当前消息所占用的内存。OSAL推荐在任务中使用独立的消息接收函数来处理消息,例如: simpleBLEPeripheral\_ProcessOSALMsg()函数。

2.GAP (通用访问配置文件层 Generic Access Profile )

连接过程:

  1. 设备发现
  2. 链路建立
  3. 链路终止
  4. 启动安全功能
  5. 设备配置(主要是连接参数配置)

GAP层总是工作在以下角色中的1种:

  • Broadcaster 广播员,表明我在,但是你们只能看到我,不可以连接我
  • Observer 观察者,看看谁在,我只观察,不连接
  • Peripheral 外设,我存在,设想连我,我就连谁
  • Centeral 中心,看看谁在,工作在单层或多层的连接

3.连接过程:

Peripheral向外广播->Centeral接收到向从机发送"Scan"命令->Peripheral以"ScanResp"命令回应->Centeral发送连接请求

4.Connect Interval 通信间隙 每个间隔1.25ms为基本单位,最小6单位7.5mS,最大3200单位4.0S。

5.Slave Latency 从机延时 表示Peripheral可以连续忽略的连接数,最大不能超过499个,最长不能超过32S。

6.Suprvision Timeout 监管超时 2个成功连接事件之间的最大间隔。

7.Profile 一种规范 ; Service 一个服务 ; Characteristic 特征值 ; UUID 统一标识码(Service,Characteristic都需要),Centeral与Peripheral间的通信,均通过Characteristic实现

8.发送数据

主->从 Client调用GATT\_WriteCharValue()函数发送;

从->主 Service调用GATT\_Notification()函数实现。

9.接收数据

从\<-主 从机接收后,会产生1个GATT\_Profile\_Callback调用;

低功耗部分

1.如何总是在PM1

osal\_pwrmgr\_device( PWRMGR\_ALWAYS\_ON );

2.如何进入PM2

osal\_pwrmgr\_device( PWRMGR\_BATTERY );在空闲的时候就会进入到PM2模式

3.如何进入PM3

存在连接就断开连接,存在广播就停掉广播,并确认自己创建的所有定时任务都已关闭,则系统应该就会进入PM3模式,只能进行外部中断唤醒

4.CC2540低功耗中引脚的设置问题

不用的引脚应该与外部不连接,并将引脚配置为通用上拉输入状态(除了P1.0,P1.1),并且这些脚不应该与VDD,GND直接相连。

\*关于P1.0,P1.1,"User Guide"给出的解释是"except P1.0 and P1.1, which do not have pullup/pulldown capability",

常用的命令,功能,以及实现方法

1.切换电源模式

osal\_pwrmgr\_device( PWRMGR\_ALWAYS\_ON );

osal\_pwrmgr\_device( PWRMGR\_BATTERY );

2.Peripheral怎么主动断开与Centeral的连接

bStatus\_t GAPRole\_TerminateConnection(); 在文件peripheralBroadcaster.c文件中

3.怎么设置Peripheral的广播的超时时间

首先保证是限制类型的广播 即DEVDISC\_MODE\_LIMIT(永久广播是 DEVDISC\_MODE\_GENERAL ),在 simpleBLEPeripheral.c文件 static uint8 advertData[]数组中设置。

当模式处于Limit模式时,广播超时的设置可通过设置宏 TGAP\_LIM\_ADV\_TIME\_OUT,不设置的话,默认超时时间是180S。

4.如何打开与关闭广播

uint8 initial\_advertising\_enable = TRUE/FALSE TRUE:打开广播 FALSE:关闭广播

GAPRole\_SetParameter( GAPROLE\_ADVERT\_ENABLED, sizeof(uint8), &initial\_advertising\_enable );

CC2540\CC2541 资料整理相关推荐

  1. cc2540 cc2541 开发板资料更新日志

    经过多次PCB打样和全面调试.已经完毕了cc2540 cc2541的开发板的批量贴片.硬件告一段落, 接下来是全面完好软件方面的工作.眼下已经针对没有开发经验的用户编写完毕0基础基础实验代码和教程.接 ...

  2. 蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现

    蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现 虽然蓝牙4.0 BLE芯片CC2540 是单芯片(即用户可以对它进行芯片级代码编写), 是8051增强型主控, 带蓝牙4. ...

  3. CC2540/CC2541/CC254x之OSAL操作系统抽象层

    测试环境 协议栈版本:BLE-CC254x-1.4.0 开发环境IAR版本:IAR 8.20 硬件设备:CC2540/CC2541开发板 示例测试Demo工程:simpleBLEPeripheral工 ...

  4. epoll相关资料整理

    http://www.cppblog.com/converse/archive/2008/10/13/63928.html epoll相关资料整理 学习epoll有一段时间了,最近终于有一个服务器采用 ...

  5. 深入理解计算机系统 -资料整理 高清中文版_在所不辞的博客-CSDN博客_深入理解计算机系统第四版pdf

    深入理解计算机系统 -资料整理 高清中文版_在所不辞的博客-CSDN博客_深入理解计算机系统第四版pdf

  6. STM32 资料整理贴(更新到10年1月)[转]

    看到9G从QQ群上转的,后来还有没贴完 ,后面还有一大堆 链接地址 http://www.stmsky.com/bbs/viewthread.php?tid=2103&extra=page%3 ...

  7. H.264的一些资料整理

    本文转载自 http://blog.csdn.net/ljzcom/article/details/7258978, 如有需要,请移步查看. Technorati 标签: H.264 资料整理 --- ...

  8. [资料整理] Decentralized Services Orchestration, Choreography相关的几篇论文

    昨天讨论了一下论文笔记管理的方法, 我以前用过各种做论文笔记的方法. 打算逐步整理一下以前的论文笔记, 标题里注明为"[资料整理]". M. G. Nanda, S. Chandr ...

  9. 【方案】0615冰箱运行监测系统资料整理:进展及规划

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 资料整理重点内容回顾 改名字:冰箱运行监测系统 需求:[S操作]冰箱正常运行监控系统 ...

最新文章

  1. WINDOWS高级窗口的客户区域拖动技术及其应用
  2. 如何汉化 OpenERP 6.1 日历视图
  3. Quick-Cocos2d-x 集成 Google protobuf 方法
  4. 使用Maven原型高效创建Eclipse模块
  5. Python 装饰器初探
  6. Spring 类管理机制
  7. Android 雪花飘落动画效果 自定义View
  8. WINDOWS 下安装boost
  9. Mac/Linux使用fcrackzip
  10. Ubuntu 18.04 美化日记
  11. base command
  12. intersection-over-union(IoU: 交并比)
  13. 无线发射机中的正交上变频技术--USRP X410软件无线电平台开发
  14. PCI Express 16X和PCIE 2.0有什么区别?哪个更好?
  15. 树莓派智能小车资料整理
  16. 一场云端的“神仙打架”:BAT加华为的影响未来之争
  17. vscode 下载 安装
  18. word2003文档转pdf预览加盖水印与套红
  19. SQL Lesson 13: Inserting rows 插入行
  20. Coursera | Applied Plotting, Charting Data Representation in Python(UMich)| Assignment4

热门文章

  1. python中numpy zeros_为什么numpy.zeros和numpy.zeros的性能不同?
  2. 百度地图配合java 代码制作地图
  3. 迅睿CMS 程序安装教程
  4. 基于51单片机的扫地小车,扫地机器人设计 主要功能有寻迹避障,来回清扫功能,往返清扫功能
  5. 电话号码344格式,修改也保持344格式
  6. CCNA-基础配置(1)
  7. Paper之CVPRICCVECCV:2009年~2019年CVPRICCVECCV(国际计算机视觉与模式识别会议国际计算机视觉大会欧洲计算机视觉会议)历年最佳论文简介及其解读
  8. mapbox一学就会系列:01 第一个地图页面
  9. 2022煤气上岗证题目及答案
  10. 机器学习——【2】史上最全“特征工程“介绍