SMBUS通信波形分析

article/2025/9/14 20:30:18
  • SMbus通信协议

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实现的数据格式包括:

  1. 主发送器传输到从接收器。在这种情况下,传输方向不发生更改.

主服务器在第一个字节之后立即读取从站。

(2)在第一次确认的那一刻,传输方向发生改变。

(3)组合格式。在传输中改变方向期间,主站重复两个START条件和从地址,但R/W位反转。在这种情况下,主接收机通过在传输的最后一个字节上生成NACK和STOP条件来终止传输。

  • 逻辑分析仪的使用

首先需要安装KingsiVIS软件,安装好相应软件之后,在软件安装、设备连接完成后,就可以进行信号的采集和分析了。

  1. 采样深度与采样率设置

采样深度:即对被测信号一次采集的样点总数。它直接决定了一次采样所能采集到的数据量的多少,显然深度越大,一次采集的数据量越大。

采样率:也称采样速率,即对被测信号进行采样的频率,也就是每秒所采集的样点数。 它直接决定了一次采样结果的时间精度,采样率越高,时间精度越高。一次采样结果的时间 精度就等于“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”表示读取传输结束。相关读取过程如下所示:

通过比对,发现过程基本一致。

  1. Write Word操作

通过0x01指令为电池组设置低容量报警阈值。bqStudio提示写入成功操作。

逻辑分析仪抓取到的波形如下:

其中Byte0x04和Byte0x37是要写入的数据,每个数据字节后面接一个应答信号。其中0xF6表示PEC校验字节。相关写入操作流程如下图所示:

在此示例中,主设备发送从设备地址,后跟写入位。从机确认,主服务器提供命令代码。从机再次对主机应答,发送数据字节或字(低字节优先)。 从机接收数据后发送应答信号。发送数据成功后,再发送一个字节PEC校验并应答。

(3)Read Block操作

通过块读取指令0x20读取电池包制造商名称,bqstudio提示读取成功窗口如下:

逻辑分析仪抓取到的波形如下

其中0X0B表示地址,0x20表示命令,0x03表示读取块内存字节长度,0x4B,0X41,0x42都表示数据字节。相关流程如下所示:

块读取操作开始后,主机先发送从机地址和写方向,从机应答,然后发送命令代码,从机应答,然后重复发送start信号,从机地址和读方向,之后从机发送块字节大小,最多不能超过20个字节,也不能等于0,后面跟块字节数据,最后跟一个非传输数据字节和非应答信号。

  1. Write Block操作

使用块写入命令0x70操作修改制造商信息,bqstudio提示写入窗口如下:

逻辑分析仪抓取到波形如下:

0x0B表示地址,0x70表示命令,0x03表示块写入字节数,0xA3,0x61,0x62表示写入的数据字节,0xF0表示PEC校验字节。

相关流程如下所示:

写入块操作由起始信号开始,主机发送从机地址和写方向,从机应答,发送命令,从机应答,然后是写入字节个数,最多不能超过20个字节,也不能等于0,再接着的是要写入的数据,主机全部写入数据后,在发送一个字节PEC校验。


http://chatgpt.dhexx.cn/article/bGuG90NL.shtml

相关文章

DSP SMBus总线通信

参考文档:System Management Bus (SMBus) Specification Version 3.0.pdf 简介: SMBus(System Management Bus)于1995年被 Intel 提出,应用于低速率通信,是一种二线制串行总线,该总线大部分基…

linux i2c smbus驱动

目录 目录 数据收发流程 驱动层 收发接口 驱动层注册 smbus控制器 i2c控制器 协议接口使用 总体流程 数据收发关键数据结构 使用示例--eeprom的读写 使用示例--smbus的读写接口 数据收发流程 驱动层 收发接口 首先了解,驱动层向协议(算法&a…

初学 SMBus

(这篇主要对象为固件工程师,简单介绍SMBus的一些基本概念而已) 概述 System Management Bus (简称SMBus或是SMB) ,是1995年由Intel提出的,用来访问主机板上的设备(EEPROM、温度感测器、电压感测器等) 并收集相应的资讯(SPD、温度、电压、版…

SMBus协议

SMBus协议 文章目录 SMBus协议参考资料:一、 SMBus是I2C协议的一个子集二、 SMBus协议分析2.1 symbols(符号)2.2 SMBus Quick Command2.3 SMBus Receive Byte2.4 SMBus Send Byte2.5 SMBus Read Byte2.6 SMBus Read Word2.7 SMBus Write Byte2.8 SMBus Write Word2.…

系统管理总线(SMBus)介绍

SMBus介绍 系统管理总线协议概要系统管理总线 关键标记表SMBus接口函数1. SMBus Quick Command2. SMBus接收字节函数:i2c_smbus_read_byte()3. SMBus发送字节函数:i2c_smbus_write_byte()4. SMBus读取字节函数:i2c_smbus_read_byte_data()5. …

SMBus学习记录

SMBus学习记录 注:本文基于对于smb3.0 spec的学习总结。更多时序要求需要查阅spec。 SMBus 是 System Management Bus 的缩写,译为系统管理总线,SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总线规范。…

SMBus通信,与IIC通信的差异

SMbus总线 SMBus是System Management Bus的缩写,它是一种简单的串行通信总线,用于连接计算机上的系统管理芯片和其他设备,如电池、风扇、温度传感器等。SMBus是由英特尔公司开发的,它基于I2C总线协议,但是增加了一些额…

【Linux】特别篇--SMBus 协议

【Linux】特别篇--SMBus 协议 一、SMBus 简介二、SMBus 与 I2C 区别三、SMBus协议分析3.1 符号含义3.2 SMBus Quick Command3.3 SMBus Receive Byte3.4 SMBus Send Byte3.5 SMBus Read Byte3.6 SMBus Read Word3.7 SMBus Write Byte3.8 SMBus Write Word3.9 SMBus Block Read3.…

SMBUS的介绍与访问

博文是为了总结自己在bios学习上面的点点滴滴,并且加深印象,由于本人水平有限,难免存在不足之处,望指正,同时感谢CSDN提供的平台。本文主要介绍的是SMBUS。 1 SMBUS的简介 特点: SMBUS,System …

java完整开发环境搭建_如何搭建一个完整的Java开发环境

这篇文章主要教大家如何搭建一个完整的Java开发环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 作为一个Java程序员,配置一个java开发环境是必备的技能,今天给广大菜鸟初学者补上一课。环境的配置,大概就分三个…

1.1-java开发环境搭建

java开发环境搭建 回到第一章:目录 文章目录 java开发环境搭建前言一、下载jdk1.安装前检查 二、安装jdk1.安装2.配置环境变量3.验证安装 前言 本节内容是搭建java的开发环境。 分为三步:下载jdk;安装jdk;配置环境变量&#xff…

Windows Java开发环境搭建

1.下载安装配置 JDK 8 打开 https://developer.oracle.com/找到 Java8 下载位置,点击下载链接,下载JDK 8 下载后如下图所示,双击安装一直选择选择下一步 2.下载安装 Eclipse点击官网下载 Eclipse下载后就是一个压缩包,只需解压即…

基于Centos7的Java开发环境搭建

基于Centos7的Java服务器搭建 前提:Centos常用命令安装 1. 安装wget yum -y install wget2. 安装gcc yum -y install gcc1. Centos7下的防火墙操作 systemctl status firewalld # 查看防火墙状态 systemctl start firewalld # 开启防火墙 systemctl stop fi…

Java开发环境的搭建与配置

Java开发环境的搭建与配置 1、JDK、JRE、JVM的关系 2、JDK的下载:http://java.sun.com 3、JDK安装:可以自定义安装路径 4、JDK环境变量配置: 鼠标右击【计算机】->【属性】->【高级系统设置】->【高级】->【环境变量】 系统变…

Java开发环境搭建实践

前言 刚刚弄完python的环境搭建,今年打算也要好好学习Java,所以把Java的环境弄起来 搭建过程 jdk下载和安装 下载 官网:Oracle 甲骨文中国 | 云应用和云平台 打开官网 点击产品后下拉找到Java点进去。 下载Java 我就下载最新的jdk把…

程序员福音 【完整的Java开发环境搭建】 系列篇

原文地址 BY Jason 文章目录 原文地址Java开发环境搭建统一问题解决(更新中)1. vim常用操作命令2. 关于Linux防火墙开放端口问题 环境安装目录(更新中)Docker安装容器安装SSHJDK安装MySQL安装Redis安装RabbitMQ安装 Java开发环境…

Windows下Java开发环境搭建

本文以Win7操作系统解压版Eclipse安装版JDK1.7为例,展示如何搭建初级Java开发环境。 第一步:根据自己电脑的操作系统的位数选择相应版本的安装包进行安装: (1)查看自己电脑操作系统位数:找到“计算机”图标…

Java开发环境搭建详细教程(JDK+Eclipse)

前言 学习 Java 编程的第一件事情就是把开发环境搭建起来,这样才能开始快乐的编程学习之旅。然而,很多萌新经常因为种种问题无法搭建好开发环境,导致自己信心受挫,学习兴趣和激情也大减,甚至因此彻底放弃学习 Java 编…

【Java编程进阶】Java开发环境搭建

文章详细讲述了 Java 开发环境的搭建,编写并运行第一个 Java 程序,为后续的 Java 学习做了准备工作。 推荐学习专栏:Java编程进阶之路 文章目录 1. 为什么安装JDK?2. JDK的下载安装3. 配置环境变量4. 第一个Java程序1. 为什么安装JDK? 什么是JDK? JDK是java软件开发包,…

Java开发环境搭建超全详解

在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必须阶段,只有开发环境搭建好了,方可进行开发,良好的开发环境搭建,为后续的开发工作带来极大便利。 对于大公司来说,软件开发环境搭建工…