【nF7002-DK Wi-Fi® 6开发套件】蓝牙串口服务
<div class='showpostmsg'> 本帖最后由 dirty 于 2023-11-14 00:02 编辑<p> nRF7002-DK主控nRF5340是具有蓝牙功能,SDK也集成了蓝牙协议栈。在此熟悉了解蓝牙方面开发并使用.<br />
一.代码准备<br />
这里以SDKPATH\nrf\samples\bluetooth\peripheral_uart为蓝本。通过理解及实践做些修改应用。<br />
1.prj.conf对使用到的宏做了使能或者定义参数。可通过CONFIG_BT_DEVICE_NAME修改蓝牙广播名称,再就是日志习惯用串口,做一些修改如下图1</p>
<div style="text-align: center;"></div>
<div style="text-align: center;">图1:关于宏配置</div>
<p> 2.main.c里是主要的蓝牙串口服务主要功能。<br />
(1)在mian函数里初始化了串口、蓝牙等。下面做下代码解读:<br />
uart_init();//串口初始化<br />
bt_enable(NULL);蓝牙初始化<br />
k_sem_give(&ble_init_ok);//释放蓝牙协议栈初始化OK信号量<br />
bt_nus_init(&nus_cb);//串口服务初始化并注册回调<br />
bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), sd,ARRAY_SIZE(sd));//蓝牙广播 <br />
(2)关键事件函数<br />
connected(struct bt_conn *conn, uint8_t err)//蓝牙连接事件<br />
disconnected(struct bt_conn *conn, uint8_t reason)//蓝牙断开事件<br />
bt_receive_cb(struct bt_conn *conn, const uint8_t *const data,uint16_t len)//蓝牙串口服务接收数据<br />
uart_cb(const struct device *dev, struct uart_event *evt, void *user_data)//串口(收、发事件)回调函数<br />
我们可以在一些自己关注点地方加些日志,一遍更清晰了解整个流程。</p>
<div style="text-align: center;"></div>
<div style="text-align: center;">图2:加测试日志 </div>
<p> 3.编译烧录</p>
<p> </p>
<p>二测验<br />
1.按下nRF7002-DK复位键,手机打开蓝牙,打开nRF Connect APP,搜索nordic,可以看到nRF7002-DK的蓝牙广播。如下图3</p>
<div style="text-align: center;"></div>
<div style="text-align: center;">图3:蓝牙广播</div>
<p> 2.点击CONNECT,连接蓝牙,在串口日志上可以看到蓝牙连接事件,图7</p>
<p> 3.打开Nordic UART Service,在Tx Characteristic点击使能NOTIFY属性。如图4</p>
<div style="text-align: center;"></div>
<div style="text-align: center;">图4.使能Tx服务属性</div>
<p> 4.点击RX Characteristic,其有可写属性。在Write value输入数据,比如Hello,点击Send发送。如图5</p>
<div style="text-align: center;"></div>
<div style="text-align: center;">图5:RX Characteristic写数据发送</div>
<p> 我们可以看到串口日志里有串口接收服务收到数据,并转到串口发送.图7<br />
5.我们在串口助手上发送如66,在APP 的Tx Characteristic可以看到通知。如下图6</p>
<div style="text-align: center;"><br />
图6:TX Characteristic通知<br />
</div>
<p> 6.断开蓝牙,可以看到蓝牙断开事件。如下图7</p>
<div style="text-align: center;"></div>
<div style="text-align: center;"> 图7:串口日志</div>
<p> </p>
<p> 通过实践,理解修改代码并测验,能更了解关于蓝牙方面的使用,有利于从中收获经验,做蓝牙方面开发。</p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>通过实践,理解修改代码并测验,能更了解关于蓝牙方面的使用,有利于从中收获经验,做蓝牙方面开发</p>
<p>系统有蓝牙库,使用起来还算是方便。</p>
lugl4313820 发表于 2023-11-14 07:20
通过实践,理解修改代码并测验,能更了解关于蓝牙方面的使用,有利于从中收获经验,做蓝牙方面开发
系统 ...
<p>是的,孰能生巧,再就是熟悉习惯这套用法</p>
dirty 发表于 2023-11-14 10:15
是的,孰能生巧,再就是熟悉习惯这套用法
<p>这个库,好象stm32的开发板也可以用,要熟悉起来,楼主可以实现一个小目标了呀。</p>
页:
[1]