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.

[参考译文] MSP430FR2633:与 MSP430FR2633通信时钟条纹问题时出现 I2C 问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/736589/msp430fr2633-i2c-issue-talking-to-msp430fr2633-with-clock-streching-problem

器件型号:MSP430FR2633

您好!

我正面临一个奇怪的问题、即通过 eUSCI_B0、I2C 主设备使 MSP430FR2633能够与 Sensirion SCD30配合使用。  

以下是我发现的问题:  

首先、MSP430 I2C 端口 P1.2 (SDA)和 P1.3 (SCL)通过使两个上拉电阻都达到+3.3V 来正常工作。 这位于 SCD30传感器插入之前。

其次、我只为 SCD30 CO2传感器提供了+3.3V 电压、无需插入 MCU I2C 端口。 测得的 SDA 和 SCL 均为+3.0V

接下来、我插入 SCD30到 MSP430FR2633 P1.2和 P1.3的两条 I2C 线路。 测量了两条线路+3.3V。

一切似乎都很好。 但是、在按照所附内容执行代码后、最初所有 I2C 命令写入和读取只能运行1个周期。 那么事情开始出错。  

执行代码后、我发现 SCL 线路永久拉低。 SDA 仍然为高电平。 即使我复位 MCU (我正在使用 MSP430FR2633 CapTIvate 感应 EVM)、我也会注意到 SCL 仍然保持低电平。  

e2e.ti.com/.../4118.scd30_5F00_testing.zip

e2e.ti.com/.../Sensirion_5F00_CO2_5F00_Sensors_5F00_SCD30_5F00_Interface_5F00_Description.pdf

e2e.ti.com/.../Sensirion_5F00_CO2_5F00_Sensors_5F00_SCD30_5F00_Datasheet.pdf

我将与您一起检查您是否可以帮助我检查我的代码、以查看此问题是否是由于时钟拉伸问题造成的。

下面是使用 STM 的示例代码、我无法将其转换为 TI MCU 格式。 任何帮助都将有所帮助。 我不知道为什么 SCL 和 SDA 都卡在低电平。  

e2e.ti.com/.../Sensirion_5F00_CO2_5F00_Sensors_5F00_SCD30_5F00_Sample_5F00_Code_5F00_STM32VLDISCOVER_5F00_STM32F100.zip 

此致、

公里/小时

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

    您的代码质量非常非常差。
    它是如此之多、以至于无法对其进行分析。
    请修改您的代码以消除以下所有警告:

    "../main.c"、第295行:警告#169-D:"uint8_t *"类型的参数与"uint8_t"类型的参数不兼容
    "./main.c"、第302行:警告#169-D:"uint8_t *"类型的参数与"uint8_t"类型的参数不兼容
    "./main.c"、第304行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第311行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第320行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第330行:警告#169-D:类型"int"的参数与类型"uint8_t *"的参数不兼容
    "./main.c"、第330行:警告#154-D:将非零整数转换为指针
    "./main.c"、第332行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第341行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第352行:警告#169-D:"uint8_t *"类型的参数与"uint8_t"类型的参数不兼容
    "./main.c"、第363行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第399行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第400行:警告#121-D:返回值类型与函数类型不匹配
    "./main.c"、第427行:警告#141-D:函数调用中的参数过多
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    KPK 您好、

    感谢您的发帖。
    我们将研究此问题、并尽快回复您。

    谢谢、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从接口说明(1.1秒):
    >时钟拉伸是启动微控制器所必需的、并且可能在每次 ACK 前发生。 I2C 主时钟
    >需要根据 NXP 规范实施拉伸。 启动时间< 2s
    这表明 SCD30在启动时可能会将 SCL 保持在低电平长达2秒。 按原样、拉伸12ms (1200个 I2C 时钟)已经很长了。

    >SCD30不支持重复起始条件。
    您的代码显示为使用重复启动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这看起来非常类似于:

    e2e.ti.com/.../736525
    也许可以:
    e2e.ti.com/.../736056