网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月28日漏签0天
嵌入式吧 关注:103,079贴子:466,040
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 15回复贴,共2页
  • ,跳到 页  
<<返回嵌入式吧
>0< 加载中...

蓝牙已连接---一命速通nordic篇

  • 取消只看楼主
  • 收藏

  • 回复
  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为了赶上大时代,以及面试老登的行业歧视,痛并思痛不吃不喝,遂探究你蓝牙5.0协议栈到底有何神奇之处,仅作为记录一些浅薄的学习感悟,话不多说芯片nrf52832直接开冲


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
外设篇:快速入门熟悉芯片三要素,GPIO,定时器,串口,其他可以慢慢看,原理相通


nrf这边函数初始化方式跟STM32有差别但不多,跟小华那边有点像,进去都是寄存器的宏就不拓展了


2026-03-28 21:40:15
广告
不感兴趣
开通SVIP免广告
  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这里引入了一个新概念GPIOTE,将引脚绑定触发事件和执行任务,讲人话就是STM32的外部中断,只不过对GPIOTE模块配置,可直接执行中断任务,不需要CPU参与,嗯低功耗玩出花了,像HC32输出PWM功能也有类似开启PCA模块的方式

就配置一些中断句柄和引脚使能,这芯片库的写法还是挺有意思的,基本每个步骤都留了程序跑飞的的查错索引,直接在仿真时开窗口查看报错文件位置,行数,类型,不过我更喜欢串口打印日志


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接下来是定时器三要素,主频、预分频、重装值,不同芯片上公式会有些许差异,但是万变不离其宗,在手册里会有更加详细的介绍,不要过于依赖cubemx一键配置时钟树,会变傻的,


外面的库函数都是差不多的,都是这个模式,细心的朋友已经发现了,这种绑定任务事件的写法跟LVGL调用api一样


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个世界就是一个巨大的回调函数


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
重中之重串口,进入串口模式可解决80%以上的bug,串口要素波特率,当老登交给你一个项目,准确的来说只给了你一个芯片的名字,无异于拿一颗螺丝钉到维修厂让你修出一辆车(直接邦邦给老登两拳),第一件事就是先找到例程模版(拿到汽车组装部件),第二件事就是明确需求(组装说明书),第三件事就是开启串口(监控组装情况)

平常一看到这种寄存器配置是不是两眼一黑直接从入门到放弃,短期项目还在研究这种东西离被开除不远了,直接反手调用库函数配置


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

秉着人在床上坐,知识心中涨的原则,

祖传函数直接拿走,即粘即用


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
外设没啥好说的,都是那些东西,其特殊的地方就是这个蓝牙协议栈了,其独一档可以隔绝其他行业的原因,要问什么是协议栈,就是实现蓝牙功能的SDK,STM32有HAL+cubemx,蓝牙芯片有蓝牙协议栈,要成为一个合格的调参侠,就要熟悉蓝牙5.0协议栈

咱们nrf烧程序都要烧两份呢,一个是支撑程序运行的协议栈,其次是应用的工程


2026-03-28 21:34:15
广告
不感兴趣
开通SVIP免广告
  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


协议栈下的按键任务,特么直接事件任务,这下真成LVGL了,很符合你消费电子快速开发的形象


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

蓝牙协议栈初始化主要做的是这三个内容的配置,初始化配置这种东西需要修改的地方并不多,进去看内容还是不少的
总的来说就这几件事,1.给协议栈配置时钟源,2.链接数也就是当前设备配置为主机还是从机,分别带几个设备,3.配置MTU协商值通俗讲就是传输数据包的通道大小(ps.物联网冷知识长包优于多包)4.配置UUID数通俗讲就是在协议栈里每创建一个任务就要分配一点ram,5.回调函数,不出意外修改这种库的配置都有宏,很便利


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

回顾框架,了解GAP初始化内容

主要做这三件事1.蓝牙连接是否加密的配置,2.配置此蓝牙设备的名称和图标,3.蓝牙断开或者睡眠时间间隔


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

在家里你可以叫我函数,出了这个门你要叫我什么,高贵的服务


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
点灯环节由以下几个步骤组成
1.蓝牙怎么知道你要点灯呢,首先要在协议栈里的Profiles层里创建函数,不现在叫服务了

第一件事主服务的建立(也就是创建控制灯的蓝牙回调函数),第二件事添加基础UUID+此次控灯操作的UUID,第三件事空中传输数据的读写配置,最后就是协议栈的精华--传参,这玩意太逆天了,之前看手动配置看得我头昏眼花,没有这api,要面临的将是这种直接原地去世


  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2.就是这个神奇的观察者函数,只要监控到有数据传输就会调用此回调函数ble_lbs_on_ble_evt,并且传参
3.此回调函数判断事件类型,并且将参数带到下一个回调函数on_write,进行写入操作
4.接下来就是此回调函数将获取到的值,继续传入第1处的回调函数led_write_handler,
咱们来看看53行有何玄机,取结构体里的联合体的结构体的联合体的成员值,兼职布诗人

5.最后调用了led_write_handler回调函数形成闭环,实现点灯
至此完成了所有点灯操作,成功进阶为蓝牙点灯带师,可以跟面试老登说熟悉蓝牙5.0协议栈了,任重道远,痛并快乐


2026-03-28 21:28:15
广告
不感兴趣
开通SVIP免广告
  • 陆戮浜庡績258
  • 小吧主
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接下来是蓝牙必不可少的电池服务,还有心电服务,这两玩意也是api没啥好说的,用自带的库和公式计算电池电量,蓝牙串口透传模式老规矩创建服务

主要关注这两个回调函数,手机app发送数据到芯片串口打印触发这个回调事件nus_data_handler

从串口芯片发送到手机app触发这个回调事件uart_event_handle


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 15回复贴,共2页
  • ,跳到 页  
<<返回嵌入式吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示