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.

使用MSP430 Launchpad进行I2C通信的问题

Other Parts Discussed in Thread: BQ76920, MSP430G2553

Launchpad上的芯片用的是MSP430G2553,开发环境用的是CCS6.1.0,程序用的是TI的官方例程sluc583.zip,为了实现MSP430和电池采样芯片BQ76920的通信,将BQ76920的SCL和SDA分别接MSP430G2553的SCL和SDA,采用跳线接在Launchpad上的方式,发现不能正常工作。

接着我单独测试Launchpad的通信,用示波器观察SCL引脚,发现程序下载进去之后,示波器没有输出,将SCL上拉到Vcc,依然没有输出。在此我产生疑问,如果芯片的I2C通信正常的话,示波器观察SCL引脚,应该能看到脉冲时序啊。不知道是程序有问题,还是我哪地方没弄清楚。

附件里有TI的例程sluc583.zip。

sluc583.zip
  • 测试I2C通信时,SCL和SDA两个管脚要通过10K的电阻上拉。建议现在硬件上面加上拉电阻,然后在用例程跑一下。

    谢谢

  • Hi, Ken.

    下图是我测试bq76920的原理图,我只是想用bq76920采集5节电池的电压,引脚SDA和SCL我通过10K电阻上拉到Launchpad的Vcc上,然后分别和Launchpad MSP430G2553的SDA和SCL连接。程序用的是管网下的sluc583.zip里的,我在发帖时附上了。

    上电后,我先闭合开关S1。接着运行CCS 6.1.0里的程序,进行调试的时候,发现运行

    WriteStatus = I2CSendBytes(I2CSlaveAddress, &TargetRegister, 1, &SentByte);

    ReadStatus = I2CReadBytes(I2CSlaveAddress, ReadData, 2, &ReadDataCount);

    得到的WriteStatus和ReadStatus都是0,应该是说明单片机发送指令给bq76920没有问题,但是单片机的接收寄存器UCB0RXBUF一直接收不到数据,CCS里提示Error: cannot load from non-primitive location。所以单片机一直接收不到数据,导致通信失败。

    这个问题一直困扰我很久了,不知道是哪个地方出了问题。

    谢谢!

    Kevin

  • 你好!

    刚好G2553与BQ76920的通讯有一个TI工程师写的应用笔记,请参考附件。

    希望能够帮到你!

    代码我贴在下一个回复里面。

    slva626b.pdf
  • 附件是参考代码,请参考。

    bqMaximo_Ctrl_G2553_004.zip
  • Hi, Hardy

    你给我发的那篇应用笔记,我还是有些疑问,请问你能不能告诉我那篇笔记的作者StevenYao的邮箱啊,我想直接发邮件问问他。

    谢谢!

    Kevin