当前位置: 首页 > news >正文

护肤品网站模板百度智能小程序入口官网

护肤品网站模板,百度智能小程序入口官网,纷享销客crm管理系统,打车软件开发一、I2C协议 1.1、硬件连接 I2C在硬件上的接法如下所示#xff0c;主控芯片引出两条线SCL,SDA线#xff0c;在一条I2C总线上可以接很多I2C设备。 1.2、IIC传输数据的格式 1.2.1、写操作 流程如下#xff1a; 主芯片要发出一个start信号然后发出一个设备地址(用来确定是…一、I2C协议 1.1、硬件连接 I2C在硬件上的接法如下所示主控芯片引出两条线SCL,SDA线在一条I2C总线上可以接很多I2C设备。 1.2、IIC传输数据的格式 1.2.1、写操作 流程如下 主芯片要发出一个start信号然后发出一个设备地址(用来确定是往哪一个芯片写数据)方向(读/写0表示写1表示读)从设备回应(用来确定这个设备是否存在)然后就可以传输数据主设备发送一个字节数据给从设备并等待回应每传输一字节数据接收方要有一个回应信号确定数据是否接受完成)然后再传输下一个数据。数据发送完之后主芯片就会发送一个停止信号。 下图白色背景表示主→从灰色背景表示从→主 1.2.2、读操作 流程如下 主芯片要发出一个start信号然后发出一个设备地址(用来确定是往哪一个芯片写数据)方向(读/写0表示写1表示读)从设备回应(用来确定这个设备是否存在)然后就可以传输数据从设备发送一个字节数据给主设备并等待回应每传输一字节数据接收方要有一个回应信号确定数据是否接受完成)然后再传输下一个数据。数据发送完之后主芯片就会发送一个停止信号。 下图白色背景表示主→从灰色背景表示从→主 1.2.3、I2C信号 I2C协议中数据传输的单位是字节也就是8位。但是要用到9个时钟前面8个时钟用来传输8数据第9个时钟用来传输回应信号。传输时先传输最高位(MSB)。 开始信号SSCL为高电平时SDA山高电平向低电平跳变开始传送数据。结束信号PSCL为高电平时SDA由低电平向高电平跳变结束传送数据。响应信号(ACK)接收器在接收到8位数据后在第9个时钟周期拉低SDASDA上传输的数据必须在SCL为高电平期间保持稳定SDA上的数据只能在SCL为低电平期间变化 I2C协议信号如下 1.2.4、协议细节 如何在SDA上实现双向传输 主芯片通过一根SDA线既可以把数据发给从设备也可以从SDA上读取数据连接SDA线的引脚里面必然有两个引脚发送引脚/接受引脚。 主、从设备都可以通过SDA发送数据肯定不能同时发送数据怎么错开时间 在9个时钟里 前8个时钟由主设备发送数据的话第9个时钟就由从设备发送数据 前8个时钟由从设备发送数据的话第9个时钟就由主设备发送数据。 双方设备中某个设备发送数据时另一方怎样才能不影响SDA上的数据 设备的SDA中有一个三极管使用开极/开漏电路(三极管是开极CMOS管是开漏作用一样)如下图 真值表如下 从真值表和电路图我们可以知道 当某一个芯片不想影响SDA线时那就不驱动这个三极管 想让SDA输出高电平双方都不驱动三极管(SDA通过上拉电阻变为高电平) 想让SDA输出低电平就驱动三极管 从上面的例子就可以知道怎样在一条线上实现双向传输这就是SDA上要使用上拉电阻的原因。 为何SCL也要使用上拉电阻 在第9个时钟之后如果有某一方需要更多的时间来处理数据它可以一直驱动三极管把SCL拉低。 当SCL为低电平时候大家都不应该使用IIC总线只有当SCL从低电平变为高电平的时候IIC总线才能被使用。 当它就绪后就可以不再驱动三极管这是上拉电阻把SCL变为高电平其他设备就可以继续使用I2C总线了。 二、SMBus协议 2.1、SMBus是I2C协议的一个子集 SMBus是基于I2C协议的SMBus要求更严格SMBus是I2C协议的子集。 SMBus有哪些更严格的要求跟一般的I2C协议有哪些差别 VDD的极限值不一样 I2C协议范围很广甚至讨论了高达12V的情况SMBus1.8V~5V 最小时钟频率、最大的Clock Stretching Clock Stretching含义某个设备需要更多时间进行内部的处理时它可以把SCL拉低占住I2C总线 I2C协议时钟频率最小值无限制Clock Stretching时长也没有限制 SMBus时钟频率最小值是10KHzClock Stretching的最大时间值也有限制 地址回应(Address Acknowledge) 一个I2C设备接收到它的设备地址后是否必须发出回应信号I2C协议没有强制要求必须发出回应信号SMBus强制要求必须发出回应信号这样对方才知道该设备的状态busyfailed或是被移除了 SMBus协议明确了数据的传输格式 I2C协议它只定义了怎么传输数据但是并没有定义数据的格式这完全由设备来定义SMBus定义了几种数据格式(后面分析) REPEATED START Condition(重复发出S信号) 比如读EEPROM时涉及2个操作 把存储地址发给设备读数据 在写、读之间可以不发出P信号而是直接发出S信号这个S信号就是REPEATED START如下图所示 SMBus Low Power Version SMBus也有低功耗的版本 2.2、SMBus协议分析 对于I2C协议它只定义了怎么传输数据但是并没有定义数据的格式这完全由设备来定义。 对于SMBus协议它定义了几种数据格式。 2.2.1、symbols(符号) 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 toget a 10 bit I2C address.(地址位7位地址) Command Code (8 bits): Command byte, a data byte which often selects a register onthe device.(命令字节一般用来选择芯片内部的寄存器) Data Byte (8 bits): A plain data byte. Sometimes, I write DataLow, DataHighfor 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 hostadapter.(中括号表示I2C设备发送的数据没有中括号表示host adapter发送的数据)2.2.2、SMBus Quick Command 只是用来发送一位数据R/W#本意是用来表示读或写但是在SMBus里可以用来表示其他含义。 比如某些开关设备可以根据这一位来决定是打开还是关闭。 2.2.3、SMBus Receive Byte I2C-tools中的函数i2c_smbus_read_byte()。 读取一个字节Host adapter接收到一个字节后不需要发出回应信号(上图中N表示不回应)。 2.2.4、SMBus Send Byte I2C-tools中的函数i2c_smbus_write_byte()。发送一个字节。 2.2.5、SMBus Read Byte I2C-tools中的函数i2c_smbus_read_byte_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再读取一个字节的数据。 上面介绍的SMBus Receive Byte是不发送Comand直接读取数据。 2.2.6、SMBus Read Word I2C-tools中的函数i2c_smbus_read_word_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再读取2个字节的数据。 2.2.7、SMBus Write Byte I2C-tools中的函数i2c_smbus_write_byte_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再发出1个字节的数据。 2.2.8、SMBus Write Word I2C-tools中的函数i2c_smbus_write_word_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再发出1个字节的数据。 2.2.9、SMBus Block Read I2C-tools中的函数i2c_smbus_read_block_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再发起度操作 先读到一个字节(Block Count)表示后续要读的字节数然后读取全部数据 2.2.10、SMBus Block Write I2C-tools中的函数i2c_smbus_write_block_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再发出1个字节的Byte Conut(表示后续要发出的数据字节数)最后发出全部数据。 2.2.11、I2C Block Read 在一般的I2C协议中也可以连续读出多个字节。 它跟SMBus Block Read的差别在于设备发出的第1个数据不是长度N如下图所示 I2C-tools中的函数i2c_smbus_read_i2c_block_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再发出1个字节的Byte Conut(表示后续要发出的数据字节数)最后发出全部数据。 2.2.12、I2C Block Write 在一般的I2C协议中也可以连续发出多个字节。 它跟SMBus Block Write的差别在于发出的第1个数据不是长度N如下图所示 I2C-tools中的函数i2c_smbus_write_i2c_block_data()。 先发出Command Code(它一般表示芯片内部的寄存器地址)再发出1个字节的Byte Conut(表示后续要发出的数据字节数)最后发出全部数据。 2.2.13、SMBus Block Write - Block Read Process Call 2.2.14、Packet Error Checking (PEC) PEC是一种错误校验码如果使用PEC那么在P信号之前数据发送方要发送一个字节的PEC码(它是CRC-8码)。 以SMBus Send Byte为例下图中一个未使用PEC另一个使用PEC 2.3、SMBus和I2C的建议 因为很多设备都实现了SMBus而不是更宽泛的I2C协议所以优先使用SMBus。 即使I2C控制器没有实现SMBus软件方面也是可以使用I2C协议来模拟SMBus。 所以Linux建议优先使用SMBus。
http://www.yutouwan.com/news/427916/

相关文章:

  • 继续网站建设欧普建站
  • 关于加强网站建设工作的意见wordpress列表页显示tag
  • 郑州网站建设郑州网站建设seo外链招聘
  • 汉中网站建设公司南昌电子商务网站建设
  • 佛山网站建设推广厂商排名app模板下载网站模板
  • 铜陵市网站建设wordpress禁止加载谷歌字体
  • 响应式网站建设流程网站除了wordpress外
  • 建立一个团购网站需要多少钱兰州模板网站建设
  • 计算机应用技术专业网站开发方向电商门户网站
  • WordPress的站内地图c 在线视频网站开发
  • 重庆网站建设培训班电脑可以做网站服务器吗
  • 小说网站建设需要什么中信建设有限责任公司官方网站
  • 怎么找网站是由什么建的最新大连市热议新闻
  • 如何利用网络进行推广和宣传百度百科优化
  • 网站关键词提升网站优化待遇
  • 做美食视频网站有哪些前端程序员需要掌握哪些基本技术
  • 百度k了网站怎么办网站推广工具有哪些
  • 织梦cms 网站栏目管理南通微信网站开发
  • 儿童教育网站怎么做有趣网站做搜索引擎优化
  • ps教学网站制作步骤推广顾问
  • 六安网站关键词排名优化地址群晖套件做网站
  • 网站改版 域名成都模版网站制作
  • 建设信用卡网银网站建设银行网站信息补充
  • asp做的网站缺点中国比较有名的公司
  • 物业公司网站设计网站打不开 清理缓存后可以打开
  • 个人做网站最方便的方法小白学编程应该从哪里开始学
  • 做网站建设公司怎么样免费软件定位对方手机位置
  • 盘锦网站建设价位外贸推广如何做
  • ppt插件 网站云主机怎么装网站
  • 规划设计 网站 网站结构黄页88官网