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.

[参考译文] TMS320F28375D:I2CCNT 何时被写入内部数据计数器?

Guru**** 2441170 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/979016/tms320f28375d-when-does-i2ccnt-get-written-to-internal-data-counter

器件型号:TMS320F28375D

您好!

我观察到、当我:

-设置 I2CMDR = IRS | MST | TRX | STT

-设置 I2CCNT 2

-写入2个字节

-然后等待 ARDY 并将其清除

-然后将 I2CCNT 设置为 X,X>0

-为 TX 重新设置 I2CMDR,这次 STT=0 (因为我们已经发送了一个),但 SCD=1 (所以我在末尾得到了一个停止条件)

最后一步立即生成一个停止条件、这将提示内部数据计数器仍然为零。

我再玩一些、I2CCNT 似乎在生成起始条件时被写入内部数据计数器。 (这只是一个猜测、但可以随意确认或纠正我)

遗憾的是、START 条件会重置器件的总线周期、因此我无法真正使用重复 START 条件。

我在使其正常工作方面没有什么问题、我更想通过将地址阶段与代码中的数据阶段相分离来实现这一目标。

我的问题是:

是否有办法在不产生起始条件的情况下写入内部数据计数器?

如果答案是否定的、这是可以的

谢谢你

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

    您好、Jiri、

    由于天气情况、最能做出响应的人无法进行审核和发布。  请在星期四之前回复。  

    由此给您带来的不便、我们深表歉意。


    谢谢、
    Brett

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

    Jiri、

    [引述]

    -为 TX 重新设置 I2CMDR,这次 STT=0 (因为我们已经发送了一个),但 SCD=1 (所以我在末尾得到了一个停止条件)

    最后一步立即生成一个停止条件、这将提示内部数据计数器仍然为零。

    我再玩一些、I2CCNT 似乎在生成起始条件时被写入内部数据计数器。 (这只是一个猜测、但可以随意确认或纠正我)

    遗憾的是、START 条件会重置器件的总线周期、因此我无法真正使用重复 START 条件。

    [/报价]

    若要生成重复起始条件、不应在发送地址字节后生成停止条件。 您的猜测确实是正确的。 当您生成第二个起始条件时、它正在等待发送/接收 I2CCNT 字节数。

    以下是生成重复起始条件的过程:

    -确保 STP 位未设置。

    -设置 I2CMDR = IRS | MST | TRX | STT

    -设置 I2CCNT 2

    -写入2个字节

    -然后等待 ARDY 并将其清除

    -再次将 I2CCNT 位设置为发送/接收的字节数

    -通过设置 STT 位来产生重复起始条件

    -现在可以在 I2CMDR 中设置 STP 条件以生成停止条件

    此致、

    曼诺伊

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

    很抱歉我耽误了时间。 是的、这正是我所需要的。

    非常感谢 Manoj!