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.

[参考译文] AM5716:I2C主控制器不能使总线繁忙以进行传输并在ack bit定时发送数据

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1074663/am5716-i2c-master-couldn-t-get-bus-busy-for-transfer-and-send-data-at-ack-bit-timing

部件号:AM5716

大家好,

客户在AM5716 IC2主地址发送从属地址期间观察到奇怪的行为。  I2C5主控制器无法 使总线繁忙以进行传输,并按如下所示的ACK位定时发送数据。 发生了1次/ 2到3小时。

I2C5与外部RTC通信。  I2C5模块停留在Line15,该总线正忙于 连接的代码。

您对此问题有什么想法吗?  

/* Set i2c slave address */
I2CMasterSlaveAddrSet( baseAddress, slaveAddress );
I2CFIFOClear(baseAddress, I2C_TX_MODE);
I2CFIFOClear(baseAddress, I2C_RX_MODE);
/*Clear all interrupt status*/
I2CMasterIntClearEx(baseAddress, I2C_INT_ALL);
/* Set data count */
I2CSetDataCount( baseAddress, size+1 );
/*  Configure i2c as master-transmitter and to generate stop condition */
I2CMasterControl(baseAddress, I2C_CFG_MST_TX);
/* generate start */
I2CMasterStart(baseAddress);
/* wait for bus busy */
while(I2CMasterBusBusy(hwAttrs->baseAddr)==0)
{
}
// data TX
for (i = 0; i < (size+1); i++){
    /*Wait for transmit interrupt to occur*/
    while (I2CMasterIntRawStatusEx(baseAddress,
               I2C_INT_TRANSMIT_READY) != I2C_INT_TRANSMIT_READY) {
     }
    /* Send the data */
    I2CMasterDataPut(baseAddress, txBuf[i] );

    /*Disable transmit ready and stop condition interrupt*/
    I2CMasterIntClearEx(baseAddress, I2C_INT_TRANSMIT_READY);
}
/* generate stop when requested */
I2CMasterStop(baseAddress);

/*Clear data buffer length*/
I2CSetDataCount(baseAddress, 0);

谢谢,此致,

 Kuerbis

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

      Kuerbis,您好!

    一些问题:

    1)您能否分享您用于I2C的时钟频率?
    2)您能否解释一下您的应用程序在做什么?
    3)您是否使用i2c驱动程序进行交易?

    此致,

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

    我是提问者的一员。

    回答问题1)至3)。


    1)您能否分享您用于I2C的时钟频率?
    答案:100k Hz

    2) AGV应用程序调用API以发送到外部IC。
    答案:AGV应用程序调用API以发送到外部IC。
          在20毫秒周期内发送
          高优先级BIOS任务正在运行,不执行I2C访问

    3)您正在使用TI提供的驱动程序I2C_v1.c。
    答案:您正在使用TI提供的驱动程序I2C_v1.c。

    陷入困境。
    请回答。

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

    您好,

    您能否尝试在每次I2C访问外部IC之间引入一些延迟,看看行为是否有任何变化?

    此致,

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

    您好,Parth:

    您的意思是在每次I2C访问之间引入一些延迟?

    您是否要求增加间隔?   周期超过20毫秒?

    谢谢,此致,

     Kuerbis

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

    嘿,

    对不起,我没有注意到延迟,20毫秒应该足够好。
    您是否可以尝试将时钟频率降低到10kHz并查看行为是否发生变化?

    此致,

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

    您好,Parth:

    我想请你告诉我 ,调查10kHz的建议是什么。

    您能告诉我您关心什么以及您想在10kHz时看到什么吗?

    谢谢,此致,

     Kuerbis

     

     

     

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

    Kuerbis,您好!

    某些i2c器件在较高频率下无法稳定工作。 只是想排除这不是问题。

    此致,

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

    您好,Parth:

    24小时内10kHz不是问题。

    但客户在50kHz时发现了一个问题。

    下一步是什么?

    谢谢,此致,

     Kuerbis

     

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

    您好,

    10kHz在5716在24400.1606万24小时400.1606万小时内不会有问题[报价]。

    这意味着i2c从机在较低时钟频率下工作正常。

    您能否提供有关您正在使用的i2c设备的一些详细信息:  
    1)您使用的是什么设备?
    2)设备支持的最大频率是多少?
    3)与设备通信是否需要任何特定的I2C序列?

    此致,

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

    我是提问者的一员。

    回答有关我们正在使用的设备的问题。

    您能否提供有关您正在使用的i2c设备的一些详细信息:
    1)您使用的是什么设备?
    答案:
    型号:RX8130CE
    制造商:Epson
    日语链接: support.epson.biz/.../doc_check.php
    英文链接: support.epson.biz/.../doc_check.php


    2)设备支持的最大频率是多少?
    答案:
    在标准模式下,它支持高达100kHz的频率。
    在快速模式下,它支持高达400kHz的频率。
    我们正在使用100kHz频率。

    3)与设备通信是否需要任何特定的I2C序列?
    答案:
    我不认为这是一个特殊的I2C序列。
    详细的电报顺序如下所示。

    日语链接:tTP://support.epson.biz/td/api/doc_check.php? dl = APP_RX8130CE & lang = ja
    英文链接: support.epson.biz/.../doc_check.php

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

    我们将需要有关系统的更多详细信息

    1)您正在运行的应用程序,它是独立的应用程序吗? 如果没有,我们是否有办法在独立环境中测试应用程序? 这将帮助我们隔离是否有其他任何干扰?

    2)是否有任何其它设备连接到同一i2c总线上? 如果是,请提供这些方面的详细资料。

    3)此外,请提供整个系统的详细信息。 有关可能影响此应用程序的任何其他应用程序的任何详细信息都将很有帮助。

    此致,

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

    您好,Parth:

    以下是您问题的答案。

    a1)这是 一个独立的应用程序。   串行电缆仅作为调试端口连接。   任务正在运行的任务多于遇到此问题的任务,但不能进行外部连接。 只有一个任务使用I2C。

    a2)除调试电缆外,未连接任何其它电缆。

    a3)由于没有外部连接,因此不会干扰其它应用程序。

    谢谢,此致,

     Kuerbis

     

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

    您好,Parth:

    以下是其他信息。

    客户必须 手动重置主中继器。

    当问题发生时,通过手动重置I2C添加恢复过程。 (当I2C始终处于繁忙状态时)。

     

    谢谢,此致,

     Kuerbis  

     

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

    您好,

    这5716这是404.8281万是 一404.8281万一个独立的应用程序。   串行电缆仅作为调试端口连接。   任务正在运行的任务多于遇到此问题的任务,但不能进行外部连接。 只有一个任务使用I2C。[/QUOT]

    您能否提供正在运行的其他任务的详细信息? 这些任务正在访问哪些接口? 以及系统中配置的中断。  

    此外,我还看到该设备在快速模式下支持高达400kHz的频率。 您能否以最大频率尝试应用程序并查看问题的行为?

    此致,