使用PMBus总线监控电源管理芯片UCD90120

2019-07-14 00:42发布

 UCD90120是Ti出产的一款电源管理芯片,提供了12路电源的监控输出功能。UCD90120支持标准的PMBus总线命名,并支持Ti扩展的命令。 在Linux平台可以使用一系列基于SMBus的API函数来读写这些PMBus所定义的命令字典。
在读写之前需要先使用 I2C_SLAVE_FORCE来设置地址。然后就可以使用SM Level的API来读写命令(command)了。 int main(void)
{
 unsigned char ucd90120_id[34];
 unsigned char rdLen;
    int iic_fd;
 
 //open device
 iic_fd = open("/dev/i2c-8", O_RDWR);
 if (iic_fd < 0) {
  printf("ERROR: Unable to open /dev/i2c-8 for PMBus access: %d ", iic_fd);
  exit(1);
 }   //set device address
 if (ioctl(iic_fd, I2C_SLAVE_FORCE, 0x65) < 0) {
  printf("ERROR: Unable to set I2C slave address 0x%02X ", deviceAddress);
  exit(1);
 }
 //read UCD90120 ID strings,this command is 0xFD,refer to UCD90xxx Sequencer and System Health Controller PMBus Command Reference
 rdLen=i2c_smbus_read_block_data(iic_fd,0xFD,ucd90120_id);
 printf("rdLen=%d, UCD90120 ID string is:%s ");
} 参考: http://www.wiki.xilinx.com/Zynq-7000+AP+SoC+Low+Power+Techniques+part+4+-+Measuring+ZC702+Power+with+a+Linux+Application+Tech+Tip