ホーム › フォーラム › Texas Instruments › ワイヤレス › CC26xx(BLE) › 初期処理の動作異常について
このトピックには5件の返信が含まれ、2人の参加者がいます。6 年、 6 ヶ月前に T-YAMAMOTO さんが最後の更新を行いました。
-
投稿者投稿
-
初期処理の動作異常について
デバイス型番:CC2650MODAご担当者様
Launchpad を評価しているのですが、BLEの初期処理が正常に動作しません。
解決方法をご教示ください。
以下のように、ProjectZero_init() の初期化の
3つ目の GAPRole_SetParameter の中で永久ループしてしまいます。
static void ProjectZero_init(void)
↓
// Initialize Scan Response data
GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData), scanRspData);
↓
// Update the Response Data
ret = GAP_UpdateAdvertisingData(selfEntity,
FALSE, gapRole_ScanRspDataLen, gapRole_ScanRspData);
↓
// Set advertisement type, len and data
msg->taskID = ICall_getLocalMsgEntityId(ICALL_SERVICE_CLASS_BLE_MSG, taskID);
↓
errno = ICall_dispatcher(&args.hdr);
↓
ti_sysbios_family_arm_m3_Hwi_excHandler__I():
1001bbc8: 4A05 ldr r2, [pc, #0x14]
1001bbca: B508 push {r3, lr}
1001bbcc: 6812 ldr r2, [r2]
1001bbce: 2301 movs r3, #1
1001bbd0: 8013 strh r3, [r2]
1001bbd2: 4A04 ldr r2, [pc, #0x10]
1001bbd4: 6812 ldr r2, [r2]
$C$L526:
1001bbd6: 2A00 cmp r2, #0
1001bbd8: D0FD beq $C$L526 ←ここを永久ループ!!!!
1001bbda: 4790 blx r2
1001bbdc: BD08 pop {r3, pc}
1001bbde: 46C0
その後、逆に tirtos はcc26xx_2_20_01_08 にして UART の以下ファイ
ルだけ cc26xx_2_21_00_06 にすればどうかと試してみました。
UARTCC26XX.c
UARTCC26XX.h
ビルドは、CC2650_LAUNCHXL.cファイルを修正してできるようになりし
たが、残念ながら uartecho_CC2650_LAUNCHXL_TI のようなボーレート
の誤差は是正できず文字化けとなりした。
元ファイルのフォルダー:
C:\ti\tirtos_cc13xx_cc26xx_2_21_00_06\products\tidrivers_cc13xx_
cc26xx_2_21_00_04\packages\ti\drivers\uart
先ファイルのフォルダー:
C:\ti\tirtos_cc13xx_cc26xx_2_20_01_08\products\tidrivers_cc13xx_
cc26xx_2_20_01_10\packages\ti\drivers
多分、RTOSのドライバーのもっと下位層の部分かシリアル信号に関する
クロック部分のリソースも必要なのかと思われます。
もしこれらの移植が容易であれば、こちらの切り口での解決方法もあり
かと思います。
お忙しいところ申し訳ございませんが、どちらか簡易な方でお願いでき
ればと思います
BLE-STACKは、TI-RTOS バージョン2.20.01.08をベースに作成されており、他のバージョンでは正常に動作いたしません。
特定の機能のみ、バージョンを変更することはおすすめしておりません。
TI-RTOS バージョン2.20.01.08のUART Echoサンプルプロジェクトでも、文字化けは発生するのでしょうか。
ご確認のほど、よろしくお願いします。
ご回答ありがとうございます。
>BLE-STACKは、TI-RTOS バージョン2.20.01.08をベースに作成されており、他のバージョンでは正常に動作いたしません。
cc26xx_2_21_00_06 に対応したBLE-STACKは現状ではないということですね?
>TI-RTOS バージョン2.20.01.08のUART Echoサンプルプロジェクトでも、文字化けは発生するのでしょうか。
このバージョンのUART Echoサンプルプロジェクトは見当たらず、サンプルソースは以下にありました。
C:\ti\tirtos_cc13xx_cc26xx_2_20_01_08\examples\TI\CC2650_LAUNCHXL\uartecho
このソースコードでは結果は同じで、ボーレート誤差の吸収ができず文字化けでした。
もし、TI-RTOS バージョン2.20.01.08のUART Echoサンプルプロジェクトの在処をご存知でしたら教えて頂けますでしょうか?
ネット検索しても見つかりませんでしたので、あれば試してみたいです。新しいBLE Stack v2.2.2が、TI-RTOS 2.21.01.08に対応しております。
Project ZeroにこちらのBLE Stackへの対応を行っていただけないでしょうか。
以下にProject Zeroに対してBLE StackおよびTI-RTOSの変更方法を記載させていただきます。
すでに実施されているとは思いますが、参考にしていただけたらと思います。- TI-RTOSバージョン変更
アプリケーションプロジェクト(project_zero_app_cc2650launchxl)のプロジェクトプロパティより、General -> Productsタブ にある「TI-RTOS for CC13xx and CC26xx」のバージョンを”2.21.1.08”に変更します。 - 環境変数(パス設定)の変更
アプリケーションプロジェクト(project_zero_app_cc2650launchxl)とスタックプロジェクト(project_zero_stack_cc2650)双方のプロジェクトで参照する環境変数(パス設定変数)を変更します。
プロジェクトプロパティより、Resource – Linked Resource画面にて、以下の環境変数を修正します。● CC26XXWARE
変更前)${EXT_TI_PRODUCTS_DIR}\tirtos_cc13xx_cc26xx_2_20_01_08\products\cc26xxware_2_24_02_17393
変更後)${EXT_TI_PRODUCTS_DIR}\tirtos_cc13xx_cc26xx_2_21_01_08\products\cc26xxware_2_24_03_17272●TI_RTOS_DRIVERS_BASE
変更前)${EXT_TI_PRODUCTS_DIR}\tirtos_cc13xx_cc26xx_2_20_01_08\products\tidrivers_cc13xx_cc26xx_2_20_01_10\packages
変更後)${EXT_TI_PRODUCTS_DIR}\tirtos_cc13xx_cc26xx_2_21_01_08\products\tidrivers_cc13xx_cc26xx_2_21_01_01\packages●TI_BLE_SDK_BASE
変更前)${EXT_TI_PRODUCTS_DIR}\simplelink\ble_sdk_2_02_01_18
変更後)${EXT_TI_PRODUCTS_DIR}\simplelink\ble_sdk_2_02_02_25 - ボード定義ファイルの変更
アプリケーションプロジェクトのBoardフォルダにある次の2ファイルを、BLE Stack 2.2.2に用意されているファイルに置き換えます。
ファイル名: CC2650_LAUNCHXL.c / CC2650_LAUNCHXL.h
BLE Stack 2.2.2: C:\ti\simplelink\ble_sdk_2_02_02_25\src\boards\CC2650_LAUNCHXL
以上の修正により、BLE StackおよびTI-RTOSのバージョンを変更し、Project Zeroが正常に動作していることを確認しています。
お手数ですが、BLE Stackのバージョンを変更のうえ、UART動作をご確認ください。よろしくお願いします。
ご提案頂いたのBLE Stack v2.2.2、TI-RTOS 2.21.01.08 へのバージョンアップの対応をしてみましたが、結果的には変わりませんでした。
RTOSのバージョンの差異による原因ではないことがわかり、uartecho_CC2650_LAUNCHXL_TI プロジェクトの違いを突き詰めていくとBLE STACKの有無であることのようです。
main() 処理の以下の BLE Stack 初期処理をコメントにすると、uartecho_CC2650_LAUNCHXL_TI と同じ動作になり文字化けもなくなりました。
/* Initialize ICall module */
ICall_init();/* Start tasks of external images – Priority 5 */
ICall_createRemoteTasks();/* Kick off profile – Priority 3 */
GAPRole_createTask();私の推測ですが、BLE STACK はCPU負荷も大きいので、UARTの信号クロックのタイミングにもなんらかの悪影響を及ぼしているのではないかと思われます。
とは言えこれまでの3機種は問題なくUART通信ができていたので、今回の約5%というボーレート誤差が大きすぎるのかもしれません。
今後は、通信相手の測定器側のUARTボーレートの精度を高める対策にシフトするつもりです。
- TI-RTOSバージョン変更
-
投稿者投稿