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.

[参考译文] LAUNCHXL-CC2650:MPU9250无中断

Guru**** 2469210 points
Other Parts Discussed in Thread: CC2650, CC2650STK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/587202/launchxl-cc2650-no-interrupt-from-mpu9250

器件型号:LAUNCHXL-CC2650
主题中讨论的其他器件:CC2650CC2650STK

大家好、

因此、我将 MPU9250 IMU 连接到 CC2650 LaunchPad、LaunchPad 正在成功识别 IMU (在 MPU9250的世卫组织 AM_I 寄存器中读取0x71)。 出于某种原因、以下函数:

PIN_registerIntCb (hMpuPin、SensorMpu9250_Callback);

正在返回:

PIN_NO_ACCESS

我使用引脚 DI07作为 LaunchPad 上的中断引脚(Board_MPU_INT、直接从 CC2650STK.c/.h 复制到 CC2650_LAUNCHXL.c/.h)。 当我尝试转到 Board_MPU_INT 的定义时、我在 EWARM 中收到以下错误消息:

有人可以帮我解决这个问题吗?

谢谢、

Tony

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否发布代码片段? 只需上面的描述、您就会遇到一些困难。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是 MPU9250被初始化的地方:

    bool SensorMpu9250_init (void)

    MPU 使用的//引脚
    hMpuPin = PIN_OPEN (&pinGpioState、MpuPinTable);

    //寄存器 MPU 中断
    PIN_registerIntCb (hMpuPin、SensorMpu9250_Callback);

    //应用程序回调最初为 NULL
    isrCallbackFn =空;

    返回 SensorMpu9250_reset ();


    问题出在函数 PIN_registerIntCb (hMpuPin、SensorMpu9250_Callback)中:

    PIN_Status PIN_registerIntCb (PIN_Handle handle、PIN_IntCb PCB){
    if (句柄){
    handle->pCbFunc = PCB;
    返回 PIN_SUCCESS;
    }否则{
    返回 PIN_NO_ACCESS;



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

    如果显示 PIN_NO_ACCESS、则表示在执行 PIN_OPEN 时没有得到有效的句柄。 您需要确保引脚未被另一个句柄占用。

    您是否已将这些引脚用于其他外设(I2C/SPI)?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用来自 cc2650lp 文件夹的 SensorTag 项目。 我已使用 I2C 引脚将 MPU9250连接到 CC2650 LaunchPad、即 DIO4 (SCL)和 DIO5 (SDA)。 如前所述、我将引脚 DIO7用于中断、因为这是 CC2650STK 板级配置文件中定义的引脚。 我确实注意到 CC2650_LAUNCHXL 板级配置文件中的 Board_GLED 使用了同一引脚、但我在使用该 Board_GLED 的任何地方都做了注释。

    我在 CC2650_LAUNCHXL.h 中定义了该引脚、如下所示:

    #define Board_MPU_INT ioID_7

    在 CC2650_LAUNCHXL.c 中、如下所示:

    const PIN_Config BoardGpioInitTable[]={
    (笑声)
    BOARD_MPU_INT | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_NEGEDGE |
    PIN_迟滞、 /* MPU_INT 低电平有效 *

    PIN_TERMINATE
    };

    我还需要做什么吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    引脚 GLED 用于 hGpioPin = PIN_OPEN (&pinGpioState、SensorTagAppPinTable);您必须:
    1.注释掉此行以及所有 hGpioPin 句柄的用法。
    2.从 SensorTagAppPinTable 中删除 GLED 并删除所有 GLED 的用法
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christin:

    我现在将引脚 DIO12用于中断、因为该引脚不用于任何东西。 但是、我仍然收到 PIN_NO_ACCESS 条件。 我已通过三个步骤设置中断:

    1) 1)在 CC2650_LAUNCHXL.h 中:

    #define Board_MPU_INT ioID_12.

    2)也在 CC2650_LAUNCHXL.h 中:

    #define Board_PWMPIN2 Board_MPU_INT

    3) 3)在 CC2650_LAUNCHXL.c 中(如前所述):

    const PIN_Config BoardGpioInitTable[]={
    (笑声)
    BOARD_MPU_INT | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_NEGEDGE |
    PIN_迟滞、/* MPU_INT 低电平有效*/

    PIN_TERMINATE
    };

    我是否错过了任何步骤?

    Tony
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尽管 IOID_12无论如何都不使用、但您已将其映射到分配给 MpPinTable 的 Board_MPU_INT 宏。(您可以使用 Ctrl+h 搜索 Board_MPU_INT 宏)

    然后、该引脚被分配到 SensorMpu9250_init 函数中的以下句柄。 您应该确保您正在使用的宏没有被分配给任何引脚句柄。 您只需创建一个新的引脚表和宏即可满足自己的需求。

    MPU 使用的//引脚
    hMpuPin = PIN_OPEN (&pinGpioState、MpuPinTable);

    您可以在 CCS 中使用 Ctrl+h 搜索整个程序、找到我提供的所有信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我理解您的说法、并已从 BoardGpioInitTable 中删除 Board_MPU_INT 声明、即现在仅在 MpuPinTable 中声明。 我现在才注意到 MpuPinTable 中的 Board_MPU_POWER 引脚:

    静态 PIN_Config MpPinTable[]=

    (笑声)
    BOARD_MPU_POWER | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull |
    PIN_DRVSTR_MAX、
    (笑声)
    };

    此引脚在 CC2650STK.h 中声明为 DIO12。 我是否正确地认为该引脚用于通过 MPU9250为第三方传感器供电? 我将 MPU9250上的 VDD 引脚连接到 CC2650 LaunchPad 上的3.3V……

    Tony
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、在 sensortag 项目上、该引脚用于为 MPU9250加电。 您可以按照自己的方式创建项目、只需修改所使用的文件(开箱即用项目)即可满足您的需求。 在您的情况下、MPU 也会受电、这将比 sensortag 项目使用传感器的方式消耗更多的电流、这意味着您无需在表中放置电源引脚。 除此之外、传感器和 CC26xx 之间的通信是相同的。