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/MSP430F249:I2C SCL/SDA 时序问题

Guru**** 2538950 points
Other Parts Discussed in Thread: MSP430F249

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/880819/ccs-msp430f249-i2c-scl-sda-timing-problem

器件型号:MSP430F249
主题中讨论的其他器件: MSP430WARE

工具/软件:Code Composer Studio

你好

我通过 I2C 与 MSP430F249和 PCT2075 (温度传感器)连接。

我发现了一个由 I2C 通信产生的 SCL 和 SDA 脉冲问题。

SDA 脉冲似乎被延迟。  

实际上、我与另一家公司的 MCU 进行了很好的连接。

它可能会像下面的图片那样生成脉冲。  

从机地址为0x90 (1001000)。  

如何解决此问题?  如何 对齐脉冲?

我使用了 MSP430ware 中的代码(msp430x24x_uscib0_i2c_04.c)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我编写了如下代码 
    //main.c
    int main (void) { GRACE 初始化(); //激活 Grace 生成的配置 while (1) { while (UCB0CTL1 & UCTXSTP); //确保停止条件已发送 UCB0CTL1 |= UCTXSTT; // I2C 启动条件 while (UCB0CTL1 & UCTXSTT); //起始条件是否已发送? UCB0CTL1 |= UCTXSTP; // I2C 停止条件 __bis_SR_register (CPUOFF + GIE); //输入带中断的 LPM0 } //>>>>> 在此处填写用户代码<<< }

    #pragma vector=USCIAB0TX_VECTOR
    __INTERRUPT void USCI0TX_ISR_Hook (void)
    {
    /*用户代码开始(部分:USCI0TX_ISR_Hook)*/
    RXData = UCB0RXBUF; //获取 RX 数据
    _BIC_SR_REGISTER_ON_EXIT (CPUOFF); //退出 LPM0
    /*用户代码结束(部分:USCI0TX_ISR_Hook)*/
    }
    

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

    您好!

    我不明白你的观点。  

    SDA 脉冲延迟是什么意思?

    此外、您还会显示一张问题图片。 您是说该部件错误吗?

    伊斯天

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

    没错。 当我将从地址编码为0x91或0x90时、它是对的吗?

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

    严格地说、从地址(假设 A0-A2=GND)为0x48 (0b01001000)、这就是应该存储在 I2CSA 寄存器中的地址。 您在哪里设置此代码?

    奇怪的是、地址0x24似乎正常工作、尽管我在 PCT2075数据表表表5中看不到该选项。

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

    您使用7位地址模式、实际上您希望使用10位地址模式。 请仔细检查您的代码。

    伊斯天

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

    我使用了7位地址模式。 因为该传感器使用7位地址模式。

    因此、我使用从地址作为0x91进行读取。

    我不知道为什么脉冲会像这样显示。

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

    我使用 Grace 设置从地址并进行检查。 0x91 (145)

    对吗? 我不知道为什么脉冲会如此显示

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

    您好!

    如果您想使用7位地址模式。

    0x90 = 0b1001 0000

    您可以看到、您无法将0x90保存到7位地址中。 从第二张图片中可以看到、您的地址应为0x48 (0b01001000)

    伊斯天