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