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起始位和设备地址发送的疑问

Part Number: TMS320F28388D
Other Parts Discussed in Thread: MCT8316A

问题1. 请问C2000系列控制器的IIC外设,什么时候在总线产生起始位呢,是当执行I2caRegs.I2CMDR.bit.STT = 1;后,就会立即产生起始位吗?

问题2. 设备地址的发送,是IIC外设自己实现的吗?是当产生起始位后,就会自动发送设备地址吗?

问题3. 有办法控制设备地址和随后的第一个字节之间的时间间隔吗?

应用问题:

目前在用28388D的IIC控制MCT8316A,MCT8316A的IIC通讯有如下特殊要求:

该器件要求IIC通讯时,数据间需要100uS延时。

如果是数据发送的话,我觉得应该可以实现;

但是如果是接收多字节的从设备数据,我没有想出怎么实现数据间100uS延时。接收从设备数据的时候,我理解IIC应该是根据CNT里的数值自动产生需要的SCL吧,从设备根据SCL向主设备发送数据,所以应该没有办法改变SCL发送方式吧。

再有就是C2000系列各手册中,似乎没有描述设备地址的发送机理,如果是IIC外设自动控制发送设备地址,那么设备地址和随后的第一个字节之间加入100uS延时是否无法实现

请大家帮忙想想看,C2000的IIC如何实现传输字节间100uS延时呢

  • 您好我们已收到您的问题并升级到英文论坛寻求帮助,链接给您po到下面,您可以关注下:

    e2e.ti.com/.../tms320f28388d-iic-start-bit-and-device-address-transmit-issue

  • 您好,

    问题1. 请问C2000系列控制器的IIC外设,什么时候在总线产生起始位呢,是当执行I2caRegs.I2CMDR.bit.STT = 1;后,就会立即产生起始位吗?

    如果 I2C 总线IDLE,设置 STT 位确实会立即生成启动条件。

    问题2. 设备地址的发送,是IIC外设自己实现的吗?是当产生起始位后,就会自动发送设备地址吗?

    是的,当生成启动条件时,存储在 I2CSAR 中的从机地址会自动传输。

    问题3. 有办法控制设备地址和随后的第一个字节之间的时间间隔吗?

    从 I2C 硬件来说,无法通过传输在每个器件之间产生延迟。 但您可以使用软件引入 100us 延迟。

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

    在重复模式下,不使用 2CCNT 寄存器,并且 I2C 字节事务数可由软件配置。

    在这两种模式中,如果您不使用 FIFO,则可以引入软件延迟。 如果预先填充 FIFO 内容,FIFO 中的所有内容将被传输,并且不能使用软件在字节事务之间引入延迟。

  • 您好 感谢帮助 

    我目前是这样做的

    Master Send的时候,CNT设置为0,没有使用FIFO

    也没有使用RM模式

    设置STT后,在while中检测NACK位,如果没有收到从设备的响应,NACK位会一直置高,就一直等待

    NACK为0,表示收到从设备ACK,退出while

    随后延时100uS

    此时完成了设备地址发送并等待了100uS

    接下来发送数据,向DXR寄存器写入数据,随后也是用NACK位判断是否发送完成,发送完成后加入100uS延时,

    发送多个数据的处理是一样的

    请问大家,我在Master Send的时候,CNT设置为0并且没有使用RM模式是不是有问题。正确的做法是不是应该是RM模式,不用设置CNT的数值

  • 已跟进给工程师哈。

  • 您好,我们目前会在另一个您发布的帖子中跟进该问题,您可以持续关注下:

    e2echina.ti.com/.../tms320f28388d-iic-100us