This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640R2F:通用定时器和通知

Guru**** 2590580 points
Other Parts Discussed in Thread: LAUNCHXL-CC2640R2, CC2640R2F, SYSCONFIG, CC2652R7, SIMPLELINK-CC2640R2-SDK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1259037/cc2640r2f-gptimer-and-notifications

器件型号:CC2640R2F
主题中讨论的其他器件: SysConfigCC2652R7SIMPLELINK-CC2640R2-SDK、LAUNCHXL-CC2640R2

您好!

我想将 GPTimer 用于充当服务器的 CC2640R2F、以固定的间隔对来自传感器的数据进行精确采样。 不过,我正面临一个问题。 计时器确实很精确;但是、我无法通过蓝牙传输从传感器收集的数据。 我尝试使用 GATT 通知向另一个充当客户端的 CC2640R2F 器件发送数据(每10ms 发送6个字节)。 通过调试代码、我看到以下行出现了问题:"hTimer = GPTMERCC26XX_OPEN (Board_GPTIMER0A、&params);"、我在"主...init()'函数"中调用该行。 如果我省略这一行、那么 GATT 通知可以从客户端传输到服务器(使用软件时钟对数据进行采样、这非常不精确)。

是否有关于发送通知和使用 GPTimer 导致此问题的原因?

谢谢!

伊姆兰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Imran:

    我把这个问题转发给了我们的一些驱动专家。 他稍后会处理这个问题。

    同时、如果您在此向我们提供有关您的设置的更多详细信息、那将非常好。

    1.) 您在使用哪种 SDK?  

    2.) 您使用了什么示例开始开发。

    3.) 您是否使用 SysConfig 添加了计时器?您进行了哪种配置?

    此致、

    亚历克斯  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    1.我使用的是"simplelink_cc2640r2_sdk_2_20_00_49"

    2.我使用了 github.com/.../simplelink_cc2640r2_sdk-2.20上的简单串行插座示例。  

    3.我没有使用 SysConfig。 我通过导入 GPTimer 标头( )并且这 是我使用的配置:

    GPTimerCC26XX_PARAMS 参数;
    GPTimerCC26XX_PARAMS_init (&PARAMS);
    params.width = GPT_CONFIG_16BIT;
    params.mode = GPT_MODE_PERIOD_UP;
    params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
    
    hTimer = GPTMERCC26XX_OPEN (Board_GPTIMER0A、&params);
    
    
    GPTMERCC26XX_VALUE loadVal = 0x1D4AF;
    GPTMERCC26XX_setLoadValue
    (hTimer、loadVal);GPTMERCC26XX_registerInterrupt (hTimer、timerCallback、 GPT_INT_TIMEOUT);
    
    GPTimerCC26XX_START (hTimer); 

    谢谢。
    伊姆兰
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Imran:

    你过得怎么样? 您能否尝试将 GPTimer 源代码复制并粘贴到您的 CCS 工程中、然后在使用调试模式单步执行到 GPTMERCC26XX_OPEN 函数时确认发生了什么情况。 我尝试用类似的器件(CC2652R7)在末端复制此问题;我将尝试在 CC2640R2上测试代码。 对于更新一些的驱动程序、请参阅 此处 Driverlib 中的 timer.h 文件

    谢谢。

    A·F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    我曾尝试调试代码、但没有用、而且我找不到蓝牙卡在的线路。 我已经附加了我的 Code Composer Studio 项目文件(简单串行客户端和简单串行服务器)供您参考、以便您进行了解。

    谢谢!

    e2e.ti.com/.../CCS_5F00_Projects.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Imran:

    如果可能、您可以更新到最新的 SDK。

    由于目前没有适用于最新 SDK 的简单串行客户端/服务器的示例、您可以尝试在 simple peripheral 示例如果问题仍然存在,请让我知道。 或者、这种 提交 版本稍高一些、具有简单串行套接字的 SDK 版本。  

    谢谢。
    A·F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    我曾尝试在 SIMPLELINK-CC2640R2-SDK 5.30.00.03 (最新)中提供的 simple peripheral 示例中添加 GPTimer、但如果打开了 GPTimer、蓝牙不工作。 您能否复制并告诉我您是否看到类似的结果?

    此外、我认为 SDK 4.10 (从您链接的提交内容来看)提供了 CC26x2的简单串行插槽、它与 CC2640R2不兼容、是正确的吗? 但是 、SDK 3.40似乎似乎显示了 CC2640R2的简单串行套接字的更新副本、并采用 BLE5实现。 我 使用了 SDK 2.20、因此简单串行套接字的 BLE4.2堆栈版本是基于 SDK 的、您知道用 BLE5版本有什么不同吗?

    非常感谢!

    伊姆兰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Imran:

    我能够使用5.30 SDK 中提供的具有 GPTimer 的"简单外设"示例并使用 CCS 12.3测试 CC2640R2。 此蓝牙(使用 Android 21 FE 和 BLE 扫描仪)能够与 CC2640R2进行通信并成功接收文本;如所附图像中所示。 此外、还提供了一个压缩文件夹、其中包含我用于实现该结果的项目。 通常、尽可能改用更新的 SDK 是最佳经验法则。 SDK 3.40确实有我们可以使用的更新版本。  

    e2e.ti.com/.../simple_5F00_peripheral_5F00_LP_5F00_cc2640r2lp_5F00_with_5F00_GPTimer.zip

    谢谢。
    A·F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    您是否使用 CC2640R2 LaunchPad 进行了测试? 我将很快测试您的代码、看看它是否在我的 LaunchPad 上工作。

    此外、 我将过渡到串行套接字代码的最新 SDK。 谢谢您告诉我! 我想再次问一下、代码的 BLE5版本是否有差异?

    感谢您的帮助!

    此致、

    伊姆兰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Imran:

    我的屏幕截图来自的文件位于"main.c"(在应用程序项目中)的"Startup"文件夹下、很抱歉没有说明这一点。 我们想要更新到最新 SDK 的另一个原因是、由于认证问题、您无法使用旧 SDK 投入生产。 (*查找代码的一个有用快捷方式是使用工作区搜索、使用 Ctrl + H、然后在 C/C++搜索下搜索整个工作区)

    一些问题:

    -您看到任何 UART 输出吗?  

    -如果可能,您可以检查它是否适用于您的终端上的 Android 设备吗?  

    对于 BLE4.2 Stack 和 BLE5 Stack 之间的差异、在应用级别和后端存在若干代码差异、如需更多详细信息、请创建一个专门针对该问题的新线程。  

    谢谢。
    A·F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    太好了、感谢给出的解释。  

    对于 UART 输出、显示的所有内容都是"BLE Peripheral"。 Putty 上不会显示其他文本(例如广播或设备地址)。

    2.我用 Android 手机检查,它仍然无法被检测到。

    您是否在 LAUNCHXL-CC2640R2评估板上运行了测试? 这是我正在使用的硬件、因此我想确保我们的硬件是相同的。

    在软件方面、我首先导入到 CCS v12.0 (我不确定升级到 v12.3是否会有所帮助、但可以尝试) 、在 https://www.ti.com/tool/download/SIMPLELINK-CC2640R2-SDK/5.30.00.03上下载的5.30 SDK 的示例文件夹中、blestack 文件夹中的 simple peripheral 示例。 一旦成功构建原始项目并使用外部器件(确认广播和连接)对其进行测试、我便将原始项目文件替换为您附加的 zip 文件夹中提供的文件。 这就是我需要完成的全部工作、对吧?

    谢谢。

    伊姆兰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Imran:

    您所描述的流程似乎正确。 我使用的是 CC2640R2板、因此我们的硬件是相同的。 如果无法使用我的示例替换/更改 SDK 示例中的文件、请尝试直接解压缩文件并导入我包含的工程。  

    谢谢。
    A·F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这起作用了! 感谢 Alex 帮助我!

    此致、

    伊姆兰