PSoC63 ゼファー BLE ペリフェラルの問題

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通信の実装に取り組んでいます (中央側と周辺側の両方). 私はブレススタックでゼファーRTOSを使用しています。 私のセットアップはかなり基本的です:

- 1つのPSoC-63は、北欧のUARTサービスと同等のカスタムサービスを備えた周辺機器として機能します。 このユースケースでは、TX 特性のみが役立ちます(GATT 通知)。 その注目すべきkconfigオプションは次のとおりです。

- CONFIG_BT_PSOC6_BLESS=y

- CONFIG_BT_PSOC6_BLESS_MAX_RX_PAYLOAD=251

- CONFIG_BT_PSOC6_BLESS_MAX_TX_PAYLOAD=251

- 2番目のPSoC-63はセントラルとして機能し、PSoC周辺機器に接続し、カスタムサービスを探して特性に加入します。

創刊号

接続すると、ペリフェラルはセントラルへの通知の送信を開始します。 理想的には、1 ミリ秒 (~1 Mbps) ごとに 128 ペイロード バイトの通知を 1 つ送信します。 実際には、上限は ~640 kbps であるため、データを 3 ミリ秒ごとに 240 バイトの 1 つの通知に制限する必要がありました。 PSoC 63が2M PhyとBLE DLEをサポートしていることを考えると、1Mbpsが現実的だと思いました。 それを増やすためのヒントや、これが実際に上限付きビットレートであることの確認はありますか? 私がまだテストしていない唯一のことは、非常に低い接続間隔を強制することです(IIRC私のPSoCは~22で終わっていました)。

第二の問題

私はnRF52840 DKを持っていたので、2番目のPSoCを同僚に貸さなければならなかったので、Zephyrの移植性をテストしようと思いました。 PSoC 63 Centralとまったく同じコードベースでBLEセントラルとして設定しました。 コードはコンパイルされ、完璧にフラッシュされましたが、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 

MTUサイズが512で最大ペイロードが251バイトである「PSoC 6 BLEスループット測定:GATT_Out」コード例を確認しましたか。 また、最初の問題を明確に説明していただけますか。

 

ありがとう&よろしく

プラティクシャ V

元の投稿で解決策を見る

0 件の賞賛
3 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@gabrielpgagne 

MTUサイズが512で最大ペイロードが251バイトである「PSoC 6 BLEスループット測定:GATT_Out」コード例を確認しましたか。 また、最初の問題を明確に説明していただけますか。

 

ありがとう&よろしく

プラティクシャ V

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

返信ありがとうございます。

いいえ、私はこの文書を見たことがありませんでした。 私はそれを見ていきます。

最初の問題, 基本的には、Zephyr RTOSとCy8cproto_063_bleボードでBLEスループットを最大化する方法に帰着します. また、あなたが提供した例では、BLEコントローラーとしてCM0を使用していることがわかります。 私のCY8CPROTO_063_BLE Zephyrプロジェクトでは、引き込まれた唯一のバイナリブロブはCM0ディープスリープだったので、CM4が使用されている唯一のコアだと思います。 CM0コアをZephyrで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は、コントローラがCM0+ CPU上で動作し、ホストがCM4 CPU上で動作するデュアルCPUアーキテクチャと、コントローラとホストの両方がCM0+またはCM4のいずれか1つのCPU上でのみ実行されるシングル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...

これが役立つかどうか教えてください。

 

ありがとう&よろしく

プラティクシャ V

 

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

0 件の賞賛