完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我使用的开发板是“STM32WB55 Nucleo”开发板,想实现一次性发送和接收超过100个字节的数据包(数据包字节数越多越好,如果能达到250个字节就最好了)。蓝牙底层数据包默认大小大概是20字节。蓝牙协议提到的包格式中的PDU大小为2~257字节。 软件库:STM32Cube_FW_WB_V1.7.0, 使用例程:BLE_p2pServer。
该例程主要是实现蓝牙控制LED1的亮灭。蓝牙调试助手发送0x00 0x01 --> LED1亮,0x00 0x00-->LED1灭。 但是不能接收超过2个字节的数据,蓝牙调试助手发送时显示“成功写入”,但是没有触发P2PS_STM_App_Notification()函数中的事件P2PS_STM_WRITE_EVT
然后我将P2PS_STM_Init() 中的 aci_gatt_add_char()函数中的Char_Value_Length改为150,请看注释。蓝牙助手发送64个字节,P2PS_STM_WRITE_EVT触发4次,每个包最大20字节。
将发送函数改为发送50个字节,请看注释,STM32WB55只能发送20个字节数据(数据:0x01~0x14)。
我还发现程序运行一段时间(大概5分钟),就提示“Fatal error:ST-Link USB communication error, Session abort!”,我调试的其他的STM32单片机很少出现过ST Link断开连接的问题。 |
|
相关推荐
1个回答
|
|
要实现一次性发送和接收超过100字节的数据包,您需要修改蓝牙协议栈的默认数据包大小。
1. 打开STM32Cube_FW_WB_V1.7.0软件库文件夹。 2. 导航到BLE的协议栈文件夹,路径为:Middlewares/ST/STM32_BlueNRG/BLE_Stack/Inc。 3. 打开`bluenrg_gatt.h`文件。 4. 找到以下定义: ``` /** * Maximum number of bytes that can be transmitted for each MTU * exchanged. By default it should be 23 for the ATT protocol. */ #define MAX_ATT_MTU (23) ``` 5. 将`MAX_ATT_MTU`的值改为您想要的最大数据包大小(最大为251字节)。 ``` #define MAX_ATT_MTU (251) ``` 6. 保存并关闭文件。 7. 重新编译和烧录您的应用程序。 请注意,修改最大数据包大小可能会导致一些蓝牙设备无法与您的开发板进行通信,因为它们可能使用的是默认的20字节数据包大小。在进行修改之前,请确保您的蓝牙设备支持更大的数据包。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1678 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1580 浏览 1 评论
1012 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1626 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
673浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
537浏览 3评论
556浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
524浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 00:28 , Processed in 0.743649 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号