通常有IO和MMIO两种方式访问SMBUS,但两种方式除了base address不同,访问方法相似。
IO方式简化流程:
1. 找出smbus base address(记为smbase)
2. smbase + 04h处填入 SPD设备地址+1 (例如, A2h+1=A3h)
3. smbase + 03h处填入 目标数据在SPD内的偏移地址
4. smbase + 02h处填入 48h ( 意思为指示smbus以byte为单位读取目标数据)
5. 到这一步,就可以从smbase + 05h处读出目标byte数据
PS:上面步骤均省略查看smbus忙状态,即smbase + 01h bit 0是否为1,为1即表示smbus还在忙,
不方便接受填值。