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.

[参考译文] FDC1004EVM:MSP432 +基于 I2C 的 FDC1004;建立连接时遇到问题

Guru**** 1830000 points
Other Parts Discussed in Thread: FDC1004, ENERGIA
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/955517/fdc1004evm-msp432-fdc1004-over-i2c-having-trouble-establishing-connection

器件型号:FDC1004EVM
主题中讨论的其他器件:FDC1004ENERGIA

大家好、我正在尝试使用 FDC1004和 MSP432来检测液位。 我购买了 EVM 板并断开了 FDC1004、以便将其连接到 MSP432。 在过去的一周里、我一直在尝试通过 I2C 协议将信息从1004传输到 MSP432、但我运气不好。 我已经下载  了 Energia 的示例项目、并尝试立即运行该项目(使用 Wire 库)。 代码似乎正在挂起  

wire.endTransmission (); 

•我n‘t 可能存在 I2C 问题、因此我在 Energia 中运行了 I2C 扫描、并确定它没有找到1004。 奇怪的是、我尝试在 Arduino Uno 上运行 I2C 扫描、有时它能够在地址0x50处找到 FDC1004 

• 我在 SDA 和 SCL 上都有10k 上拉电阻器、电压达到3.3V

•我连接了 MSP432的 FDC1004 SDA->6.4和 SCL->P6.5 (我也在 MSP432上尝试了1.6和1.7、运气不好)

•FDC1004连接到 MSP432 3.3V

•我在标准试验电路板上执行所有这些操作

如果有人能为我提供帮助、我将不胜感激、我仍然是 I2C 和 TI 的新手。 我愿意使用其他软件、任何东西都可以使其正常工作! 期待收到回复。  

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

    Dan、

    在深入了解您的问题之前、请先确认几个初步事项:

    FDC1004 EVM 原理图显示了 SDA 和 SCL 线路上的~5k 电阻器。
    很难想象值差异可能是问题所在、但请将电路板的值更改为4.99k、以查看其是否有用。

    2.数据表提供了以下内容:

    8.5.1串行总线地址
    为了与 FDC1004通信、主器件必须首先通过一个从器件地址字节来寻址从器件。 从器件地址字节包含7个地址位和一个指示打算执行读取或写入操作的方向位。 FDC1004的7位地址为(MSB 在前):B101 0000。

     您的协议是否遵循此标准?

    此致、
    John

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

    尊敬的 John:

    1) 1)我现在碰巧在右侧有4.7K 电阻器、这些电阻器就足够了吗? 不要认为我有确切的值(4.99k)。

    2) 2)我打开了与 Wire.begin 的 I2C 连接,然后每次我想通信时我都做 Wire.beginTransmission(0x50)。 这是该数据表中的地址。 我想确定、所以我运行了下面的代码(简单的 I2C 扫描仪)、但在任何地址都找不到1004。 但是、当我在 Arduino Uno 上运行扫描仪时、扫描仪将会运行(如果我将导线固定在试验电路板上、则必须正确)。 这使我认为我的连线有问题吗? 但我一生都不能找到它的位置。

    #include 
    
    void setup(){
    Wire.begin();
    
    Serial.begin(9600);
    while (!Serial);// Leonardo:Wait for serial monitor
    Serial.println("\nI2C Scanner ");
    
    }
    
    void loop(){
    int nDevices=0;
    
    Serial.println("Scanns");
    
    for (字节地址=1;地址<127;++address){
    // i2c_scanner 使用的返回值
    // Write.endTransition 以查看是否
    //器件确实确认了地址。
    Wire.beginTransmission(address);
    字节错误= Wire.endTransmission ();
    
    如果(ERROR = 0){
    serial.print ("I2C 器件位于地址0x");
    if (地址< 16){
    serial.print ("0");
    }
    serial.print (address、hex);
    serial.println("!");
    
    ++n 设备;
    }
    否则{
    serial.print ("错误");
    serial.print (错误);
    serial.print ("位于地址0x");
    if (地址< 16){
    serial.print ("0");
    }
    serial.println (地址、十六进制);
    }
    }
    如果(nDevices =0){
    serial.println ("找不到 I2C 设备\n");
    }否则{
    serial.println ("don\n");
    }
    延迟(2000);//等待5秒进行下一次扫描
    
    } 

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

    我还在 SCL 和 SDA 线路上放置 LED、以查看何时传递数据。 当连接到 Arduino 时、它们似乎正常闪烁以指示正在传输数据、但是当连接到 MSP432时、它们始终处于关闭状态。

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

    Dan、

    您的 MSP432能否通过 I2C 与其他电路板通信?

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

    尊敬的 John:

    我使用 Arduino 板测试了这种情况。

    充当主设备的 Arduino 可将432作为从设备。 但充当主设备的432无法找到 Arduino 作为从设备。

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

    Dan、

    在与同事进行交流之后、这听起来像是 MSP432的问题。

    我将把这个主题转移到 E2E 论坛、以便专家帮助解决这个问题。

    感谢您的耐心等待。

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

    您好、感谢您的帮助! 我会继续检查、并尝试在周末做更多工作。 希望我能获得一些新的工作机会。