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/MSP432P401R:TMP006简单链路示例不起作用

Guru**** 2618835 points

Other Parts Discussed in Thread: TMP006, BOOSTXL-EDUMKII

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/666772/ccs-msp432p401r-tmp006-simple-link-example-doesn-t-work

部件号:MSP432P401R
主题中讨论的其他部件:BOOSTXL-EDUMKIIBOOSTXL-SENSORS

工具/软件:Code Composer Studio

您好,

我安装了简单的链接示例,但它不起作用,程序在调用函数 sensorTmp007后停止,我不明白它发生了什么。

有人能帮帮我吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Armando,
    您使用的是哪种主板? 您是否已验证是否存在I2C传感器(在BoosterPack上或作为连接到LaunchPad的独立设备)?
    此致,
    Bob L.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Bob

    我甚至不知道该怎么办。 我已经尝试了所有的东西, 我不相信传感器... 它不是BoosterPack,而是Adafruit主板,如下所示:

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

    Armando,

     好的。 拥有BoosterPack中没有的传感器不是问题!  如果你也能引导我去做你的例子。 我不认为代码片段或项目名称是I2C示例之一,这些示例可以在 TI资源管理器MSP432 SimpleLink SDK示例下找到。

     可能发生的情况是,您根本没有使用LaunchPad针脚与外设针脚分配的正确组合。 如果您向我发送示例的位置,我可以帮助您解决问题。

    此致,

     Bob L.

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

    Bob Landers

     我很高兴穿上它(" 好的。 拥有不在BoosterPack中的传感器不是问题!"),我在  以下链接中的TI资源浏览器中使用的示例: bootxl_sensorguI_msp432p401r 。  我唯一做的修改是在main.c上。

    相关内容:

    MSP432        TMP006

    5V ----------- >VCC

    接地----------- 接地

    6.5 >SCL

    6.4 > SDA

    接地----------- AD0

    接地----------- AD1.

    #include <stdio.h>
    #include "msp.h"
    #include "driverlib/driverlib.h"
    
    #include "HAL_I2C.h"
    #include "TMP006.h"
    
    // TMP007
    uint16_t rawTemp;
    uint16_t rawObjTemp;
    float tObjTemp;
    obtfloat
    
    
    
    = float mmajmw/ mavid Amp(空
    
    WatchDoghold();
    
    /*初始化I2C通信*/
    
    initI2I22();
    
    /*初始化TMP006温度传感器*/
    sensorTmp007Init();
    而(1){
    
    /*从TMP006获得温度值*/
    IF (TMP_ON){
    
    sensorTmp007Enable(true);
    
    sensorTmp007Read(&rawTemp,&rawObjTemp);
    sensorTmp007Convert (rawTemp,rawObjTemp,&tObjTemp,&tObjAmb);
    sensorTmp007Enable(fals);
    }
    }
    }
    
    void WatchDoghold(void ){
    
    WDTCTL = WDTPW | WDTHOLD;/*停止监视计时器*/
    }
    

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

    Bob,您好!

    您认为我的实施中存在任何问题吗?

    谢谢你

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

    一个直接的问题是,您是否拥有Bosch Sensor Sensor Hub BoosterPack (在丝网屏幕上有一个清晰的BOSCH),或者您是否拥有 BOOSTXL传感器 BPack (如本链接所示)?  2所需的代码会有所不同,因此要使用您参考的演示代码,需要安装BoosterPack。 我刚刚确认代码将会超过 sensorTmp007Init();请调用有问题的演示代码。

    -Bob

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

    Bob

    我已经测试了tmp006和tmp007代码,两者都不起作用。 我已经知道该怎么做了。正如我前面提到的,我有一个Adafruit板,它包含tmp006,因为我已经看到一些用户在尝试连接此传感器时也有问题,我尝试了tmp007的代码,它一直工作到输入以下部分:

        sensorTmp007Read(&rawTemp,&rawObjTemp);

        sensorTmp007Convert (rawTemp,rawObjTemp,&tObjTemp,&tObjAmb);

    在基座上,两个代码都是相似的,如果它起作用...代码挂起在布尔值上

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有一些我不理解的东西,我已经阅读并研究了这两种类型的传感器(BOOSTXL传感器BoosterPack和BOOSTXL-EDUMKII温度传感器)。 在这两种情况下,两者的做法是相同的。 我不明白为什么不能获得温度值。 驱动程序有任何问题? 我该怎么办?
    是否有人测试过此代码并获得了良好的结果?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Armando,

     您是否能够在这方面取得更多进展? 我看了sensorTmp007Read和sensorTmp007Convert()的基本代码,你希望在你的代码中正确使用它们。  从这一点开始,我唯一想尝试的是使用传感器BoosterPack和您引用的bootxl_sensorgui代码,以查看在使用 本示例设计的硬件时,您的主板是否工作正常。

    为供您将来参考,下面是我可能建议的其他操作,以使其正常工作:

    1. 验证您的代码是否为硬件使用了正确的从属地址(Adafruit板和传感器BoosterPack中的TMP007传感器的默认从属地址均为0x40,但可以通过这些部件上的ADDR输入的跳线或其他拉紧器来更改这些地址。

    2. 验证为TMPxxx传感器提供的寄存器地址是否适用于该部件。  bot bootxl_sensorgui和Adafruit驱动程序似乎对TMP007设备具有相同的寄存器地址,但最好使用逻辑分析器来查看实际传输的内容。

    3. 如果代码在向传感器传输和I2C地址/请求之前仍然挂起,则查看逻辑分析仪输出以查看外围设备本身是否挂起会很有帮助。

    4. 由于有问题的API使用基于引用的调用参数,因此地址可能不正确,并且由于地址非法,我们将导致总线挂起。 这将在主板外显示为“挂起”,但您可以从CCS内检测到此总线故障。

    5. 使用示波器监控SCL线可让您检测控制总线的是从控制器还是主控制器(如果您在逻辑分析仪输出中看到事务挂起)。 您可能需要放置一个低值电阻器(50欧姆?) 在TMP006的路径中,以检测此情况。  如果您直接在TMP006 SCL引脚处进行监测,且SCL保持在0伏,则可能是TMP006保持总线。 如果此引脚处的值改为0.3V,则可能是主控将SCL保持在低位。

    这就是我目前能提供的所有帮助。 如果您确实获得了此功能,或者有一些其他调试数据,请继续阅读此帖子。

    此致,

     Bob L.

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

     Bob Landers,您好!  

    我实施了许多其他代码,以使传感器正常工作。 但是所有的工作都是不成功的,我现在不需要做什么,要达到这个目标。 我把我的数字分析仪捕获发送给你们

    我需要一个已经过测试的代码,并且正在帮助某人检查问题是传感器还是实施。 我开始质疑一切

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

    您的图看起来正常-我可以在输出中看到开始条件和停止条件。 下面是一个示例对,用于查看I2C是否在您的Launchpad上工作。 主/从设备对需要2个LPad。

    以下示例位于MSP432P4 SDK下的TI资源浏览器中:

    1. I2C_MASTER_w_multibyte-MASTER_CODE

    2.I2C_MASTER_w_multibyte-slaver_code

    另一种方法是在连接传感器BoosterPack时运行TMP007示例,查看是否获得SimpleLink Academy (SLA)模块中提到的结果。  

    (注意-此时SLA链接已关闭。 我将在发布时更新此帖子)。  

    此致,

     Bob L.

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

    您好,Bob Landers

    我可以获得值,但是代码只在第一次运行时运行。  之后,读取值"冻结"。  我离开了我的I2C代码的书面功能

    void I2C_write16 (无符号字符指针,无符号int writeByte){
    /**/
    while (EUSSCI_B1->CTLW0 & EUSCI_B_CTLW0_TXSTP);
    /*启动I2C写入操作*/
    EUSCI_B1->CTLW0 |= EUSCI_B_CTLW0_TR + EUSCI_B_CTLW0_TXSTT;
    /**/
    EUSCI_B1->IFG &=~(EUSCI_B_IFG_TXIFG0);
    /**/
    While (EUSCI_B1->STATW & EUSCI_B_STATW_BBUSY_OFS);
    /**/
    EUSCI_B1->TXBUF =指针;
    /**/
    EUSCI_B1->TXBUF =(unsigned char)(writeByte>>8));
    /**/
    EUSCI_B1->TXBUF =(unsigned char)(writeByte&0xFF);
    /**/
    EUSCI_B1->CTLW0 |= EUSCI_B_CTLW0_TXSTP;
    /**/
    }