大家好、
客户想知道我们是否可以使用任何支持 I2C 总线的 MCU 与该器件通信? 或者我们必须找到一个支持 PMBus 的 MCU?
我长时间使用 I2C、以前从未使用过 PMBus/SMBus、如果需要了解任何特殊情况、我不确定是否使用 I2C 总线读取/写入该特定器件?
谢谢!
Andrew
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.
大家好、
客户想知道我们是否可以使用任何支持 I2C 总线的 MCU 与该器件通信? 或者我们必须找到一个支持 PMBus 的 MCU?
我长时间使用 I2C、以前从未使用过 PMBus/SMBus、如果需要了解任何特殊情况、我不确定是否使用 I2C 总线读取/写入该特定器件?
谢谢!
Andrew
电源管理总线(PMBus)使用系统管理总线(SMBus)、该总线设计为与 I2C 总线和接口兼容、但您需要记住一些事项。
1) 1) PMBus 器件将按照规范声明通信故障、前提是它们在传输的第一部分中使用其地址后跟一个读取位进行寻址。
2) 2)大多数 PMBus 命令使用大于1字节的数据格式、因此您需要确保 MCI 的 I2C 端口可以支持读取和写入多个数据字节。 TPS546D24A 中使用的一些块命令多达15个数据字节(块大小加上14个数据字节)。 如果 I2C 端口将事务大小限制为小于15字节的读取数据、则可能存在一些无法使用的命令。
3) SMBus 命令使用来自 I2C 的重复起始读取事务类型、其中总线控制器发送目标器件地址和写入位以及命令代码(相当于 I2C 寄存器地址)、 然后发送一个重复起始位、后跟目标器件地址和一个读取位、之后目标器件用数据对总线控制器做出响应。 虽然绝大多数 I2C 外设都支持这一点、但值得仔细检查。
4) 4)一些 PMBus 命令、例如 SMBALERT_MASK 命令、使用更复杂的事务类型、称为块写入块读取过程调用、 这允许总线控制器在通过重复起始和目标器件地址改变传输方向之前发送超过1字节的数据。 如果 MCI 的 I2C 端口不能支持进程调用,则无法使用块写入块读取进程调用从命令中读取
与 I2C 不同、SMBus 具有强制超时要求。 如果 CLK 保持低电平的时间超过25ms、则总线上的任何器件都可以终止当前事务、 而在35mS 的 CLK 低电平下、每个器件都必须终止当前事务、因此 I2C 器件在事务期间不应产生超过25ms 的 CLK 低电平时间(这通常不是问题)