• 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
返回

电子发烧友 电子发烧友

  • 全文搜索
    • 全文搜索
    • 标题搜索
  • 全部时间
    • 全部时间
    • 1小时内
    • 1天内
    • 1周内
    • 1个月内
  • 默认排序
    • 默认排序
    • 按时间排序
大家还在搜
  • 如何转储QN9021的bin数据?

    我们有一款产品使用 Q9021 和 BLE SDK 1.0.0。我们得到了一些退货单位,我想检查一下bin文件的代码是否正确。如何转储QN9021的bin数据?

    2023-05-25 07:32

  • NXP短距离无线通信蓝牙模块QN9021的原理

    FS-QN9021是采用NXP单模BLE(BluetoothLowEnergy)芯片QN9021作为核心的超低功耗射频收发模块,遵循低功耗蓝牙协议,适用于短距离无线通信组网领域。 QN9021是一款

    2019-04-30 11:46

  • FireBlue QN9021 Proximity Reportor profile(防丢器) 之源码分析 (二)疑惑与解惑

    文篇开头时,本想再啰嗦一下,但回头一想,看这个这篇文章的朋友,应该估计着也是学习的朋友,非最终用户,对防丢器这个东西的原理就算不懂应该也能会操作会使用,所以小弟就不去啰嗦介绍这个东西是怎么使用,大概扯蛋一下自己刚接触这东西的时候对防丢器的疑惑与解惑的过程。我拿到FireBlue 板子的时候 里面固化的程序就是防丢器这个应用,抱着对这个IC不熟悉的心理,我一开始没有急着去烧录跑其他例程尝新鲜,而是照着 wiki 的入门指南玩起了这个应用,小弟手上刚好有个 5S 于是便在app_store 下载了iswhere 。应用也挺简单的,就扫描,连接,发出报警,走远报警想起,靠近报警取消,基本就这样。这就是功能了。wiki 上推荐了一块 IOS 的BLE 调试app ,Light Blue,我也下载安装了,用这工具分析了一下防丢器这个应用。还真别说,这绝对是一个好工具,看来开发商的推荐不错,为入门者扫清了基本障碍。疑惑来了,1.防丢器的原理是什么?2.为什么防丢器的server 要这么设计,这么设计的构想是什么?3.它与App 是怎么配合工作的?抱着这些疑惑,我网上找了不少资料,1.我自己一直以为防丢的原理就是检测蓝牙的连接,如果连接断开了,就报警,但是肯定不是我想的那么简单,连接丢失报警这是其中之一,还有就是检测信号的强度,计算距离,如果超过设置的阀值就发出警报。2.为什么这么设计,我想就我现在唯一能给的就是规格书这么一件了,只能看大厂商们一起制定的 specification 下载地址为:http://download.csdn.net/detail/q562359345/85603313.玩转应用后,就应该能知道,与app 的配合,就是提供数据给APP.或者接受APP 发下来的指令,处理指令,比如接受APP 的报警指令。 根据提供的 Proximity profile specification里所提到的三个Server,分别如下:1.Link Loss (UUID:0x1803) 连接丢失服务,当手机离得防丢器距离较远,信号丢失导致连接丢失的情况下,手机app会收到该链接丢失的事件,软件处理该事件,使手机发出警告;同样,防丢器设备端,也会收到链接已断开的消息,同样是使设备驱动蜂鸣器,发出警报。2.Immediate Alert (UUID:0x1802) 即时报警服务,该服务接受app 端下发的报警指令,当app 端通过计算与设备端的信号值 小于某个阀值是便下发指令 报警提示。该server 为Write without Response 接受写的值为No Alert(0x00),Mild Alert(0x01),High Alert(0x02)3.Tx Power(UUID:0x1804) 发射功率服务,该服务,提供一个只读的属性,该属性值代表当前设备的发射功率。以供手机端APP 用于配合RSSI计算距离、

    2015-11-06 10:47

  • FireBlue QN9020 QN9021 QN902x Proximity Reportor profile(防丢器) 之源码分析 开篇

    前些日子,小弟不才,搞了套bluetooth 4.0 的开发板,名曰 FireBlue ,上面使用的IC 为昆天科的QN9021,想起昆天科,其出品的FM QN80 系列的也算是在小弟生命

    2015-11-06 10:45

  • FireBlue QN9021 QN902x Proximity Reportor profile(防丢器) 之源码分析 (三)广播

    每一对蓝牙设备的的通信都有一个连接的过程,而蓝牙4.0 与传统蓝牙的连接过程又有些不一样的,BLE4.0 的连接过程的先由从机(这里自然就是防丢器)先通过广播通道广播数据(advertising),主机(手机)监听广播通道,如果监听到有广播数据,则向其发送扫描请求(scan request),广播者接受到扫描请求后回复扫描响应(scan response)。流程如下图:从机的广播关键有3点1.广播的数据2.扫描响应的数据3.广播的时间间隙回想一下FireBlue 开发板 烧录防丢器方案程序 上电后,需要向上拨动 joystick 才会开始广播,我们就从这里入手,找到按键处理函数,得到关键代码如下:app_gap_adv_start_req(GAP_GEN_DISCOVERABLE|GAP_UND_CONNECTABLE,app_env.adv_data, app_set_adv_data(GAP_GEN_DISCOVERABLE),app_env.scanrsp_data,app_set_scan_rsp_data(app_get_local_service_flag()),GAP_ADV_FAST_INTV1, GAP_ADV_FAST_INTV2);[color=rgb(247, 87, 51) !important]复制代码F12 得到函数原型与参数注释如下***************************************************************************************** @brief Start the device to advertising process.*//**** @param[in] mode Device mode to set, possible values are:* - GAP_NON_DISCOVERABLE* - GAP_GEN_DISCOVERABLE* - GAP_LIM_DISCOVERABLE* - GAP_NON_CONNECTABLE* - GAP_UND_CONNECTABLE* - GAP_DIR_CONNECTABLE* @param[in] adv_data Pointer to advertising data used in the advertising packets* @param[in] adv_data_len The length of advertising data* @param[in] scan_rsp_data Pointer to Scan Response data used in the advertising packets* @param[in] scan_rsp_data_len The length of Scan Response data* @param[in] adv_intv_min Minimum interval for advertising* @param[in] adv_intv_max Maximum interval for advertising* @responseGAP_SET_MODE_REQ_CMP_EVT* @description** This function is used to set the device to advertising.** @note* The stack will keep advertising with new parameters if calling this function in advertising state.* The adv_intv_min and adv_intv_max shall not be set to less than 0x00A0(100 ms) if the mode* is GAP_NON_DISCOVERABLE.*****************************************************************************************/void app_gap_adv_start_req(uint16_t mode, uint8_t *adv_data, uint8_t adv_data_len,uint8_t *scan_rsp_data, uint8_t scan_rsp_data_len,uint16_t adv_intv_min, uint16_t adv_intv_max);[color=rgb(247, 87, 51) !important]复制代码 第一个参数为广播的模式, 第二、第三为广播的数据的指针和长度。 第四、第五为扫描响应的数据指针和长度。 第六、第七为广播间隙的最小和最大值。 跟进app_gap_adv_start_req 得知,实质是TASK_APP 向 TASK_GAP 发送了一个GAP_SET_MODE_REQ 消息,消息携带了的参数为广播的内容。struct gap_set_mode_req *msg = KE_MSG_ALLOC(GAP_SET_MODE_REQ, TASK_GAP, TASK_APP,gap_set_mode_req);[color=rgb(247, 87, 51) !important]复制代码 应用层与协议栈的交互是通过消息投递系统实现的,当TASK_GAP层完成设置广播参数的设定后会向TASK_APP,发送GAP_SET_MODE_REQ_CMP_EVT 消息,该消息的处理函数为:{GAP_SET_MODE_REQ_CMP_EVT,(ke_msg_func_t) app_gap_set_mode_req_cmp_evt_handler}[color=rgb(247, 87, 51) !important]复制代码跟进该函数,函数根据任务当前状态做出相应的处理。 跟进app_set_adv_data(GAP_GEN_DISCOVERABLE) 从源码解析出来的函数功能为设置app_env.adv_data 即广播数据为发现模式和名字 跟进app_set_scan_rsp_data(app_get_local_service_flag())从源码解析出来的函数功能为设置app_env.scanrsp_data 即扫描响应数据为Profiles 的UUID 前面提到的 2个函数所组织的返回数据类型参考蓝牙标准规范v4.0,以下为从规格书截图, 所提供截图为广播、扫描响应数据格式 ,可以广播数据的内容,这里还得读者自己去查阅,理解得更为通透。在两个广播事件之间有一个间隔,如下图计算公式为:T_advEvent = advInterval + advDelay其中: advInterval 应为0.625ms 的整倍数,并且在20ms~10.24s 之间 advDelay 是一个随机值 ,在 0~10ms 之间这里的广播间隙会影响BLE 的功耗,如果时间间隙过小,会频繁广播,加大功耗,间隙过大,被发现的过程就会增大,这里还得按照需求适当调整。最后我们用Light Blue 探测 广播的内容,均为所设置的 内容,包括了发现模式,设备名称,Profiles UUID。

    2015-11-06 11:02

  • 【FireBLE申请】基于苹果手机的智能手环

    申请理由:之前使用的蓝牙IC为Ti的CC2541,但现在的做的产品越来越复杂,CC2541已经不能满足系统设计要求。现在考虑进行升级,要求封装更小,功耗更低,NXP的QN9021是一个不错的选择

    2015-07-07 14:03

  • FireBLE开发板积分租借

    ``FireBLE开发板使用了NXP公司基于Cortex-M0和单模式BT4.0 Low Enery而设计的BLE单芯片系统QN9021。``

    2016-03-30 16:01

  • 大联大品佳集团推出基于NXP Bluetooth技术的智能门锁解决方案

    大联大品佳代理的NXP的QN9021将一个BLE无线电、控制器、协议栈和配置软件集成于单个芯片上,从而可以灵活、简单地使用BLE SoC解决方案。

    2016-09-01 10:36

  • 【FireBLE申请】智能手环

    申请理由:项目处于芯片选型阶段,已经测试过nRF51822和DA14580,现在想试试QN9021是否也能满足项目需求项目描述:智能手环项目旨在设计一款集校园支付,校园身份识别,社交,运动等为一体的专为在校学生打造的智能穿戴产品

    2015-07-07 10:04

  • 【FireBLE申请】智能蓝牙体重秤

    申请理由:FireBLE开发板的QN9021拥有超的功耗的设计大大增加了体重秤的使用时间,并且是主从一体 而且成本低项目描述:智能蓝牙体重秤是从传统的体重秤上增加了蓝牙上传功能,可以把人的体重上传到手机APP并且由APP软件实时计算出人的健康指标

    2015-07-13 15:26