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.

[参考译文] CC2650STK:无法初始化传感器

Guru**** 2892170 points

Other Parts Discussed in Thread: ENERGIA, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/628143/cc2650stk-could-not-initialize-the-sensor

器件型号:CC2650STK
Thread 中讨论的其他器件:EnergiaCC2650

您好!

我正在使用 CC2650 sensortag。 我正在尝试从磁力计传感器读取数据。 我从 main.c 调用函数来初始化传感器并从传感器读取数据。 我无法从传感器读取数据。 我从 main.c 中调用"sensorMpu9250Init"函数、但我没有从该函数获取任何返回值。  

此外、我还尝试使用来增加 sensortag 的广播时间  

 

但无法在我的 Android (TI 的应用)应用中看到 sensortag。

由于我不熟悉 BLE、您能告诉我如何从传感器初始化和读取数据吗?

谢谢、

Sushrut

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有关如何使用 MPU9250的示例、请参阅 BLE SDK 中的 sensortag_mov.c 文件。 调用 init 函数是不够的:您还必须为器件加电、然后启用要从中获取数据的轴。 有关示例,请参见函数 appStateSet()。

    请注意、不应从 main.c 调用 MPU 函数、而必须从 TI RTOS 任务的上下文中调用 MPU 函数。 MAI.c 应该只用于初始化 TI-RTOS、并且您不需要对其进行任何更改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jomar Honsi、您好!

    感谢你的答复。
    我管理了从 sensortag 获取输出。
    但我将获得9位数作为传感器的输出。
    浏览 wiki 页面后、我必须知道来自传感器的数据是9 16位数据。 此外、加速计、回转仪和磁力计分别具有 x、y、z 轴的6字节数据。
    那么、这是否意味着最后3位数字是来自磁力计传感器的数据? 如果是、如何仅从9位数据中获取磁力计数据?

    在 wiki 页面上、还提到了 Gyroscope 原始数据由0-5个数据组成、加速计原始数据由6-11个字节组成、而磁力计原始数据由7-12个字节组成。

    是否意味着6-12字节的数据既来自加速计又来自磁力计? 我很困惑、请解释一下如何从传感器读取数据。


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

    您好、Sushrut、

    您实际上在维基页面上发现了一个错误:磁力计数据的偏移量为12-17、而不是7.12。 谢谢!

    然后、您可以按如下方式计算每个轴的值:

    uint16_t movementData[9];
    
    float sensorMpu9250MagConvert (int16_t data)
    {
    //-计算磁力、单位 UT、范围+-4900
    返回1.0 *数据;
    }
    
    //将传感器中的数据读入 movementData
    //…
    
    //计算磁力计 x 轴:
    float magX = sensorMpu9250MagConvert (movementData[6]);
    float magY = sensorMpu9250MagConvert (movementData[7]);
    float Magz = sensorMpu9250MagConvert (movementData[8]);
    
    
    
    

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

    尊敬的 Joman:

    感谢你的答复。

    但我还有一个问题。

    在  sensormpu9250MagRead (Int16_t *数据)函数 sensor_mpu925.c 中、我正在读取磁力计数据。

    根据上述代码、什么是数据[0]、数据[1]和数据[2]。  

    我始终得到相同的值。 我是否需要从所有3个数据中获取最后3位数字?

    或者这3个数据来自 x、y、z 轴?

    请您解释一下吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试此代码、它已经过测试和验证。 

    /*********
    *@fn magMeasure
    *
    *@简要读取和显示来自 Invensense MPU9250
    的 magnetometer 值* 运动处理单元。 假设 MPU 已开启
    * 数据就绪中断用于触发读取。
    */
    静态 bool magMeasure (void)
    {
    bool 成功;
    uint8_t status;
    int16_t DATA[3];
    char buf[64];
    
    //读取数据
    状态= SensorMpu9250_magRead (data);
    成功=状态= MAG_STATUS_OK;
    if (成功)
    {
    //显示数据
    sprintf (buf、"MAG:%04X %04X %04X x=%d y=%d z=%d (UT)\n"、
    (uint16_t) data[0]、(uint16_t) data[1]、(uint16_t) data[2]、
    数据[0]、数据[1]、数据[2]);
    }
    其他
    {
    如果(status =mag_bype_fail)
    {
    SensorMpu9250_magReset();
    }
    sprintf (buf、"M error:%02x"、status);
    }
    printLog (buf);
    
    返回成功;
    }
    

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

    您好!

    我尝试了上述代码、但我得到了一些奇怪的输出。

    我不明白为什么我一直得到'h'。

    您能不能再仔细研究一下。

    谢谢、

    Sushrut

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

    Jomar、您好!

    现在、我能够从磁力计读取数据。 我已从传感器标签中禁用所有其他传感器。

    我想将任何一个轴的值发送给接收器。

    例如、如上图所示、我 只想向接收器发送 Y 轴数据。

    是否可以屏蔽其他两个轴数据?  

    您能告诉我如何屏蔽其他2个轴数据、并通过蓝牙仅向接收器发送一个轴值吗?

    此外、这是否可以从传感器标签上禁用加速计和陀螺仪? 我尝试过、但找不到任何代码来禁用这些传感器。

    谢谢、

    Sushrut

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

    磁力计报告来自所有3个轴的数据、您无法单独禁用它们。 但它由您的应用决定您向接收器发送的数据。 在 BLE 应用中、惯例是您为所有禁用的轴填充0。 但是、如果接收端知道需要哪些数据、那么发送 magetornmeter Y 轴就足够了。 通过 BLE 链路发送数据的函数是 Movement_SetParameter(),在 sensortag_mov.c 中调用 您可以在此处选择并选择要发送的内容。

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

    感谢你的答复。
    对于接收器器件、我使用 MSP432+CC2650模块 BoosterPack 接收磁力计的数据。 我正在尝试使用白名单在接收器和传感器标签之间建立连接。 您能不能真诚地推荐我可以使用的任何 exmaple 代码。 我们在 CCS 或 Energia 中是否有任何示例代码?

    谢谢、
    Sushrut