在嵌入式控制器EC中,SMBus的起到的作用有两个,第一个是通过SMBus读取智能电池中的相关信息,第二个则是通过SMBus总线读取CPU、GPU或者主板上其他位置的温度传感器的温度信息。本文先大体介绍一下SMBus总线在EC中的作用,后面还有文章再详细介绍上述两个功能,以及SMBus是如何将读取到的信息上报给操作系统或者BIOS的。
SMBus概述
EC中的SMBus是支持SMBus2.0,SMBus是系统管理总线,是一个双线(SMCLK/SMDAT)接口,通过它各种系统组件芯片可以相互通信,也可以与系统的其他部分通信。它基于I2C的工作原理。
上图是SMBuse Device的通用电气图,和I2C一样,需要在两根总线上接上上拉电阻,保证在总线空闲时总线总保持高电平。本文不赘述I2C协议总线的通信细节,如果有不了解的可以自行百度学习。本文只讲解EC代码中的各个有关SMBus读写的相关函数。
说明:上述的两个功能(读取电池信息和读取温度传感器信息)EC都是作为主设备,智能电池和温度传感器作为从设备的。