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-CC1310:vl53l1x

Guru**** 2485265 points
Other Parts Discussed in Thread: CC1310

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1190314/launchxl-cc1310-vl53l1x

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

尊敬的 TI:

我目前正在为 vl53l1x 传感器处理 cc1310 launchpad 、我尝试连接 vl53l1x c 文件、但无法连接

您能 给我提供将 API 文件连接到我们的硬件的任何想法吗?

此致、

哈里。

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

    您好 Hari、  

    我看到 vl53l1x 使用 i2c 接口。

    您可以使用 i2ctmp 示例作为参考、其中我们使用 TI 温度传感器和 i2c 驱动程序来设置传感器并与之通信。  

    https://dev.ti.com/tirex/explore/node?node=A__AGrHyrNCuqlDNr6-Qm-yMg__com.ti.SIMPLELINK_CC13X0_SDK__eCfARaV__LATEST

    您必须阅读 ST 的文档和教程、了解传感器的需求、并通过 i2c 接口提供相应的命令。  

    此致、

    SID  

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

    /*
     * Copyright (c) 2018-2019, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    /*
     *  ======== i2ctmp116.c ========
     */
    #include <stdint.h>
    #include <stddef.h>
    #include <unistd.h>
    
    /* Driver Header files */
    #include "Board.h"
    #include <ti/drivers/I2C.h>
    #include <ti/display/Display.h>
    
    /* Example/Board Header files */
    #include <ti/drivers/GPIO.h>
    
    #define TASKSTACKSIZE       640
    
    /*
     *  ======== TMP Registers ========
     */
    #define TMP006_REG          0x0001  /* Die Temp Result Register for TMP006 */
    #define TMP116_REG          0x0000  /* Die Temp Result Register for TMP116 */
    
    #define TMP006_ADDR         0x52;
    #define TMP116_BP_ADDR      0x48;
    #define TMP116_LP_ADDR      0x29;
    
    static Display_Handle display;
    
    /*
     *  ======== mainThread ========
     */
    void gpioButtonFxn0(uint_least8_t index)
    {
        /* Clear the GPIO interrupt and toggle an LED */
        //GPIO_toggle(Board_GPIO_LED0);
    }
    void *mainThread(void *arg0)
    {
        //uint16_t        sample;
        uint16_t       distance;
        uint8_t         txBuffer[1];
        uint8_t         rxBuffer[1];
        I2C_Handle      i2c;
        I2C_Params      i2cParams;
        I2C_Transaction i2cTransaction;
        /* Call driver init functions */
        Display_init();
        GPIO_init();
        I2C_init();
    
        /* Configure the LED and if applicable, the TMP116_EN pin */
        GPIO_setConfig(Board_GPIO_LED0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
     //#ifdef Board_GPIO_TMP116_EN
       // GPIO_setConfig(Board_GPIO_TMP116_EN, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
        /* 1.5 ms reset time for the TMP116 */
       // sleep(1);
     //#endif
      GPIO_setCallback(Board_GPIO_BUTTON0, gpioButtonFxn0);
        /* Open the HOST display for output */
        display = Display_open(Display_Type_UART, NULL);
        if (display == NULL) {
            while (1);
        }
        /* Turn on user LED */
        GPIO_write(Board_GPIO_LED0, Board_GPIO_LED_ON);
        Display_printf(display, 0, 0, "Starting the i2ctmp example.");
        /* Create I2C for usage */
      //  GPIO_enableInt(Board_GPIO_BUTTON0);
    
        I2C_Params_init(&i2cParams);
        i2cParams.bitRate = I2C_100kHz;
        i2c = I2C_open(Board_I2C_TMP, &i2cParams);
        if (i2c == NULL) {
            Display_printf(display, 0, 0, "Error Initializing I2C\n");
            while (1);
        }
        else {
            Display_printf(display, 0, 0, "I2C Initialized!\n");
        }
    
        /* Common I2C transaction setup */
        i2cTransaction.writeBuf   = txBuffer;
        i2cTransaction.writeCount = 1;
        i2cTransaction.readBuf    = rxBuffer;
        i2cTransaction.readCount  = 1;
    
        /*
         * Determine which I2C sensor is present.
         * We will prefer sensors in this order: TMP116 (on BoosterPacks),
         * TMP116 (on-board CC32XX LaunchPads), and last TMP006
         * (on older CC32XX LaunchPads).
         */
        /* Try TMP116 values */
        txBuffer[0] = TMP116_REG;
        i2cTransaction.slaveAddress = TMP116_BP_ADDR;
        if (!I2C_transfer(i2c, &i2cTransaction)) {
            /* Not BP TMP116, try LP TMP116 */
            i2cTransaction.slaveAddress = TMP116_LP_ADDR;
            if (!I2C_transfer(i2c, &i2cTransaction)) {
                /* Not a TMP116 try TMP006*/
                txBuffer[0] = TMP006_REG;
                i2cTransaction.slaveAddress = TMP006_ADDR;
                if (!I2C_transfer(i2c, &i2cTransaction)) {
                    /* Could not resolve a sensor, error */
                    Display_printf(display, 0, 0, "Error. No TMP sensor found!");
                    while(1);
                }
            }
        }
        /* Print which TMP is in use */
        if (TMP116_REG == txBuffer[0]) {
            Display_printf(display, 0, 0, "Detected TMP116 sensor.");
        }
        else {
            Display_printf(display, 0, 0, "Detected TMP006 sensor.");
        }
        /* Take 20 samples and print them out onto the console */
        while(1) {
            if (I2C_transfer(i2c, &i2cTransaction)) {
               // I2C_init();
    
    
                /*
                 * Extract degrees C from the received data;
                 * see TMP116/006 datasheet
                 */
                distance =rxBuffer[0];
               // temperature *= 0.0078125;
    
    
                /*
                 * If the MSB is set '1', then we have a 2's complement
                 * negative value which needs to be sign extended
                 */
               // if (rxBuffer[0] & 0x80) {
               //     temperature |= 0xF000;
               // }
    
                Display_printf(display, 0, 0, "DISTACE "
                        ": %d (mm)",
                               distance);
            }
            else {
                Display_printf(display, 0, 0, "I2C Bus fault.");
            }
    
            GPIO_disableInt(Board_GPIO_BUTTON1);
            /* Sleep for 1 second */
          //  sleep(1);
            sleep(1
                  );
        }
    
        I2C_close(i2c);
        Display_printf(display, 0, 0, "I2C closed!");
       // sleep(.1);
     //   }
    
        return (NULL);
    }
    
    我随附的代码 i2c 正在工作,通过 CRO 测试,但其读取的数据正确。

    如何清除是错误。

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

    您好 Hari、  

    错误是什么?  

    此致、
    SID

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

    我无法 通过 vl53l1x 传感器读取我的正确距离、它仅打印相同的数字。

    此致、

    哈里。

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

    您好 Hari、  

    请检查您是否正确配置了传感器。 i2c 似乎正常工作。 有关传感器读数和设置、请使用 ST 进行检查。  

    此致、

    SID

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

    尊敬的 SID:

     他们建议使用 API 文件 来实现这个 functins.how to implement this files  

    我是第一次处理这个 i2c、并且是一个新的消息、您能帮助我简短地描述 这个错误。

    此致、

    哈里。

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

    您好 Hari、  

    我们可以为您提供一些方向。  

    您需要查看这些 API 的源代码、然后针对我们的平台自行重写。

    您必须至少使用 TI 的 i2c 驱动程序调用替换这些函数中的 i2c 调用。  

    如果您对 TI 的 i2c 驱动器本身有特定问题、我们可以为您提供帮助、但我们无法支持您实现这些 API。

    此致、
    SID