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.

[参考译文] AM3354:I2C_CNT 寄存器说明

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668374/am3354-description-of-i2c_cnt-register

器件型号:AM3354

您好!

我对 AM335x I2C 有疑问。

我的问题是有关写入的 I2C_CNT 寄存器的说明
AM335x 技术参考手册(spruh73p)第4629页"表21-25。 I2C_CNT 寄存器"。

它说:
(小部分
对 DCOUNT 执行读操作只会在启动前返回初始值
停止条件之后。
(小部分

这个"初始值"指向什么?
它是否复位默认值为0h?
还是 I2C 初始化时用户设置的值?
我们想知道读取 DCOUNT 时返回的值是多少
开始条件之前和停止条件之后。

此致、
G.F.

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

    您好、请参阅

    根据我的理解、"初始值"不是复位默认值0x0。 "初始值"是需要传输的总字节数。

    "写入会将 DCOUNT 初始化为保存的初始值。"

    [引用 user="g...">它是否重置默认值0h? [/报价]

    [引用 user="g...">还是 I2C 初始化时用户设置的值? [/报价]

    是的

    此致、
    帕维尔

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

    感谢你的答复。

    我很抱歉、但由于我需要回答我的客户、
    作为 AM335x I2C 规范、您能回答吗?

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

    [引述 user="g....">您能不能作为 AM335x I2C 规范给出答案?

    我无法理解您的最后一个问题。 您能否提供更多详细信息?您正在寻找哪种类型的 AM335x I2C 规范?

    关于 I2C_CNT[15:0] DCOUNT、我已经回答说"初始值"不是复位值0x0、"初始值"是在初始化 I2C 模块时应写入 DCOUNT 的值。

    下面是 AM335x I2C 一章的一些摘录:

    "写入会将 DCOUNT 初始化为保存的初始值。"

    "每次 DCOUNT 到达0并且 DCOUNT 重新加载到其初始值时、ARDY 标志都会置1。"

    "I2C_BUFSTAT[5:0] TXSTAT - TX 缓冲器状态。 该只读字段指示仍有多少数据字节需要写入 TX FIFO (等于 I2C_CNT.dCOUNT 的初始值减去已通过 OCP 接口写入 TX FIFO 的数据字节)。"

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很抱歉。
    在上一篇文章中、您说"根据我的理解"。
    但是、我想获得一个更可靠的答案来回答我的客户。

    我的客户正在 I2C 初始化时将值0xF 设置为 DCOUNT。
    当它们在停止条件后读取 DCOUNT 的值时、该值为零。
    从你的答案中、我知道它应该是0xF、但它不是。
    很抱歉、如果您不介意、请再次搜索"初始值"。

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

    G.F.

    [引用 user="g...">但我希望得到一个更可靠的答案来回答我的客户。

    [引用 user="g....">很抱歉、但如果您不介意、请再次搜索"初始值"。

    AM335x I2C TRM 可以清楚地看到、"初始值"是您写入的值(0xF)、而不是复位值(0x0)。 下面是另外一个摘录:

    每当 DCOUNT 到达0并且 DCOUNT 重新加载到其初始值时、ARDY 标志都会置1。 复位后的值为低电平(所有16位)。

    [引用 user="g....">我的客户在 I2C 初始化时将值0xF 设置为 DCOUNT。
    当他们在停止条件后读取 DCOUNT 的值时、该值为零。[/QUERT]

    这是不可预料的。 请确保您在以下时间后读取 DCOUNT:

    I2C_CON[0] STT = 0

    I2C_CON[1] STP = 1

    I2C_IRQSTATUS_RAW[2] ARDY = 1

     

    此致、
    帕维尔

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

    非常感谢您提供的详细信息。
    我明白了。
    感谢您的支持。

    此致、
    G.F.