ble

蓝牙BLE: 蓝牙4.0 BLE广播数据解析(转)

戏子无情 提交于 2019-12-02 15:38:04
BLE 设备工作的第一步就是向外广播数据。广播数据中带有设备相关的信息。本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析。 1. 广播模式 BLE 中有两种角色 Central 和 Peripheral ,也就是中心设备和外围设备。中心设备可以主动连接外围设备,外围设备发送广播或者被中心设备连接。外围通过广播被中心设备发现,广播中带有外围设备自身的相关信息。 广播包有两种: 广播包 (Advertising Data)和 响应包 (Scan Response),其中广播包是每个设备必须广播的,而响应包是可选的。 数据包的格式如下图所示(图片来自官方 Spec): 每个包都是 31 字节,数据包中分为有效数据(significant)和无效数据(non-significant)两部分 有效数据部分 :包含若干个广播数据单元,称为 AD Structure 。如图中所示,AD Structure 的组成是:第一个字节是长度值 len,表示接下来的 len 个字节是数据部分。数据部分的第一个字节表示数据的类型 AD Type ,剩下的 Len - 1 个字节是真正的数据 AD data 。其中 AD type 非常关键,决定了 AD Data 的数据代表的是什么和怎么解析,这个在后面会详细讲; 无效数据部分 :因为广播包的长度必须是 31 个 byte,如果有效数据部分不到

NORDIC 烧录BLE协议栈后不能用JLINK仿真bootloader问题

微笑、不失礼 提交于 2019-12-02 06:05:44
bootloader的程序区域是0X78000~0X7E000 但是在bootloader程序中定义了0X0FF8与0XFFC位置处的数据,此数据与BLE协议栈冲突,BLE协议栈的flash范围是0~0X25FFF,所以烧录协议栈后不能用JLINK仿真 具体在bootloader中的代码为: /** @brief Location (in the flash memory) of the bootloader address. */ #define MBR_BOOTLOADER_ADDR (0xFF8) /** @brief Location (in UICR) of the bootloader address. */ #define MBR_UICR_BOOTLOADER_ADDR (&(NRF_UICR->NRFFW[0])) /** @brief Location (in the flash memory) of the address of the MBR parameter page. */ #define MBR_PARAM_PAGE_ADDR (0xFFC) uint32_t const m_uicr_mbr_params_page_address __attribute__((at(NRF_UICR_MBR_PARAMS_PAGE_ADDRESS))) = NRF

NORDIC BLE升级

ぐ巨炮叔叔 提交于 2019-12-02 04:57:19
NRF52832 SDK15.3.0 安装环境: 1、gcc-arm-none-eabi编译环境:GCC编译环境( https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads ) 升级需要micro_ecc_lib_nrf52.lib,需要使用GCC编译器生成 2、MinGW平台( https://sourceforge.net/projects/mingw/files/latest/download?source ) 用于编译makefile文件,产生micro_ecc_lib_nrf52.lib 3、python( https://www.python.org/downloads/ ) 选择版本在2.7.6~3.0.0之间的版本,用于安装nrfutil工具,nrfutil工具用于产生私匙、公匙以及升级需要的settings信息 4、nrfgo-studio(www.nordicsemi.com) 安装后主要使用"nrfjprog.exe"和"mergehex.exe",用于合并与下载文件 5、nrf connect app 用于手机端蓝牙APP 安装说明: 1、gcc-arm-none-eabi编译环境 2、mingw 平台安装 安装好后弹出package包安装界面MinGW Installation

Bluetooth LE(低功耗蓝牙)

柔情痞子 提交于 2019-12-02 00:34:02
前言 在写这篇文章的时候,谷歌刚刚发布了Android Wear ,摩托罗拉也发布了 Moto 360 智能手表。Android Wear 的API还是相当 基本的 ,是很好的文档材料 ,而且还会不断的更新 , 所以我不打算 写一个关于他们的 教程 ( 至少现在还没有 )。 有趣的是 Moto 360 支持 Android 4.3及之后的版本。 这明显是Bluetooth LE只有在Android 4.3及以后才被支持的原因,这也意味着 Moto 360 支持Bluetooth LE。Bluetooth LE 将 不仅是可穿戴技术的核心技术,而且也是许多物联网设备的核心技术。 在这个系列博客中 我们将了解 Bluetooth LE 在 Android 上的使用 。 Bluetooth 与 Bluetooth LE简介 蓝牙自20世纪90年中后期就已经出现,并已成为短距离设备的对等网络的标准。一个缺点是它需要消耗一点电量,这在移动设备上是一 个问题,而且在电池更小的可穿戴设备中需要消耗更多电。另一个缺点是两个蓝牙设备必须配对才可以相互通信。虽然配对过程只需要执行一次,但对用户来说这是一个痛苦的经历。 Bluetooth Low Energy(低功耗蓝牙),缩写为Bluetooth LE,或BLE,作为蓝牙4.0 (有时称为蓝牙智能)规范的一部分,并针对上述的这些具体问题而被引入

NORDIC ble RSSI

自闭症网瘾萝莉.ら 提交于 2019-12-01 19:06:09
static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context) { ret_code_t err_code; switch (p_ble_evt->header.evt_id) { /* 连接事件 */ case BLE_GAP_EVT_CONNECTED: NRF_LOG_INFO("Connected"); m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle; err_code = sd_ble_gap_rssi_start(m_conn_handle, 2, 2); //启动rssi APP_ERROR_CHECK(err_code); err_code = nrf_ble_qwr_conn_handle_assign(&m_qwr, m_conn_handle); APP_ERROR_CHECK(err_code); ble_conn_handler(); break; /* RSSI改变事件 */ case BLE_GAP_EVT_RSSI_CHANGED: ble_rssi = p_ble_evt->evt.gap_evt.params.rssi_changed.rssi; //获取rssi break; default: // No

第17节-BLE安全管理概述

▼魔方 西西 提交于 2019-12-01 07:27:57
安全管理是BLE中最复杂的内容,涉及LL层、SM层、GAP层 一、妈妈的担心 1. 白名单: 妈妈说,你只能跟A、B、C这3个好孩子玩;他们打电话给你,你才可以出去玩。 A、B、C三人,就在妈妈的“白名单”里。 如果坏小孩D打电话时冒充是B,这怎么办? 妈妈有高招,记得B的声音。 妈妈心里想,这人的声音不是ABC任何一个,肯定是坏小孩。 这两者结合在一起就是: 是否使用白名单,就看你妈妈是否开明了。 类比于BLE,有下图: 可解析列表中会有一个IRK,IRK所对应的是设备的实体地址。 ABC同学会打电话给你的妈妈,妈妈根据声音解析出他们的名字。那么对于蓝牙设备,这些设备发出的无线信号中会含有一个可解析地址。 可解析地址的格式是这样的,它分为两部分: 1)随机数 2)hash值,可以通过ah(IRK,prand)计算出hash值。使用IRK来加密那个随机数。 hash和随机数结合起来就可以得到一个可解析地址。 可以这么理解: 1)设备发出的无线信号中会含有一个可解析地址(这是已知条件,此地址中会含有一个hash'值); 2)使用Resolving List中的每个IRK来加密地址中的随机数。这样的会得到一个hash值; 3)判断得到的hash值和hash'的值是否相同 如果相同,就表示在Resolving List中找到了对应的地址(这个地方

蓝牙语音芯片模块数传音频BLE支持spiflash和U盘播放选型

蓝咒 提交于 2019-12-01 02:57:57
蓝牙系列产品分类 一、简介 目前我们所主推的蓝牙方案,包含 BT201方案、BT301方案、BT321F方案、BT401方案。这些方案都是为了满足不同的应用场景。 [遵循的原则就是硬件相同 软件不同来满足需求] 主要的功能特点如下: 1、 蓝牙音频播放、 TF卡U盘无损播放、spiflash语音播放、I2S音频主从、 串口 AT指令控制 2、 蓝牙 BLE和SPP双模数传、 AUX输入、FM功能。以及读写TXT文件、录音等等功能 3、蓝牙音频发射,连接蓝牙耳机、蓝牙音箱等等从机设备的应用场景 4、 蓝牙芯片、蓝牙模块 等等方式出货 还有一些细分的应用场景,资料没有办法做到完善。只要围绕蓝牙的应用,我们基本都有涉及 二、产品的分类表 2.1 KT1025A和KT1025B的脚位图 1、KT1025A和KT1025B唯一的区别,就是KT1025A是立体声,而KT1025B是单声道。在芯片的第7脚 主体的功能,都一样 2、KT1025A和KT1025B是可以编程的, 所以我们开发了很多的软件版本 ,来满足不同的应用需求 注意: [单个扬声器选KT1025B] [两个扬声器选KT1025A] !!!! 2.2方案分类 --- 蓝牙类 2.3 选型说明 1、如果对蓝牙以及音频比较了解,画板水平较好。那么建议直接用芯片,可以选择:BT201、BT301、BT321F其中的一款方案即可

蓝牙BLE数传语音芯片SOC选型说明和参考电路

喜夏-厌秋 提交于 2019-11-30 22:52:37
一、 简介 随着手机的平民化以及物联网的普及,越来越多的产品都在开始考虑增加蓝牙功能,从何实现和智能手机的人机交互。但是一些特定的产品,单纯一颗蓝牙芯片往往是无法实现的。例如:需要蓝牙数据传输 ,同时需要语音提示的一些应用场景,所以工程师在这一块的选择,就会遇到困难 普通的应用场景如下: 二、 芯片 的 硬件说明 芯片内置flash 存储语音 ,并且也支持外扩 spiflash 芯片,实现客户不同的语音播报需求 三、 选型的总结 笔者认为,选型的原则就是不要不够,也不要浪费。能用国产,就坚决不用国外的。能用成本低的就坚决不用成本高的,能用 SOC芯片,坚决不用分立器件 1、 随着芯片朝着 SOC的趋势,传统的很多很多单一芯片的功能,会越来越趋向于集成化 2、单颗芯片取代了一些需要多颗芯片完成的功能 来源: https://www.cnblogs.com/qyvhome/p/11643776.html

XY-MBD07A无线蓝牙模块设置

狂风中的少年 提交于 2019-11-28 19:31:09
XY-MBD07A无线蓝牙模块设置 1、安装串口调试助手 没有版本要求,没有型号要求,我用的是XCOM V2.0 2、安装USB转TTL模块驱动(没有的可以问卖家) 这就不用细讲了,反正安装驱动就行,驱动想在哪里获得都行。 3、连接两个模块 VCC——VCC GND——DNG RXD——TXD TXD——RXD 很简单,连接好,插在电脑U口,模块灯不停的闪就对了,不闪就是电源接反了。 注意:模块供电采用3.3V,连接串口工具时,务必给模块正确供电,否则有几率损坏模块。 为方便测试,步骤3处开发人员也可接线将Uart_RTS直接接地, CMD_DATA_SWITCH /BCTS悬空,此状态下蓝牙模块会一直处于串口接收模式 开发者在正常使用过程中,主机(MCU)如有数据发送至BLE模块,需将BRTS拉低,主机可在约100us后开始发送数据。发送完毕之后主机应主动抬高BRTS,让模块退出串口接收模式。要注意的是,抬高BRTS之前请确认串口数据完全发送完毕,否则会出现数据截尾现象。 4、这时打开手机,启用蓝牙,搜索名称进行连接配对(XY-MBD07A模块BLE默认广播名称为NBee_BLEXXXXXX,SPP默认广播名称为NBEE_SPPXXXXXX),一切OK,就要开始关键步骤了。 5、① 将USB转串口工具插入电脑,进入电脑设备管理器确认目前所用的串口号。 ② 模块初上电

BLE——协议层次结构

匆匆过客 提交于 2019-11-27 22:35:34
未完待续…… BLE协议 Bluetooth Application Applications GATT-Based Profiles/Services Bluetooth Core (Stack) BLE Host ATT、GATT、SM GAP L2CAP HCI(对蓝牙协议无影响) BLE Controller Link Layer Physical Layer 1 Bluetooth Core(Stack)   蓝牙核心协议,关注蓝牙核心技术的描述和规范,只提供基础的机制。   蓝牙核心协议由Controller和Host两部分组成,在一个系统中,Host只有一个,但Controller可以有多个,如:单独的LE Controller;单独的BR/EDR Controller;单独的LE+BR/EDR Controller;在单独的BR/EDR Controller或LE+BR/EDR Controller基础上,增加一个或多个额外的AMP Controller。 1.1 Controller   Controller实现射频相关的模拟和数字部分,完成最基本的数据发送和接收,Controller对外接口是天线,对内接口是主机控制器接口HCI(Hostcontroller interface);控制器包含物理层PHY(physicallayer),链路层LL(linker