Other Parts Discussed in Thread: DAC5571
器件型号: DAC5571
您好的团队、
该器件是否包括 I2C 的总线清除功能? 由于没有复位引脚、DAC5571 似乎没有总线清除功能。

此致、
山本俊介
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.
山本山
DAC5571 没有用于复位任何 I2C 通信的 RESET 引脚。 您从 3.1.16 总线清除中削波的这一部分来自 I2C 规范。 它描述了用于释放总线的时钟输出 9 个脉冲。 这是一种在时钟沿输出目标器件可能剩余的任何数据的机制、应适用于大多数器件、包括 DAC5571。 如 Erin 所述、该器件具有上电复位功能以复位器件、但需要断电以复位 I2C 总线。
如果 SCL 线路在事务过程中突然停止、您需要继续在时钟沿输出字节以释放总线。 如果 MCU 检测到总线处于保持状态(因为该器件未接收到整个传输)、MCU 会按照“总线清除“部分中所述在时钟沿输出 9 个脉冲以释放总线。
一些较新的器件具有 25ms - 35ms 的 I2C 时钟超时。 如果总线在这段时间内是静态的、则器件会释放 I2C 总线。 该超时来自类似的 PMBus/SMBus 规范、但并不是真正的 I2C 规范。
Joseph Wu
尊敬的 Erin-san, Joseph-san,
感谢您的答复。 我完全理解。
如果 SCL 线路在事务过程中突然停止、您需要继续在时钟沿输出字节以释放总线。 如果 MCU 检测到总线处于保持状态(因为该器件未接收到整个传输)、MCU 会按照“总线清除“部分所述在时钟沿输出 9 个脉冲以释放总线。
关于上面的注释、是否可以输入包含开始和停止条件的一个事务、而不是在 CLK 线上输入时钟?
此致、
山本俊介
山本山
控制器 可以尝试在 9 个时钟周期的开始和结束时执行启动和停止条件。 但是、控制器无法控制总线。 由于目标器件在控制总线、因此总线一直处于低电平。
您可以在 I2C 基本指南 (https://www.ti.com/lit/pdf/sbaa565):) 中找到此图

当总线连接时、SDA 已经为低电平。 启动条件从 SDA 变为低电平开始、随后 SCL 从高电平开始、然后变为低电平。 由于总线已连接、因此不能发生启动、因为 SDA 无法转换为低电平。 发送 9 个时钟周期后、目标器件应释放总线。 此时、应可以出现停止条件。
Joseph Wu