Can I communicate with a SMBus/PMBus device with I2C? I've been reading the specs and getting quite confused. It seems to me the only difference is the voltage levels and the need to have a restart condition. Am I correct or I'm missing something?
SMBUS is basically a superset of i2c. It has some extra features. If you don't need those extra features, then yes.
Some light reading on general differences:
Specifics on what the device does and how it works can be seen in the data sheet. It may not directly state what features are normal i2c commands, but as long as you understand how i2c works, you can tell them apart.
SMBus is a definite subset of the I2C standards.
For I2C specs (maintained by NXP) see this: http://cache.nxp.com/documents/user_manual/UM10204.pdf
The major differences for SMBus:
SMBus only uses 7 bit addressing (this is defined in concert with the ACPI spec) although SMBus does define an extra register for 10 bit address it is not currently used on any ACPI PC's I know of.
For ACPI (PC) usage SMBus use a minimum 10k bps and a maximum 100k bps data rate. There is a new standard (not yet ratified that increases the speed, but this is not yet introduced as part of ACPI). I2C specifies the bus clock to DC (stopped) and can run much faster, with the new standard up to 3.4 Mbps.
SMBus supports a low power bus pullup specification of 350 uA and a high power mode of 3 mA, I2C species a 4 mA bus pulldown current capability. This results in much shorter line length and power capability for SMBus.
SMBus slaves must implement an auto reset timeout of 35 mS. You don't find this on I2C chips so have to monitor timeouts in the whatever drives the master. This impacts clock extend times, since if the clock is held for more than 35 mS the SMBus will reset, whereas I2C can technically clock extend indefinitely (not a good thing of course).
To get better coverage of the differences read Appendix B in the SMBus spec and section 4 of the NXP U10204 spec.
You can mostly use I2C peripherals on an SMBus, but the reverse is not true. SMBus peripheral implementations may fail because of 'clock extend' problems (causing resets) or at low speeds < 10k bps.