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.

[参考译文] CCS/CC2650:向传感器数据添加时间戳

Guru**** 2470720 points
Other Parts Discussed in Thread: CC2650, CC2650STK, SYSBIOS, PACKET-SNIFFER, CC2540

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/722914/ccs-cc2650-add-timestamp-to-sensor-data

器件型号:CC2650
Thread 中讨论的其他部件:SYSBIOSCC2540

工具/软件:Code Composer Studio

是否有任何方法可以使用 SYS/BIOS 秒模块来生成以 ms 为单位的 Unix 时间戳?  

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

    器件型号:CC2650

    工具/软件:Code Composer Studio

    您好!  

    我正在尝试修改 sensortag_cc2650 示例项目、以便能够采集传感器数据(主要是加速计和陀螺仪)及其对应的时间戳(以 ms 为单位)。  

    有人建议我看一下 RTC 时间提供程序,并使用基准测试示例作为参考,但我在这方面有点迷路了...  

    有人可以指导我进行这项工作吗?  

    提前感谢  

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

    您好!

    我建议您查看 TI-RTOS 内核中的时间戳模块:

    dev.ti.com/.../index.html

    使用方法如下:

    #include 
    #include 
    
    TIMESTAMP_getFreq (&freq);
    
    t0 = Timestamp_get32 ();
    
    ... 执行工作
    
    t1 = Timestamp_get32 ();
    
    delta =(t0 - t1)/freq.lo;// S 中的时间,相应地调整 

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

    如果我想要获得以下内容:

    "以 ms 为单位的当前时间戳;加速计数据"

    对于所有频率为100Hz 的数据,最好还是使用秒模块?
    我想每次读取新的加速计值时都可以使用 second_get()。 您认为您的方法会更方便吗?

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

    时间戳和秒模块将使用相同的时间源、唯一的区别是格式。 您可以选择适合您的需求的模块格式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    再次感谢您的响应、我想我将使用秒模块。  

    我目前正在使用 sensortag_cc2650stk、特别是 sensortag_mov.c

    当 我获得加速计数据时,你认为在 SensorTag_processSensorEvent()中使用 seconds_get()是可以的吗?  

    #include 
    #include 
    
    uint32 t;
    seconds_set (1535526855)//当前 Unix 时间戳(2018年2月29日@7:14 AM) GTM
    
    void SensorTag576_processSensorEvent (void)
    {
    ...
    {
    
    //读取加速计数据
    SensorMpu9250_accRead ((uint16_t*) sensorData[6]);
    t = seconds_get();
    }
    
    
    。} 

    此外、我知道我必须扩展移动传感器 GATT 服务才能使用 TIMESTAMP 属性、这是正确的吗?  在这种情况下、我需要在发送之前分配 t SO sensorData?

    我正在按照低功耗蓝牙服装配置文件教程了解这一点。  

    最棒的  

    Alejandra

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

    在该上下文中调用 seconds_get 应该是安全的。 要同时包括时间戳、您必须扩展此服务。 如果您沿 sensorData "内部"或作为较大数据结构的一部分传递它、则需要根据您的实现方式进行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 M-W、
    我是否可以遵循任何其他指导教程或说明来指导我扩展服务?
    低功耗蓝牙配置文件教程需要我没有的 CC2640R2 LaunchPad。 那么、我已经完成了该教程的时间、只要我能够完成它...
    我拥有 CC2650及其 DevPack。

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

    您好!

    有一个与 CC2650类似的教程可供您参考:

    http://software-dl.ti.com/lprf/simplelink_academy/modules/ble_01_custom_profile/ble_01_custom_profile.html

    它适用于 v2.2.1堆栈、但我希望它也适用于 v2.2.2。

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

    尊敬的 M-W:

    感谢您的教程、在完成该教程并阅读 sensortag_cc2650stk 项目中的服务文档后、我开始修改移动服务、特别是 Data 特征。

    我认为向加速计数据添加时间戳的最简单方法是将 Data 特征的大小(字节)增加四倍。

    通过这种方法,我可以将我的 uint32 t=seconds_get()分配到数据特征的最后四个字节中。

    您认为我的推理是正确的吗? 如果是这样、是否修改以下内容就足够了:

    //在 movementservice.h 中
    //以字节
    #define MOVITY_DATA_LEN 为单位的传感器数据长度 22 //被使用为18
    
    //在 movementservice.c
    中//特性值:数据
    静态 uint8_t sensorData[sensor_data_LEN]={0、0、0、0、0、 0、0、0、0、0、 0、
    0、0、0、0、0、 0、0、0、0、0、 0
    }; 

    如果没有、您是否对如何解决此问题有任何建议?

    谢谢、

    Alejandra

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

    这似乎是您所需的最简单的方法。 如果您用四个字节增加"sensor_data_LEN"、您应该能够像以前那样使用附加的值简单地发送传感器数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、M-W、

    我正在尝试实现我提到的内容,但我遇到了 seconds_set()函数的一些问题。
    当我尝试使用上述修改来构建项目时、我遇到以下错误:

    错误#80:需要类型说明符
    错误#148:声明与"void ti_sysbios_hal_seconds_set_e_E (XDC_UINT32)"不兼容

    您知道我如何解决这个问题吗? 也许我正在调用 seconds_set();错误?

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

    您能否分享有关如何使用该函数的代码片段? 此外、我假设您已包含秒模块头文件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然、  

    我将 MOVING_DATA_LEN 定义为22。 这就是我在 sensortag_mov.c 中所做的

    #ifndef exclude_MOV
    /*********
    *包括
    */
    #include 
    #include 
    
    include "gatt.h"
    #include "gattservapp.h"
    
    #include "board.h"
    #include "movementservice.h"
    #include "sensortag_mov.h"
    #include "SensorMpu9250.h"
    #include "SensorTagTest.h"
    #include "SensorUtil.h"
    #include "u.time.h"
    字符串"include "uil.h"
    
    
    #include 
    
    /*********
    *宏
    */
    #define MOVINACT_CYCLES (MOVINACT_INACT_TIMEOUT *\
    (10000/sensorPeriod)/ 10)
    
    /*********
    *常量和宏
    */
    //执行传感器读取的频率(毫秒)
    #define SENSOR_DEFAULT_PERIOD 1000
    
    //此传感器的数据长度
    #define SENSOR_DATA_LEN MOVACT_DATA_LEN
    
    //此传感器的事件标志
    #define SENSOR_EVT ST_gyroscope_sensor_EVT
    
    //移动任务状态
    #define APP_State_error 0xFF
    #define APP_State_off 0
    #define APP_State_IDLE 1
    #define APP_State_active 2
    
    //移动任务配置
    #define MOVINACT_INACT_TIMEOUT 10. // 10秒
    #define GYR_Shake_THR 10.0
    #define WOM_THR 10
    
    //配置位掩码(sensor_mpu925.h 中定义的0-6位)
    #define MOV_WOM_ENABLE 0x0080
    #define MOV_MASK_WOM_THRESHOLD 0x3C00 // TBD
    #define MOV_MASK_INACT_TIMEOUT 0xC000 // TBD
    
    /*********
    * typedef
    */
    
    /*********
    *全局变量
    */
    uint32 t;
    //将时间设置为当前 Unix 时间戳(2018年9月5日@UTC 下午2:32)
    seconds_set (1536157938);
    
    /*******
    *局部变量
    */
    static Clock_Structurt periodicClock;
    static uint16_t sensorPeriod;
    static volatile bool sensorReadScheduled;
    static uint8_t sensorData[sensor_data_LEN];
    
    //应用状态变量
    
    // MPU 配置:
    //位0-2:加速计启用(z、y、x
    )/
    位3://启用 磁力计使能
    //位7: WOM 使能
    //位8-9:加速计范围(2、4、8、16)
    静态 uint16_t mpuConfig;
    
    静态 uint8_t appState;
    静态易失性 bool mpuDataRdy;
    静态 uint32_t nActivity;
    静态 uint8_t movThreshold;
    静态 uint8_t mpuIntStatus;
    静态 uint8_t mpuIntstates;静态 uint8_t mives;
    
    
    /*********
    *本地函数
    */
    static void sensorChangeCB (uint8_t paramID);
    static void initCharacteristicValue (uint8_t paramID、uint8_t value、
    uint8_t paramLen);
    静态空 SensorTag_clockHandler (UArg arg);
    静态空 appStateSet (uint8_t newState);
    静态空 SensorTag_processInterrupt (void);
    
    
    
    
    /
    * profile 回调
    */
    static sensorCBs_t sensorCallback =
    {
    sensorChangeCB、//特征值更改回调
    };
    
    
    /*********
    *公共职能
    */
    
    *@fn SensorTagAG_processSensorEvent
    *
    *@SensorTag 运动传感器事件处理器简介。
    *
    *@param none
    *
    *@return none
    */
    
    void SensorTag_processSensorEvent (void)
    {
    if (sensorReadScheduled)
    }{
    uint8_t 轴;
    
    Axes = mpuConfig & MPU_AX_ALL;
    
    如果(轴!= ST_CFG_SENSOR_DISABLE)&&(轴!= ST_CFG_ERROR)
    {
    //获取中断状态(清除中断)
    mpuIntStatus = SensorMpu9250_irqStatus ();
    
    //过程陀螺仪和加速计
    if (mpuDataRdy || appState == APP_State_active)
    {
    IF (mpuIntStatus 和 MPU_MOVement)
    {
    //检测到运动(小滤波器)
    nMods++;
    如果(nModions == 2)
    {
    nActivity = MOVITY_INACT_CYCLES;
    }
    }
    如果(mpuIntStatus 和 MPU_DATA_READY)
    {
    //读取陀螺仪数据
    SensorMpu9250_gyroRead ((uint16_t*) sensorData);
    
    //读取加速计数据
    SensorMpu9250_accRead ((uint16_t*) sensorData[6]);
    
    //获取当前 Unix 时间戳
    t = seconds_get();
    //将 t (即 uint32)存储到 sensorData 最后四个字节中。
    sensorData[18]= t;
    sensorData[19]= t>>8;
    sensorData[20]= t>>16;
    sensorData[21]= t>>24;
    }
    
    mpuDataRdy = false;
    
    if (appState = app_State_active &&!!(mpuConfig & MPU_AX_MAG))
    {
    uint8_t status;
    
    状态= SensorMpu9250_magRead ((int16_t*)&sensorData[12]);
    
    //始终测量磁力计(非中断驱动)
    如果(status =mag_bype_fail)
    {
    //出错时空闲
    nActivity = 0;
    appState = app_State_error;
    }
    否则(状态!= mag_status_OK)
    {
    SensorMpu9250_magReset();
    }
    }
    
    
    如果(nActivity >0)
    {
    if (appState!= app_State_active)
    {
    //转换到活动状态
    appState = app_State_active;
    nModions = 0;
    if (SensorMpu9250_reset ())
    {
    SensorMpu9250_enable (轴);
    }
    }
    
    IF (mpuConfig 和 MOV_WOM_ENABLE)
    {
    n 活动--;
    }
    
    //发送数据
    Moving_SetParameter (sensor_data、sensor_data_LEN、sensorData);
    }
    其他
    {
    if (appState!= app_State_idle)
    {
    //从活动状态转换到空闲状态
    nModions = 0;
    appState = app_State_Idle;
    if (SensorMpu9250_reset ())
    {
    SensorMpu9250_enableWom (movThreshold);
    }
    }
    
    }
    
    sensorReadScheduled = false;
    }
    } 

    我仅包含了我要修改的 SensorTag_processorSensorEvent。  

    另一方面、如果我想要100Hz 的采样频率、我应该更改 SENSOR_DEFAULT_PERIOD、对吧?

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

    相反,如果我在函数声明中使用 seconds_set(),如 SensorTag_init()

    void SensorTagit_init (void)
    {
    //set time
    seconds_set (1536157938);
    
    //添加服务
    Movement_addService ();
    
    //使用配置文件 Movement_registerAppCBs
    (&sensorCallbacks)注册回调;
    
    //初始化模块状态变量
    ReadmpuConfig = ST_CFG_SENSOR_DISABLE;
    sensorPeriod= sensorApp_App_App_App_AppSchedules =
    false;sensorations_off;sensorModerned = sensorations_statement = sensorModerned;sensor
    
    
    
    
    if (SensorMpu9250_init()
    ){
    SensorTagait_reset ();
    SensorMpu9250_registerCallback (SensorTag/TagprocessorInterrupt);
    }
    
    /初始化特征
    initCharacteristic Value (sensor_peri、
    sensor_default_period / sensor_period_resolution、
    sizeof (uint8_t));
    
    //为内部周期性事件创建连续时钟。
    Util_constructClock (周期时钟、SensorTag_clockHandler、
    1000、sensorPeriod、false、0);
    } 

    我得到以下结果:  

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

    您是否已将秒模块添加到 TI-RTOS .cfg 文件中? 尝试将其添加到.cfg 文件中:

    VAR 秒= xdc.useModule('ti.sysbios.hal.Seconds');
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将尝试并告知您...

    此外、在某种不相关的主题上、到目前为止我对 sensortag_cc2650stk 所做的唯一修改是将 movementservice.h 中的 move_data_LEN 更改为22
    但是、我在 LightBlue 应用上仍然只能看到18个字节(这是我用作 BLE Scanner 的内容)、它们始终是相同的、当 movement_data_LEN 为18时则不是如此。

    我是否认为不应该这样做?

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

    尝试查看 movementservice.h 并将 MOVE_DATA_LEN 更改为22个字节、这是用于服务本身的定义。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我将在 movementservice.h 上将其设置为22

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

    按照您的建议,我在.cfg 文件中添加了"var seconds = xdc.useModule('ti.sysbios.hal.Seconds');",现在我能够使用 seconds_set()来构建我的应用程序项目;将其放置在 SensorTagitu_init()中;

    但是、我仍然无法从移动服务读取22个字节。 我只有18个字节、即使我已将 movementservice.h 中的 move_data_LEN 更改为22个字节

    我得到的18个字节始终是相同的字节、当 move_data_LEN = 18时不会发生这种情况;在这种情况下、每次我读取这些字节时字节都会发生变化。

    您认为我做的事情不正确吗? 您对如何解决此问题有其他建议吗?

    感谢所有的帮助、我真的很感激
    Alejandra
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Alejandra、

    是否可以提供监听器捕获、以便从器件读取数据、您可以使用简单、光荣、美丽的 TI 监听器(根据来源)?
    此外、如果您再次将字节数降低到18个字节、然后以一个字节的步长增加、会发生什么情况?

    此外、您能否在 sensor_ReadAttrCB 函数中放置一个断点、并在从器件读取后记录参数(这会使转换结果丢失)。 在这个状态中、什么是偏移、maxLen 和 Method?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、M-W、

    随附了一个文件、其中包含我使用 LigthBlue Explore 从数据中读取的屏幕截图。 以及在其中每个 MOTION_DATA_LEN 上设置的字节数的说明。  

    您能指导我完成断点过程吗? 我不确定该怎么办...  

    谢谢、

    Alejandra

    e2e.ti.com/.../Sensortag_5F00_capture.docx

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

    大家好、M-W、

    很抱歉收到所有消息。

    我成功执行了断点过程、这里是变量的屏幕截图。

    最棒的

    Alejandra

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

    您可能需要关闭优化才能观察到正确的值、屏幕截图似乎表明您没有实际观察到正确的值。

    此外、正确的监听 器捕获功能会很有帮助、请查看我们免费的监听器工具 www.ti.com/.../PACKET-SNIFFER (不是版本2、这不支持 BLE)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 M-W:

    简单、光荣、美丽的 TI 监听器似乎无法正常工作... 未找到任何 BLE 器件。 :(

    我尝试了以下教程: http://processors.wiki.ti.com/index.php/BLE_sniffer_guide

    还有其他建议吗?

    此外、您为什么说我没有实际观察到正确的值? 我将时间戳值放在数据数组的磁力计字节上、它们看起来是正确的。 我似乎不明白当涉及到22个字节时会发生什么情况...  

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

    由于监听器不起作用、我将之前使用的手机更改为 Android、并使用 BLEScanner 试用了那里的所有功能。 在这里、我有22个字节。

    对于22字节、LightBlue 应用中可能存在某种限制。

    再次感谢您的所有帮助!!
    此致、

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

    原因可能是另一台电话正在更新连接的 MTU 大小(或尝试以不同的方式读取数据)。 监听器日志在这里有助于最终确定这一点(除了简单地根据测试进行经验猜测)。

    假设您有 CC2540软件狗、您应该会非常直接、奇怪的是您根本看不到任何内容、因为您只需将监听器固件刷写到软件狗并运行即可。

    我的意思是不观察正确的值不是你没有得到正确的时间戳。 我所指的是在断点处观察到的变量。 这些值建议偏移7212、最大长度为2^16、这是不可行的。

    你可以尝试一下 MTU 的大小,但要获得100%的真理,让嗅探器(把它降成简单的“辉煌,美丽”,因为你不能马上使它工作)工作会很好:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    jajaja,简单的辉煌,美丽的…… 我实际上没有 CC2540软件狗。

    我只拥有 Sensortag CC2650和 DevKit。

    不管怎么说、由于在另一部手机上工作正常、我很满意。 但是、我仍然希望在将来查看监听器日志、我将继续尝试了解这一点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    在考虑到我只拥有 CC2650 SensorTag 和 DevKit 的情况下、如何查看监听器日志方面有任何建议?  

    最好

    Alejandra

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

    恐怕不是这样、我的最佳建议是为自己准备一个器件、您可以将其用作监听器器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、M-W、

    我想念你:P

    我仍然遇到22个字节的问题 (在大多数情况下)、非常奇怪...  我想现在我放弃了这个、我将发送时间戳而不是磁力计字节、因为我无论如何都不会使用它。

    此外、我通过使用秒模块意识到我是个白痴、因为我需要的是毫秒分辨率。 是否还有任何方法也可以获得秒模块的毫秒数? 或者、我是否应该使用时间戳模块(正如您之前建议的、抱歉)、如下所示?  

    //在 Sensortag_mov.c
    
    #include 上 
    #include 
    
    
    (笑声)
    void SensorTagaid_processSensorEvent (void)
    {
    ...
    如果(mpuIntStatus 和 MPU_DATA_READY)
    {
    //读取陀螺仪数据
    SensorMpu9250_gyroRead ((uint16_t*) sensorData);
    
    //读取加速计数据
    SensorMpu9250_accRead ((uint16_t*) sensorData[6]);
    
    t = Timestamp_get32 ();
    
    sensorData[12]=t>>24;
    sensorData[13]= t>>16;
    sensorData[14]=t>>8;
    sensorData[15]= t;
    }
    (笑声)
    
    Moving_SetParameter (sensor_data、sensor_data_LEN、sensorData);
    } 

    在这种情况下、我是否能够获得一个时间戳来提供运动传感器的每个读数之间的差异(以毫秒为单位)?  

    此外、我不确定我应该如何使用时间戳频率和 Timestamp_getFreq (&freq);(在文档中、我应该使用它将时间戳值转换为实时单位、但我非常不清楚这是如何工作的)。 请指导我完成此过程吗?  

    谢谢、  
    Alejandra  




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

    这是一个解决方案:)对于时间戳,tou 将需要使用“时间戳频率”将“t”(在您的情况下)转换为如下所示的时间单位:

    t / freq.lo =时间、单位为秒;

    因此、要获得毫秒、您需要相应地对其进行缩放:

    (t * 1000)/freq.lo =时间、单位为毫秒。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 M-W:

    采集频率有一个非常奇怪的行为。 (它通常约为100Hz、但有时采集频率会大幅下降、并且在频率从5Hz 到30-40Hz 约30秒或更多时询问)(这基于我从传感器获取的时间戳)

    您是否对这种情况的发生有任何了解? 我将从自主 Android 应用程序获取数据。

    此外、我还想购买您建议的 CC2540软件狗、以便能够使用您美丽的嗅探器、并尝试更好地了解这一点。 我只想确定,我应该得到 的是:www.ti.com/.../CC2540EMK-USB 吗? (我使用的是 CC2650、我只有 DevKit)

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

    很难说、我建议您查看采集代码、并可能进行一些调试 GPIO 切换、您可以使用逻辑分析仪/示波器进行跟踪、您可以使用时间戳进行交叉检查。

    关于软件狗、这就是其中之一。 您可以看到、TI 有一个"数据包监听器"和"数据包监听器2"、而是支持 BLE 4.0的"数据包监听器"。

    计划在明年年初使用数据包监听器2和 Wireshark 来提供 BLE 4.3支持。 要利用此解决方案、您需要 www.ti.com/.../LAUNCHXL-CC1352R1www.ti.com/.../LAUNCHXL-CC26X2R1。
    获取其中一个平台的好处在于、您可以尝试在最新平台上进行开发、从软件的角度来看、该平台更容易。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 M-W:

    我有 USB 软件狗、我尝试将其与"数据包监听器"(支持 BLE 的软件包监听器)配合使用、但我无法开始数据包捕获、我始终会收到错误噪声。

    我正在尝试使用 SmartRF 闪存编程器更新软件狗的固件(我还安装了 Smart RF Studio、因此我可以安装 CEBAL 驱动程序) 、但我无法在闪存编程器中看到软件狗、我是否还需要考虑其他事项?   

    谢谢、

    Alejandra

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

    您是否还获得了对软件狗进行编程所需的 CC 调试器(如产品页面中所述)?

    如果不是、我建议您尝试举手(如果可能、请贷款)、目前我们在商店中没有任何东西、暂时不会再库存。 如果您需要购买一款、您可以在各种网上商店(如 AlivExpress)中找到创意。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 M-W:  

    我没有获得对软件狗进行编程所需的 CC 调试器。  

    如果可能、我会尝试获取一个软件狗、现在我更改了软件狗的驱动器、并且能够将其与美丽的软件包监听器配合使用、因此现在可以了。


    我制作了一个连接到 sensortag 的 Android 应用程序、每5秒开始读取/停止读取数据。 (它在5秒内读取、然后停止读取、并且开始再次读取、总共25秒)  

    我在此次采集过程中使用了监听器(随附文件)、但我不确定如何解读它。  您是否有关于如何解读接收到的数据包的指南? 我特别感兴趣的是检查从移动服务传输的数据。  



    我目前使用此作为指南: http://processors.wiki.ti.com/index.php/BLE_sniffer_guide
    e2e.ti.com/.../Acquisition-5_2D00_5.psd

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

    很高兴您能让它运行。 您目前使用的指南是我所了解的最好的。

    您感兴趣的数据将是连接的一部分、因此我会观察与连接相关的软件包(它是带有黄色字段的软件包)并在其中查找您的数据。 假设您只通过无线方式发送移动数据、则您应该只能发现这一点、并且可能还会发现一些没有任何有效载荷的空事件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、M-W、

    目前我没有任何黄色字段、从我的应用的调试器中、我可以看到数据正在传输、但在监听器上、我没有任何与连接包相关的内容。 我只有广播包。  

    即使我返回到 SensorTag 应用程序和未修改的固件、我仍然只能获取广播包。

    我转到 Peripheral.c 来设置  gapRole_AdvChanMap = GAP_ADVCHAN_37;并将监听器中的通道设置为37以查看是否有任何更改、但行为保持不变。 (对38和39也是如此)

    此外、我尝试将监听器上的发起方地址设置为手机地址和 sensortag 地址。  

    我还尝试在不那么拥挤的环境中测试这一点、但仍然没有。


    附件是我通常看到的内容的屏幕截图。

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

    尊敬的 M-W:

    经过许多配置后、我终于能够获得数据。

    附件是我所得到的内容的屏幕截图、正如您提到的(我认为是我的数据)和一些空的有效负载。

    在您看来、我所看到的是有道理的?  


    谢谢、

    Alejandra

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

    我觉得可以、空 PDU 可以。 非空有效载荷中的数据是否符合您的期望?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、是的。 谢谢。  

    如果 CC2650的固件已编程为以100Hz 的频率传输移动传感器数据(发送到我的应用程序)、那么一节电池的频率为30Hz、另一节电池的频率为100Hz、这对您来说是否有意义?

    最棒的  
    Alejandra

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

    对我来说毫无意义。 您是否确定由于一个电池"电量不足"而导致电源中断、并且器件实际上正在重新启动?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我几乎确定。

    是否有任何迹象表明器件实际上正在重新启动?

    我对每节电池进行了5次测试、使用相同 的应用程序以100Hz 的频率运行、使用相同的 CC2650、无需修改或重新加载固件。

    我使用的是 Energizer CR2032和 Duracel DL2032 (根据我的理解、它们是相同的电池、应该具有相同的行为)  

    首先、我使用了 Duracel 电池、并且能够以~100Hz 的频率采集数据。 (此频率由 总样本/测试持续时间以及样本之间的平均时间戳差决定)

    然后、我使用了 Energizer 电池、在5次采集中、频率均下降至~30Hz。  

    我觉得很奇怪,我似乎不能理解这种行为。   


    最棒的
    Alejandra

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

    您好、M-W、

    神秘更新:我对每个电池进行了五次测试、每次测试1分钟、Duracel Keept 以~ 100Hz 的频率运行、而 Energizer 的测试如下:

    测试1: ~ 33.28Hz
    测试 2:~ 42。 84 Hz
    测试 3:~ 63.18Hz
    测试 4:~ 86.58Hz
    测试 5:~ 100Hz

    我觉得这更奇怪、但与我之前经历的频率行为一致。 有什么关于为什么会发生这种情况的想法?

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

    听起来可能与电压相关、您是否尝试绘制过压操作图来查看采样期间电压如何/是否骤降? 您使用的加速计对此可能很敏感、这可能会影响传感器的最大采样率。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、M-W、

    我可以尝试一下。

    但对我来说、这不太可能与电压相关、在过去的几天里、我已经尝试过很多不同的电池和 SensorTag 模块、它们在某些时候的表现似乎都是一样的。

    让我认为它与电压无关的是、在我的一小时测试期间、频率在某个点变为30Hz、但随后它上升到100Hz 并保持在100Hz 左右。

    我打开了一个介绍此问题的新主题: e2e.ti.com/.../741996

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

    尝试一下、看看您发现的内容。 现在让我们休息一下这个话题、让问题继续出现在新话题中、以避免重复工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然! 感谢所有帮助