公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,最近我一直在努力使用 PSoC 63 实现 BLE 通信(包括中央和外围端)。 我一直在使用 Zephyr RTOS 和 BLESS 堆栈。 我的设置相当基本:

-一台 PSoC-63 充当外围设备,其定制服务等同于 Nordic 的 UART 服务。 在此用例中,只有 TX 特征才有用(GATT 通知)。 它值得注意的 kconfig 选项有:

-config_bt_psoc6_bless=y

-CONFIG_BT_PSOC6_BLESS_MAX_RX_PAYLO AD = 251

-CONFIG_BT_PSOC6_BLESS_MAX_TX_PAYLO AD = 251

-第二个 PSoC-63 充当中央,连接到 PSoC 外围设备,寻找其自定义服务并订阅该特性。

第一期

连接后,外围设备开始向中央发送通知。 理想情况下,我们会每 1 毫秒(约 1 Mbps)发送 1 个包含 128 个有效载荷字节的通知。 实际上,我们的上限为大约 640 kbps,因此我们必须将数据限制为每 3 毫秒 1 个 240 字节的通知。 考虑到 PSoC 63 支持 2M Phy 和 BLE DLE,我以为 1 Mbps 是现实的。 你有什么增加比特率的技巧或者可以确认这确实是上限比特率吗? 我唯一还没有测试过的就是强制使用非常低的连接间隔(IIRC 我的 PSoC 最后大约 22)。

第二期

我有一台 nrf52840 DK,所以我想试着测试 Zephyr 的便携性,因为我必须把第二台 PSoC 借给同事。 我将其设置为 BLE Central,其代码库与 PSoC 63 Central 完全相同。 代码已编译并完美闪烁到其中,但是在连接到 PSoC 63 后,Central 立即断开连接,错误代码 0x24 (36d),这似乎是 BT_HCI_ERR_LMP_PDU_NOT_ALLOWED (hci_types.h)。

几个小时后,我意识到问题出在 PSoC BLE 外围设备方面(我在 LightBlue 上模拟了服务等,我的 nRF 可以毫无问题地连接到它)。每当我将 CONFIG_BT_PSOC6_BLESS_MAX_RX_PAYLOAD = 251 更改为默认值 (27 ) 以外的值时,我都会出现这种即时断 开连接的行为。因此,我只能使用 20 字节的有效负载,这对我们的应用程序来说是不可接受的。

 

感谢您的任何帮助,请随时询问详细信息,我很乐意提供帮助。

 

0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @gabrielpgagne

你有没有看过 " PSoC 6 BLE 吞吐量测量:Gatt_Out " 代码示例,其中他们使用的 MTU 大小为 512,最大有效载荷为 251 字节。 你也能清楚地向我解释一下第一个问题吗。

 

谢谢&问候

Pratiksha V

在原帖中查看解决方案

0 点赞
3 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @gabrielpgagne

你有没有看过 " PSoC 6 BLE 吞吐量测量:Gatt_Out " 代码示例,其中他们使用的 MTU 大小为 512,最大有效载荷为 251 字节。 你也能清楚地向我解释一下第一个问题吗。

 

谢谢&问候

Pratiksha V

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

谢谢你的回复。

不,我还没看过这份文件。 我来看看。

对于第一个问题,基本上归结为如何使用 Zephyr RTOS 和 cy8cproto_063_BLE 板最大限度地提高 BLE 吞吐量。另外,我可以看到你提供的示例使用 CM0 作为 BLE 控制器。 在我的 CY8CPROTO_063_BLE Zephyr 项目中,唯一引入的二进制 blob 是 CM0 Deep sleep,所以我相信 CM4 是唯一使用的内核。 你知道能否用 Zephyr 将 CM0 内核设置为 BLE 控制器吗?

最好,

加布里埃尔

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @gabrielpgagne

您可以在下面提供的文档链接中详细了解数据长度扩展名。

https://www.infineon.com/dgdl/Infineon-AN99209_PSoC_4_BLE_and_PRoC_BLE_Bluetooth_LE_4.2_Features-App...

PSoC 6 BLE 提供双 CPU 架构,其中控制器在 CM0+ CPU 上运行,主机在 CM4 CPU 上运行,以及单 CPU 架构,其中控制器和主机只能在一个 CM0+ 或 CM4 的 CPU 上运行。

双核(CM0+ 上的控制器、CM4 上的主机和配置文件)选项将拆分 BLE 堆栈以在两个内核上工作。 CM0+ 内核运行堆栈的 BLE 控制器部分,负责维护 BLE 连接。 BLE 主机在 CM4 内核上运行并执行应用程序级任务。 这种双 CPU 设置的主要优点是,当没有与 BLE 相关的任务待处理时,CM4 内核可以进入深度睡眠低功耗模式。
有关PSoc6 BLE双核的更多信息,请参阅以下应用说明。
https://www.cypress.com/documentation/application-notes/an210781-getting-started-psoc-6-mcu-bluetoot...

https://www.cypress.com/documentation/application-notes/an215656-psoc-6-mcu-dual-cpu-system-design

https://www.cypress.com/documentation/application-notes/an215671-psoc-6-mcu-firmware-design-ble-appl...

如果这有帮助,请告诉我。

 

谢谢&问候

Pratiksha V

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-6/PSoC63-Zephyr-BLE-Peripheral-issues/m-p/643661

0 点赞