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.

[参考译文] TMS320F28388D:IIC 起始位和器件地址发送问题

Guru**** 2537850 points
Other Parts Discussed in Thread: MCT8316A

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1108961/tms320f28388d-iic-start-bit-and-device-address-transmit-issue

器件型号:TMS320F28388D
主题中讨论的其他器件:MCT8316A

大家好、

以下是客户提出的问题、可能需要您的帮助:

1) 1) C2000系列控制器的 IIC 外设何时在总线上生成起始位? 当 I2caRegs.I2CMDR.bit.STT = 1时、起始位是否立即生成;?

2) 2) IIC 外设本身是否实现了器件地址的传输? 当起始位生成时、器件地址是否自动发送?

3) 3)是否有任何方法来控制器件地址和随后的第一个字节之间的时间间隔?

应用问题:

目前使用28388D 的 IIC 来控制 MCT8316A、MCT8316A 的 IIC 通信具有以下特殊要求:

当 IIC 正在通信时、该器件在数据之间需要100us 的延迟。 在数据传输的情况下应该是可能的;但是、如果从器件接收到多个字节的数据、那么 IIC 应该根据 CNT 中的值自动生成所需的 SCL、而从器件将数据基于 SCL 发送到主器件。 对吧? 因此、应该无法更改 SCL 的发送方式?

C2000系列手册中未详细介绍器件地址的发送机制。 如果 IIC 外设自动控制发送设备地址、是否无法在设备地址和随后的第一个字节之间添加100us 延迟?

C2000的 IIC 如何在传输字节之间实现100us 的延迟?

您可以帮助检查此案例吗? 谢谢。

此致、

樱桃

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

    樱桃

    1) 1)如果 I2C 总线 空闲、设置 STT 位确实会立即生成启动条件

    2)是、当产生起始条件时、I2CSAR 中存储的从器件地址将自动发送。

    3) 3)从 I2C 硬件的角度来看、无法在每次传输之间产生延迟。 但是、您可以使用软件引入100us 延迟。

    如果使用非重复模式、I2C 在 I2CCNT 事务数完成之前不会生成停止条件。

    在重复模式下、不使用2CCNT 寄存器、I2C 字节事务的数量可通过软件配置。 在这两种模式中、如果不使用 FIFO、则可以引入软件延迟。 如果 FIFO 内容被预填充、那么 FIFO 中的所有内容将被传送、并且你不能使用软件来引入字节传输之间的延迟。

    此致、

    曼诺伊

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

    您好、Manoj、

    感谢你的帮助。

    当主机发送时、CNT 设置为0、不使用 FIFO、也不使用 RM 模式。 当 STT 置位时、在 while 中检测到 NACK 位、如果没有从从器件接收到响应、NACK 位始终设置为高电平并等待。 NACK 为0表示从器件接收到 ACK、退出 while。 然后延迟为100us、此时发送器件地址、等待时间为100us。 接下来、数据被发送、数据被写入 DXR 寄存器、然后 NACK 位被用来确定传输是否完成、在传输完成后增加一个100us 的延迟。 (发送多个数据的过程是相同的)

    在主机发送时、CNT 设置为0、而不使用 RM 模式。 对吗? 如果不是、那么正确的做法应该是 RM 模式、而不是设置 CNT 的值?

    谢谢、此致、

    樱桃

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

    樱桃

    这是重复的线程吗? 我似乎很想问同样的问题。

    您是否都支持相同的客户问题?

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110088/tms320f28388d-how-to-add-100us-delay-between-bytes-when-reading-slave-device-data

    当重复模式被使能时、I2CCNT 寄存器的值将变得无关、并允许软件完全控制 I2C 事务的数量。 设置 I2CCNT = 0不会禁用 FIFO。 我们在 FIFO 中有特定的禁用位。

    此致、

    曼诺伊

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

    您好 、Manoj、

    谢谢、我已经与同事确认、我们正在为同一位客户提供支持。 由于此主题 更详细、因此我们可以在此处关闭此主题、并继续在另一个主题上讨论该问题。 再次感谢您的支持。

    此致、

    樱桃