TI论坛
直播中

李秀珍

8年用户 1061经验值
私信 关注
[问答]

使用TMS570LS3137和TMP112进行开发,TMP112没有应答信号ACK是怎么回事?


  • 我在使用TMS570LS3137和TMP112进行开发,遇到一些问题。TMS570LS3137的I2C总线上外挂了一片F24V02和一片TMP112,SDA和SCL信号使用10K的电阻上啦,TMP112的V+管脚上使用4.85K电阻和0.1uF电容组成低通滤波器。TMP112的A0脚连接到地了,这样TMP112的地址为0x48。Alert管教空置,未使用。
    现在F24V02调试通过了,读写都没有问题。
    TMP112无论读写都没有反应,感觉TMS570LS3137没有收到TMP112发出的ACK应答信号。
    如图:

    代码如下:
    i2cSetSlaveAdd(i2cREG1, 0x48);
    while((i2cREG1->STR & I2C_BUSBUSY) != 0 );
    i2cSetCount(i2cREG1, 1);
    i2cREG1->MDR = i2cREG1->MDR | I2C_FREE_RUN | I2C_MASTER | I2C_TRANSMITTER;
    i2cSetStart(i2cREG1);
    i2cSendByte(i2cREG1, 0x00); // Read address
    i2cSetCount(i2cREG1, 2);
    i2cREG1->MDR = I2C_FREE_RUN | I2C_START_COND | I2C_STOP_COND |I2C_MASTER | I2C_RECEIVER | I2C_RESET_OUT | I2C_8_BIT;
    i2cReceive(i2cREG1,2,data_in);
    debug调试发现,代码回停止在i2cReceive函数中,
    停在:
    while ((i2c->STR & (uint32)I2C_RX_INT) == 0U)
    请问是什么原因呢?

回帖(2)

王焕树

2025-1-7 16:45:44
从你给的时序波形图看, 从机并没有给出 ACK 信号, 先检查一下从机有没有工作了, 包括上电和信号连接等问题
举报

杨军

2025-1-8 18:06:44
根据您提供的信息,您在使用TMS570LS3137和TMP112进行开发时遇到了一些问题。TMP112没有应答信号ACK,您已经调试通过了F24V02,但TMP112无论读写都没有反应。以下是一些建议和可能的原因:

1. 检查硬件连接:请确保TMP112的所有引脚都正确连接,包括电源、地、SDA、SCL和A0。确保没有短路或断路。

2. 检查I2C地址:您提到TMP112的A0脚连接到地,这样TMP112的地址为0x48。请确保这个地址没有被其他设备占用,并且与您的代码中的i2cSetSlaveAdd(i2cREG1, 0x48)一致。

3. 检查I2C总线:您提到SDA和SCL信号使用10K的电阻上啦。请检查这些电阻是否正确连接,以及是否与其他设备的I2C总线共享。如果共享,请确保没有冲突。

4. 检查低通滤波器:您提到TMP112的V+管脚上使用4.85K电阻和0.1uF电容组成低通滤波器。请检查这些元件的值是否正确,以及它们是否正确连接。

5. 检查代码:请检查您的代码是否正确设置了I2C寄存器和控制信号。您提供的代码片段不完整,但请确保您正确设置了I2C总线速度、地址和数据长度等参数。

6. 检查TMP112的Alert管脚:您提到Alert管脚空置,未使用。请确保这个管脚没有被意外连接到其他信号,或者是否需要将其连接到地以确保正常工作。

7. 检查电源:请确保TMP112的电源电压在规定的范围内(2.0V至3.6V),并且电源稳定。

如果以上建议都无法解决问题,您可以尝试以下步骤:

1. 使用示波器检查I2C总线上的信号,确保SDA和SCL信号在读写操作时有正确的波形。

2. 尝试使用其他I2C设备与TMS570LS3137进行通信,以排除TMS570LS3137的问题。

3. 检查TMP112的数据手册,了解其电气特性和时序要求,确保您的硬件和代码满足这些要求。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分