1.特性
SMBus是 System Management Bus 的缩写,译为系统管理总线,SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总 线规范。和 I2C一样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能特性,但只工作在100kHz且专门面向智能电池管理应用。它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始位,在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。
2. 位传输
SMBus通信协议使用0.8V和2.1V的固定电压电平来定义逻辑电平0和逻辑电平1.
2.1数据有效性
SDA上的数据必须在SCL信号为高电平时保持稳定,这样SDA上的数据才能认为是有效传输数据。只有当SCL为低电平时,SDA上的数据才能进行转变。
2.2 Start和Stop条件
与I2C通信协议一样,SMBus总线情况定义了消息START和STOP条件。当SCL为“高”时,SDA线的高到低转换表示消息“start”条件,当SCL为高时,SDA线的低到高转换定义了消息STOP条件。
3.SMbus数据传输
3.1字节形式
每个字节包含8位。每个字节在SMbus总线上传输时必须要跟一个应答位,字节首先使用最高有效位(MSB)进行传输。
3.2应答和非应答
应答信号的时钟信号是由主机提供的,在应答时间周期内,主机方需保持数据传输线为高电位,接收机必须将SDA电平拉低才表示应答成功。
4. 数据传输格式
SMbus数据传输遵循以下格式:
在START条件(S)之后,主设备将其要寻址的从设备的7位地址放在该地址上。地址长度为7位,后跟指示数据传输方向的第八位。R/W);0表示传输(写入),而1表示数据请求(读取)。一个数据传输始终由主服务器生成的STOP(P)条件终止,Smbus实现的这几种通信格式是由IIC通信拓展而来的。特定的SMBus协议要求主站生成重复的START条件,然后生成从机设备地址,而不首先生成STOP条件。
SMBus实现的数据格式包括:
主服务器在第一个字节之后立即读取从站。
(2)在第一次确认的那一刻,传输方向发生改变。
(3)组合格式。在传输中改变方向期间,主站重复两个START条件和从地址,但R/W位反转。在这种情况下,主接收机通过在传输的最后一个字节上生成NACK和STOP条件来终止传输。
首先需要安装KingsiVIS软件,安装好相应软件之后,在软件安装、设备连接完成后,就可以进行信号的采集和分析了。
采样深度:即对被测信号一次采集的样点总数。它直接决定了一次采样所能采集到的数据量的多少,显然深度越大,一次采集的数据量越大。
采样率:也称采样速率,即对被测信号进行采样的频率,也就是每秒所采集的样点数。 它直接决定了一次采样结果的时间精度,采样率越高,时间精度越高。一次采样结果的时间 精度就等于“1/。采样率”,即一个采样周期。
一次采样过程所持续的时间等于“采样深度÷采样率”,那么在进行采样之前,首先要 对被测信号有一个大概的评估——最高频率是多少、需要采集多长时间的数据等,然后由被 测信号最高频率来选择采样率,原则是“采样率必须达到被测信号最高频率的 5 倍以上,推荐10倍以上”,倍数越高采样的时间精度就越高。但采样率也不是越高越好,因为在同样 采样深度下,采样率越高一次采样所能采集的时间就越短,所以还要综合考虑所需要的采样 时间,在同时满足二者最低需要的情况下留有适当的裕量即可。下图为采样深度和采样率状态栏:
2.触发条件设置
触发就是设置一定的条件,当被测信号满足该条件时,才开始采集数据, 而该设定条件就叫做触发条件。触发条件包括信号的跳变沿、高低电平或二者的组合等。触 发条件要根据被测信号的特点来设置。由于本实验需要测的是SMbus通信过程,Start条件是SCL为高电平时,SDA电平由高往低跳变。所以设置触发条件如下所示。
点击开始按钮,当检测到波形满足触发条件时,软件就开始收集和采样数据。
三、Smbus波形采集与分析
将电脑与BQ4050连接,并用逻辑分析仪连接好相应的信号线,命令通信
使用Smbus协议。TargetAddress填写电量计的SMBUS设备地址,SMBUS电量计的7位地址是0x0B,对应8位地址是0x16表示写,0x17表示读。这里填写0x16或17皆可。
(1)Read Word操作
下面使用0x09命令实现电池电压数值读取,使用逻辑分析抓取波形,bqstudio显示界面如下:
逻辑分析仪采集到的波形如下:
通过查阅相关数据手册,有关使用命令进行word读取介绍:读取数据比写入数据稍微复杂一些。 首先,主机必须将命令写入从设备。 然后,它必须遵循该命令,并带有重复的启动条件,以表示从该命令读取设备的地址。 然后,从站返回 1 或 2 字节的数据。同时注意,在重复启动条件之前没有停止条件,并且“NACK”表示读取传输结束。相关读取过程如下所示:
通过比对,发现过程基本一致。
通过0x01指令为电池组设置低容量报警阈值。bqStudio提示写入成功操作。
逻辑分析仪抓取到的波形如下:
其中Byte0x04和Byte0x37是要写入的数据,每个数据字节后面接一个应答信号。其中0xF6表示PEC校验字节。相关写入操作流程如下图所示:
在此示例中,主设备发送从设备地址,后跟写入位。从机确认,主服务器提供命令代码。从机再次对主机应答,发送数据字节或字(低字节优先)。 从机接收数据后发送应答信号。发送数据成功后,再发送一个字节PEC校验并应答。
(3)Read Block操作
通过块读取指令0x20读取电池包制造商名称,bqstudio提示读取成功窗口如下:
逻辑分析仪抓取到的波形如下
其中0X0B表示地址,0x20表示命令,0x03表示读取块内存字节长度,0x4B,0X41,0x42都表示数据字节。相关流程如下所示:
块读取操作开始后,主机先发送从机地址和写方向,从机应答,然后发送命令代码,从机应答,然后重复发送start信号,从机地址和读方向,之后从机发送块字节大小,最多不能超过20个字节,也不能等于0,后面跟块字节数据,最后跟一个非传输数据字节和非应答信号。
使用块写入命令0x70操作修改制造商信息,bqstudio提示写入窗口如下:
逻辑分析仪抓取到波形如下:
0x0B表示地址,0x70表示命令,0x03表示块写入字节数,0xA3,0x61,0x62表示写入的数据字节,0xF0表示PEC校验字节。
相关流程如下所示:
写入块操作由起始信号开始,主机发送从机地址和写方向,从机应答,发送命令,从机应答,然后是写入字节个数,最多不能超过20个字节,也不能等于0,再接着的是要写入的数据,主机全部写入数据后,在发送一个字节PEC校验。