首页 > 其他分享 >24 IIC(二)SMBus协议

24 IIC(二)SMBus协议

时间:2023-05-07 13:22:21浏览次数:47  
标签:24 SMBus IIC Byte I2C data bit i2c

SMBus协议:http://www.smbus.org/specs/

1. SMBus简介

SMBus:System Manage Bus,系统管理总线

SMBus是基于IIC协议发展而来,SMBus要求比IIC更加严格,是其子集

2. SMBus与IIC的区别

  • VDD的极限值不一样

    IIC:范围广

    SMBus:1.8v-5v

  • 时钟频率和clock streting

    IIC:无限制

    SMBus:时钟频率最小为10KHz,clock streting也存在限制

  • 地址应答

    IIC:无强制要求

    SMBus:必须有应答

  • 重复发出S信号

    SMBus可以在一帧数据中进行读写的转换,而不发送停止信号

3. SMbus协议

3.1 符号

S     (1 bit) : Start bit(开始位)
Sr    (1 bit) : 重复的开始位
P     (1 bit) : Stop bit(停止位)
R/W#  (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.(读写位)
A, N  (1 bit) : Accept and reverse accept bit.(回应位)
Address(7 bits): I2C 7 bit address. Note that this can be expanded as usual to
                get a 10 bit I2C address.
                (地址位,7位地址)
Command Code  (8 bits): Command byte, a data byte which often selects a register on
                the device.
                (命令字节,一般用来选择芯片内部的寄存器)
Data Byte (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh
                for 16 bit data.
                (数据字节,8位;如果是16位数据的话,用2个字节来表示:DataLow、DataHigh)
Count (8 bits): A data byte containing the length of a block operation.
				(在block操作总,表示数据长度)
[..]:           Data sent by I2C device, as opposed to data sent by the host
                adapter.
                (中括号表示I2C设备发送的数据,没有中括号表示host adapter发送的数据)

3.2 SMBus Quick Command

在SBMbus Quick Command中R/W被用来表示开关之类的含义

3.3 SMBus Receive Byte

读取一字节数据后,不回应

I2C-tools中的函数:i2c_smbus_read_byte()

3.4 SMBus Send Byte

发送一字节数据

I2C-tools中的函数:i2c_smbus_write_byte

3.5 SMBbus Read Byte

command code一般用来表示读取的设备的寄存器地址

注意:SMBus Read Byte和SMBus Receive Byte的区别

SMBus Read Byte读取指定位置的数据;而SMBus Receive Byte则是直接读取发送来的数据

I2C-tools中的函数:i2c_smbus_read_byte_data

3.6 SMBus Read Word

I2C-tools中的函数:i2c_smbus_read_word_data

3.7 SMBus Write Byte

注意:SMBus Write Byte和SMBus Send Byte

SMBus Write Byte写指数据到指定位置;而SMBus Send Byte则是直接发送数据

I2C-tools中的函数:i2c_smbus_write_byte_data

3.8 SMBus Write Word

I2C-tools中的函数:i2c_smbus_write_word_data

3.9 SMBus Block Read

先从设备处读到Block Count。表示后续需要读取的字节数。

I2C-tools中的函数:i2c_smbus_read_block_data

3.10 SMBus Block Write

I2C-tools中的函数:i2c_smbus_write_blcok_data

3.11 I2C Block Read

IIC也能实现Block读,不过它的区别在于。IIC的block读不存在Block Count位

I2C-tools中的函数:i2c_smbus_read_i2c_block_data

3.12 I2C Block Write

I2C-tools中的函数:i2c_smbus_write_i2c_block_data

3.13 SMBus Block Write - Block Read Process Call

3.14 Packet Error Checking (PEC)

PEC是一种错误校验码,如果使用PEC,那么在P信号之前,数据发送方要发送一个字节的PEC码(它是CRC-8码)。

标签:24,SMBus,IIC,Byte,I2C,data,bit,i2c
From: https://www.cnblogs.com/burnk/p/17379181.html

相关文章

  • 贴个IIC的代码和MPU6050寄存器地址的文档(MOVE版)
    IIC代码:里面的UV_Delay()那几个要自己定义一下。还有那几个子函数也要自己定义在一个头文件里面。比如:#ifndef_IIC_H#define_IIC_H#defineUV_Delay()delay5us()#defineUV_SDA_SET()P2^0=1#defineUV_SDA_......
  • AtCoder Beginner Contest 242
    A-T-shirt#include<bits/stdc++.h>usingnamespacestd;int32_tmain(){doublea,b,c,x; cin>>a>>b>>c>>x; if(x<=a)cout<<"1.000000000000"; elseif(x>b)cout<<&qu......
  • LeetCode 24. 两两交换链表中的节点
    题目链接:LeetCode24.两两交换链表中的节点本题不涉及算法,直接模拟就可以了,但是模拟的过程中,最好进行画图演示,不然容易出错。想要达到两两交换链表中节点的效果,就需要按照以下三个步骤进行。同时为了将头结点和非头结点统一处理,因此新建一个虚拟头结点,初始时,cur指向虚拟头结......
  • ubuntu 20 安装k8s 1.24 -3个组件
    搜索  阿里云源  开源镜像网站  找kubernetes  点进去,配置方式apt-getupdate&&apt-getinstall-yapt-transport-httpscurlhttps://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg|apt-keyadd-cat<<EOF>/etc/apt/sources.list.d/kubernetes.lis......
  • 24基于java的宠物医院管理系统
    项目背景随着互联网的普及,已经和我们的生活不可分割;宠物渐渐的已经成为了我们的好朋友,宠物医院管理系统可以帮助用户合理的管理宠物,呵护宠物的健康,对宠物起到了一个健康监控的作用;项目介绍系统总体分为3个角色:分别是系统管理员;医生和用户;不能的角色拥有不同的功能权限,下面详......
  • 2432. 处理用时最长的那个任务的员工
     分析:题目有点绕,但是大概意思就是给出的数组是多个任务logs[i][0]是员工编号,logs[i][1]是处理完当前i任务结束的时间而i任务需要的时间就是logs[i][1]-logs[i-1][1]求得最长的任务时间,如果有多个,就取员工编号最小的那个建立一个maxes量存最大时间,一个maxs存员工编号遍历数......
  • 一个stm23移植u8g2驱动iic屏SSD1306方案12864的左边竖着两列没有显示的奇怪问题
    初始化后画一个方框u8g2_DrawLine(&u8g2,0,0,127,0);u8g2_DrawLine(&u8g2,1,0,1,63);//左边框u8g2_DrawLine(&u8g2,0,63,127,63);u8g2_DrawLine(&u8g2,127,0,127,63);左边框地址为0不显示,设置为1还是不显示设置为2可以看到竖线了中景园......
  • JDK导致ActiveMQ、Kafka连接zookeeper失败:Session 0x0 for server 10.1.21.244/<unres
      最近在部署一套ActiveMQ集群时,使用zookeeper来实现,zookeeper启动了,在启动ActiveMQ时,抛出异常:    WARN|Session0x0forserver10.1.21.244/<unresolved>:2181,unexpectederror,closingsocketconnectionandattemptingreconnectjava.lang.IllegalArgu......
  • 洛谷P4824题解
    题面题意:给出字符串s和t,每次操作将s中出现的第一个t删去,直到不能删为止。求最后的串。|s|<=1e6题解:hash做法。(此题也有kmp和权值线段树做法)因为涉及到删除操作,所以我们要动态的实现这个过程。所以考虑开一个栈来存储当前留下的字符。然后每有一个字符入栈,就拿当前......
  • 23.4.24前学习笔记
    可通过document.documentElement.scrollTop=0控制返回页面顶部 scrollTo方法 window.scrollTo(x,y)//控制页面移动到哪  页面尺寸事件 window.addEventListener('resize',function(){    //改变屏幕尺寸时发生变化,可代替媒体查询    letw=documen......