ホーム フォーラム Texas Instruments ワイヤレス CC26xx(BLE) 初期処理の動作異常について

このトピックには5件の返信が含まれ、2人の参加者がいます。6 年、 4 ヶ月前 T-YAMAMOTO さんが最後の更新を行いました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #1397 返信

    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

    #1409 返信

    T-YAMAMOTO
    参加者

    その後、逆に 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のドライバーのもっと下位層の部分かシリアル信号に関する

    クロック部分のリソースも必要なのかと思われます。

     

    もしこれらの移植が容易であれば、こちらの切り口での解決方法もあり

    かと思います。

     

    お忙しいところ申し訳ございませんが、どちらか簡易な方でお願いでき

    ればと思います

    #1420 返信
    Yojiro
    Yojiro
    従業員

    BLE-STACKは、TI-RTOS バージョン2.20.01.08をベースに作成されており、他のバージョンでは正常に動作いたしません。

    特定の機能のみ、バージョンを変更することはおすすめしておりません。

    TI-RTOS バージョン2.20.01.08のUART Echoサンプルプロジェクトでも、文字化けは発生するのでしょうか。

     

    ご確認のほど、よろしくお願いします。

    #1421 返信

    T-YAMAMOTO
    参加者

    ご回答ありがとうございます。

    >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サンプルプロジェクトの在処をご存知でしたら教えて頂けますでしょうか?
    ネット検索しても見つかりませんでしたので、あれば試してみたいです。

    #1457 返信
    Yojiro
    Yojiro
    従業員

    新しいBLE Stack v2.2.2が、TI-RTOS 2.21.01.08に対応しております。

    Project ZeroにこちらのBLE Stackへの対応を行っていただけないでしょうか。

    以下にProject Zeroに対してBLE StackおよびTI-RTOSの変更方法を記載させていただきます。
    すでに実施されているとは思いますが、参考にしていただけたらと思います。

    1. TI-RTOSバージョン変更
      アプリケーションプロジェクト(project_zero_app_cc2650launchxl)のプロジェクトプロパティより、General -> Productsタブ にある「TI-RTOS for CC13xx and CC26xx」のバージョンを”2.21.1.08”に変更します。
    2. 環境変数(パス設定)の変更
      アプリケーションプロジェクト(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

    3. ボード定義ファイルの変更
      アプリケーションプロジェクトの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動作をご確認ください。

    よろしくお願いします。

    #1480 返信

    T-YAMAMOTO
    参加者

    ご提案頂いたの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ボーレートの精度を高める対策にシフトするつもりです。

6件の投稿を表示中 - 1 - 6件目 (全6件中)