BLE学习记录

第一周

  1. 完成环境搭建并下载NCS v2.4.0

  2. 成功编译并下载peripheral_uart例程并在5340DK板进行验证在这里插入图片描述
    在这里插入图片描述

  3. 初步了解BLE广播以及建立连接的流程

根据自己理解,在周报中回答下面问题:
例程中5340DK板是如何通过蓝牙发送数据给手机的?
蓝牙连接后,手机接收5340DK板发送的蓝牙数据前需要做什么?
手机如何通过蓝牙发送数据给5340DK板的?
Q1:创建了一个NUS服务,并在该服务下创建一个TX Characteristic,蓝牙板写入UART数据,属性为notify
Q2:发现NUS服务,搭建TX通道Enable Notifications 使能5340DK板发送数据的蓝牙特征值通知
Q3:蓝牙板创建一个RX Characteristic,写属性,用于接收主机发送的UART数据

第二周

  1. 通过学习相关例程文档,对BLE的广播、连接和协议栈等概念有初步的了解
  2. 分析peripheral_uart例程,并阅读相关文档和博客,NUS服务有TX、RX两个特征,TX、RX包含declaration attribute和value attribute,TX多了一个CCCD用于notify
  3. 通过分析代码初步了解了该例程收发数据的通信流程,对UART传输、服务和特征的概念有了更清晰的认识

第三周

  1. 了解了广播的类型以及广播数据的数据包格式AD Structure = AD Len+AD Type+AD Data

  2. 蓝牙项目中的广播参数以及广播数据、扫描响应数据的设置等
    在这里插入图片描述在这里插入图片描述

  3. 在peripheral_uart例程进行动态切换广播间隔,上电或者BLE断连后快广播间隔100ms,通过zephyr延时工作队列1分钟后切换为慢广播间隔1S,建立连接后广播停止,并得到验证
    在这里插入图片描述

  4. 设置蓝牙全名xxx Test放在扫描响应数据包中

第四周

  1. 参考蓝牙项目的HCI CMD设置蓝牙发射功率和Mac地址,蓝牙发射功率越小,RSSI越差;
  2. 简单学习线程的使用,使用K_THREAD_DEFINE创建线程并通过debug了解Zephyr系统上电复位后的启动流程,确定了K_THREAD_DEFINE是在哪边创建的;
    首先执行中断向量表vector_table.S中的第一个函数reset,然后进入reset.S汇编调用C函数z_arm_prep_c(),重新分配中断向量表,清除.bss段全局未初始化的变量为0,将全局已初始化的变量从ROM拷贝到RAM中等,最后执行z_cstart(),运行初始化级别为INIT_LEVEL_EARLY的初始化函数,然后进行日志、静态设备的初始化,运行初始化级为INIT_LEVEL_PRE_KERNEL_1、INIT_LEVEL_PRE_KERNEL_2的初始化函数,最后就是创建main函数,在进入main函数之前,还要初始化级别为INIT_LEVEL_POST_KERNEL和INIT_LEVEL_APPLICATION,以及静态初始化线程,最后到达main函数;
  3. 简单学习了信号量、事件以及消息队列的使用,将zephyr定时器回调同步到自定义的Thread中处理,本需求只需要简单的同步和通信,比较适合使用信号量的方式;
    在中断中使用这三种通信方式有什么条件? 在获取信号量资源、获取事件和消息队列中的消息时,应当立即返回设置为K_NO_WAIT

第五周

  1. 信号量大多用于控制对临界资源的访问;事件用于线程间通信和同步;消息队列用于在不同线程之间传递数据;
  2. 熟悉蓝牙项目中服务和特征值的创建;
  3. 通过BT_GATT_SERVICE_DEFINE创建了service和characteristic

第六周

  1. 创建特征值read一次计数加一,调用bt_gatt_attr_read,需要在创建特征值时给read开辟内存空间暂存;notify可以直接发送;

  2. 项目中是通过handle值找到attr进行notify;

  3. 理清了特征值各个属性read\write\notify的关系与基本使用;

  4. 简单了解了配对、绑定的一些概念和流程。

第七周

  1. 调试peripheral_bms例程,通过nrfconnect绑定并通过BMS服务发送指令删除绑定;
  2. 不删除绑定信息断开重连时从Flash中读取;发指令删除绑定重连会更新;
  3. 增加开发板已经与手机绑定,拒绝与另一台主机再次进行配对绑定;
  4. 配对及绑定的主要概念,目的:配对主要进行加密连接,认证设备,以及生成密钥;绑定是利用配对时生成的LTK进行蓝牙的连接加密;它们的主要目的是确保蓝牙设备之间的通信安全;
  5. 在配对绑定的基础上,通信数据如何防重放?重放:比如手机App传输给设备一条BLE开启指令进行打开,被第三方通过抓取空中包的方式获取到,虽然指令数据是加密的,但把同样的加密数据再次发给门锁
    加时间戳,在收到指令时验证时间戳是否符合范围;或者只让指令只能执行一次

第八周

  1. 在peripheral_bms例程上添加长按按键3秒删除绑定信息;
  2. 手机单方面删除绑定信息再次配对时拒绝绑定;
  3. 简单学习了主从双方流程:扫描、扫描信息过滤、发起连接

第九周

学习了主从双方MTU交换、协商连接参数等;
学习了蓝牙dongle做主机使用的基本指令并与perpherial_uart自建服务进行通信;
根据dongle文档自行焊接并配置为主机模式;
主机扫描参数的设置,连接间隔决定了主从设备之间交换数据的频率,不需要频繁交换数据时拉长连接间隔降低功耗;
主从机进行MTU交换,选取较小的作为MTU;MTU越大会提高BLE通信效率但会增加功耗;
跳过扫描过程通过bt_conn_le_create MAC地址快速连接;

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: CCC 3.0 BLE是指"Core Bluetooth Communication Channel"的第三个版本。它是一种用于蓝牙低功耗(BLE)设备之间通信的标准。在CCC 3.0中,有关OOB(Out-of-Band)部分的要求包括首次连接请求消息(FA-RQ)和加密链路下的密钥分发。在第三阶段中,主机通过链路层使用LL_ENC_REQ发起加密请求,并将用于计算会话密钥SK的参数发送给从机。从机通过LL_ENC_RSP加密应答将与计算SK相关的参数发送给主机,然后通过LL_START_ENC进行三次加密握手。CCC 3.0 BLE的数字密钥技术规范第三版定义了一个数字密钥生态系统,它使用标准化的数字密钥小程序Applet和标准化的车辆访问协议来支持车辆和设备之间的广泛部署数字密钥服务。此规范还支持使用蓝牙低功耗(BLE)或NFC等无线电技术实现数字密钥服务。123 #### 引用[.reference_title] - *1* *2* [CCC3.0 蓝牙OOB配对](https://blog.csdn.net/xingqingly/article/details/125530729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [CCC3.0学习笔记_数字钥匙系统架构](https://blog.csdn.net/u010674359/article/details/125546541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知名社畜L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值