低功耗蓝牙4.0BLE编程-nrf51822开发(3)
蓝牙协议栈
nrf51822开发中,蓝牙协议栈和应用开发是分开的。
(1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支持(包含MITM和OOB配对);
(2)应用部分和协议栈部分内存空间隔离;
(3)采用异步事件驱动程序架构;
(4)没用使用RTOS,可以方便移植到任何RTOS;
(5)SoftDevice是使用标准的C语言编写的,它是已经被编译好的二进制文件,需要使用者将它烧写到芯片中。
(6)API包含了Generic Attribute Protocol (GATT), Generic Access Profile (GAP), Logical Link Control and Adaptation Protocol(L2CAP).
Radio Notification
Radio Notification功能用于SoftDevice向应用层通知ACTIVE和INACTIVE(nACTIVE)消息,这两个消息通过中断发出。
(1)ACTIVE信号在RADIO事件发生前发出;
(2)INACTIVE(nACTIVE)在RADIO事件结束前发出。
上图描述了时间的消耗,在tndist-tprep时间内数据发送到协议栈。
配置的各个时间应满足:tndist+tevent < tinterval.
下表描述了tndist和tinterval组合后可发送最大包个数的关系:
Bootloader
要使用bootloader,它的起始地址设置在UICR.BOOTADDR寄存器中。芯片复位后,SoftDevice检查UICR.BOOTADDR的值是否为0xffffffff,如果它不是,说明使用了bootloader,它使用bootloader起始地址处的中断向量表并启动程序。如果它是,则没有使用bootloader,程序跳转到应用程序中执行。
SoftDevice和应用层资源使用
可以看到,s110使用了80KB的ROM和8KB的RAM空间。
最新文章
- SqlServer灾备方案(本地)
- Openstack4j 在 Maven 中的构建
- Swift开发小技巧--private访问修饰符报错的情况
- winform 打印控件
- 【leetcode❤python】Binary Watch
- sso单点登录解决方案收集
- 没有在xml中引入 相关的配置文件
- [转]jenkins2 插件安装
- pd16.5增加字段备注
- 211806385 黄存慧 https://www.cnblogs.com/huangch/ https://github.com/HuangCh327
- Vivado Turtorial 01 —— 使用vivado中debug功能(类似ISE中ChipScope)
- BZOJ4237 稻草人 分治 单调栈
- 使用json改写网站
- Scrapy-Redis分布式策略
- sass的@at-root
- List与数组的相互转换
- 第5章 进程环境(1)_进程结构(task_struct)
- 12只超酷机器人,在家用3D打印搞定!
- [重要更新][Quartus II][14.1正式版]
- Java-CSV文件读取