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.

[参考译文] MSP430F168:从 CRO 探测 I2C SCL 线路、导致 I2C 停止工作

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/730550/msp430f168-probing-i2c-scl-line-from-cro-causing-i2c-to-stop-working

器件型号:MSP430F168
主题中讨论的其他器件: TMP100PCF8574DAC8571

尊敬的先生:

在 I2C 中、我们猜测存在一些问题(仅限100KHz)

IE。 1、一些 PCB 正常工作、一些 PCB 不工作、如果我们连接 CRO、则在不工作的 PCB 中正常工作、在工作的 PCB CRO 连接时间内发生故障、CLK 变为低电平

2.在某些 PCB 中不起作用、并且放置 CRO 也起作用。

在 SDA 引脚中将100nF 接地、那么它正在工作。

在 PCB 轨道中、贷款匹配是可以的、我们尝试在外部进行相位调整、但电线也无法正常工作。

我们可以在以前的软件方面尝试吗?

 我的邮件 ID:nsprateep@sirveen.com

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

    您好!

    "CRO"是什么意思?

    SDA 和 SCL 这两条通信线路都需要1k-10kOhm (通常为4.7kOhm)范围内的外部上拉电阻器。 不建议向任一条线路添加电容、因为该电容会对时钟和数据信号产生负面影响。 "正方形"将变成圆形、通信速度需要降低。

    另请参阅本应用手册的第5章: MSP430TmMCU 上常见 eUSCI 和 USCI 串行通信问题的解决方案

    此致、

    Andre

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

    尊敬的先生:

    感谢你答复我。

    CRO 是一种示波器、通过这种方式、我们将检查波形。

    我尝试了1K 上拉电阻和4.7K 上拉电阻、但行为相同。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您是否阅读了我在上一个主题中提出的文档? 它涵盖了通信无法正常工作的许多常见问题。

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

    您对此主题还有其他疑问吗? 如果不是、请为解决您的问题的帖子选择"已解决"、以便关闭此主题。 如果您有其他问题、请选择"提出相关问题"或"提出新问题"。
    非常感谢!

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

    void i2c_start()

    DATA_LOW;
    延迟(60);
    CLK_LOW;

    void i2c_stop ()

    CLK_HIGH;
    延迟(60);
    DATA_HIGH;

    int eepwrite_byte (int data)

    字符 ii;
    int tmout=19800*10;//5mspp


    printf ("0x%x "、data);
    DATA_PIN_OUTPUT;
    for (ii = 0;ii < 8;ii +)

    CLK_LOW;
    if (data & 0x80)
    DATA_HIGH;
    其他
    DATA_LOW;
    数据<<= 1;
    延迟(15);//延迟 TDC = 200ns
    CLK_HIGH;
    延迟(15);//延迟 Tcdh = 280ns

    延迟(15);
    CLK_LOW;
    延迟(15);//Tcwh = 4us
    CLK_HIGH;

    DATA_PIN_INPUT;


    while (tmout--)//为确认而 wating

    if (!(GPIOPINRD & DATA_PIN))

    DATA_PIN_OUTPUT;

    printf ("i2c_ACK 成功\r\n");
    返回1;


    printf ("i2c_tmout 发生\r\n);

    DATA_PIN_OUTPUT;


    静态 int32_t pageWrite (uint16_t addr、uint8_t *数据、int32_t numbytes)

    uint32_t tmout;
    volatile uint32_t dummy;
    uint8_t MSB;


    I2C_start();

    eepwrite_byte (0xa0);//写入地址,从器件选择
    MSB=(addr & 0xFF00)>>8;
    printf ("MSB=%x "、MSB);
    eepwrite_byte (MSB);// MSB 地址
    MSB=(addr & 0x00ff);
    printf ("lsb=%x "、msb);
    eepwrite_byte (MSB);

    //i2c_start();
    while (numbytes)

    eepwrite_byte (*数据++);
    数字字节--;

    I2C_STOP();
    返回0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的先生、请告诉我、我们正在尝试使用此代码。现在我们能够在示波器中看到波形、但读写函数不会出现性别问题。 上述代码中是否有任何更正?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    查看您的代码、很难判断出发生了什么错误。  您的正在进行位拆裂以进行 I2C 通信。 虽然这是一种实现方法、但我建议使用相应的外设。 USART 模块有一个集成 I2C 接口来帮助通信。 请查看我们提供的代码示例、了解我们如何进行通信。 您可以在产品文件夹 MSP430F168的" 工具与软件"选项 卡下找到它们。

    这些是我们为 I2C 通信提供的示例。

     fet140_i2c_01.c I2C、主接口 对于 TMP100、如果温度> 28C、则设置 P1.0

     fet140_i2c_02.c I2C、PCF8574主接口、读取/写入

     fet140_i2c_03.c I2C、在重复模式下连接 DAC8571的主接口

     fet140_i2c_04.c I2C、主器件从 MSP430从器件读取

     fet140_i2c_05.c I2C、从器件发送到 MSP430主器件

     fet140_i2c_06.c I2C、主器件发送到 MSP430从器件 RX

     fet140_i2c_07.c I2C、从器件读取 MSP430主器件

     fet140_i2c_08.c I2C、主器件向 MSP430从器件写入多个字节

     fet140_i2c_09.c I2C、主器件在重复模式下从 MSP430从器件读取数据

     fet140_i2c_10.c I2C、从器件在重复模式下写入 MSP430主器件 RX

     fet140_i2c_12.c I2C、DAC8571的主接口、写入

     fet140_i2c_13.c I2C、DAC8571主接口、读取/写入

     在 UART0和主 I2C 发送器之间进行 fet140_i2c_14.c 切换

     fet140_i2c_15.c I2C、从器件 TMP100仿真 II

     fet140_i2c_16.c I2C、主器件通过从器件进行写入/读取、Rptd 启动

     fet140_i2c_17.c I2C、从器件通过主器件进行读取/写入、Rptd 启动

    此致、

    Andre

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

    您对此主题还有其他疑问吗? 如果不是、请为解决您的问题的帖子选择"已解决"、以便关闭此主题。 如果您有其他问题、请选择"提出相关问题"或"提出新问题"。
    非常感谢!

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

    谢谢主席先生,

    现在、我们仅继续使用极化方法。