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

网站建设收费项目阿里云快速建站教程

网站建设收费项目,阿里云快速建站教程,手机网站建站视频教程,百度极速版基本的任务是#xff1a;通过通信线#xff0c;实现单片机读写外挂模块寄存器的功能。其中至少要实现在指定位置写寄存器和在指定的位置读寄存器这两个功能。 异步时序的优点#xff1a;省一根时钟线#xff0c;节约资源#xff1b;缺点#xff1a;对事件要求严格#…基本的任务是通过通信线实现单片机读写外挂模块寄存器的功能。其中至少要实现在指定位置写寄存器和在指定的位置读寄存器这两个功能。 异步时序的优点省一根时钟线节约资源缺点对事件要求严格对硬件电路依赖严重 同步时序反过来。 1 I2C通信 I2CInter IC Bus是由Philips公司开发的一种通用数据总线 两根通信线SCLSerial Clock、SDASerial Data 同步半双工 带数据应答 支持总线挂载多设备一主多从、多主多从 一主多从一个单片机作为主机挂载一个或者多个模块作为从机。 多主多从多个主机多个从机但是同一时刻只能有一个主机控制 1.1 硬件电路 所有I2C设备的SCL连在一起SDA连在一起 设备的SCL和SDA均要配置成开漏输出模式 SCL和SDA各添加一个上拉电阻阻值一般为4.7KΩ左右 左边的CPU就是单片机作为总线的主机主机的权利很大包括对SCL线的完全控制任何时候都是主机完全掌控SCL线。空闲状态下主机可以主动发起对SDA的控制只有在从机发送数据和从机应答时候主机才会转交SDA的控制权给从机。下面都是被控制IC也就是挂载在I2C上总线上的从机这些从机可以是姿态传感器、OELD、存储器、时钟模块等。从机的权利比较小对于SCL时钟线在任何时刻都只能被动的读取从机不允许控制SCL线。对于SDA数据线从机不允许主动发起对SDA的控制只有在主机发送读取从机的命令后或者从机应答的时候从机才能短暂的取得SDA的控制权这就是一主多从模型。 主机的SCL是输出没问题主机和从机的SDA在输入和输出之间变化 左边是SCL的结构右边是SDA的结构。 首先引脚的信号进来都可以通过一个数据缓冲器或者施密特触发器进行输入因为输入对电路没有任何影响。在输出这部分使用的是开漏输出的配置输出低电平开关管导通引脚直接接地是强下拉输出高电平这个开关管断开引脚什么都不接处于浮空状态所有的设备只能输出低电平而不能输出高电平为了避免高电平造成的引脚浮空这时需要在总线外面SCL和SDA各外置一个上拉电阻弱上拉 好处 1完全杜绝了电源短路现象保证了电路的安全 2避免了引脚模式的频繁切换开漏加弱上拉的模式同时兼具了输入和输出的功能。开漏模式下输出高电平就相当断开引脚所以在输入之前可以直接输出高电平不用切换输入模式了 3这个模式会有一个“线与”的现象就是只要有任意一个或多个设备输出了低电平总线就处于低电平。利用这个特性执行多主机模式下的时钟同步和总线仲裁。 1.2 I2C时序基本单元 1起始条件SCL高电平期间SDA从高电平切换到低电平 2终止条件SCL高电平期间SDA从低电平切换到高电平 在I2C处于空闲时SCL和SDA都处于高电平SCL高电平期间SDA从高电平切换到低电平之后主机要再把SCL拽下来一方面是占用这个总线另一方面也是为了这些基本单元的拼接。低电平开始低电平结束 终止条件SCL先回弹到高电平之后SDA再回弹至高电平这个上升沿触发终止条件。 起始和终止都是由主机产生的。所以在总线空闲状态时从机必须双手放开不允许主动跳出来碰总线允许的话是多主机模型了 3发送一个字节SCL低电平期间主机将数据位依次放到SDA线上高位先行然后释放SCLSCL成高电平从机将在SCL高电平期间读取数据位所以SCL高电平期间SDA不允许有数据变化依次循环上述过程8次即可发送一个字节 起始开始后第一个字节也必须是主机发送的最开始SCL是低电平如果主机想发送0就拉低SDA到低电平如果想发送1就放手SDA回弹至高电平。在SCL低电平期间允许改变SDA的电平。当这一位放好后主机松手时钟线SCL回弹到高电平在高电平期间是从机读取SDA的时候所以高电平期间SDA不允许变化SCL处于高电平之后从机需要尽快的读取SDA一般是在上升沿这个时刻从机就已经读取完成了。主机在放手SCL一段时间后就可以继续拉低SCL了传输下一位主机也需要在SCL下降沿之后尽快把数据放到SDA上数据放完之后主机再松手SCLSCL到达高电平从机读以此类推。主机拉低SCL把数据放在SDA上主机松开SCL从机读取SDA上的数据在SCL的同步下依次进行主机的发送和从机的接收。高位先行所以第一位是第一个字节的最高位B7。SCL和SDA全程由主机掌控从机只能被动读取。 4接收一个字节SCL低电平期间从机将数据位依次放到SDA线上高位先行然后释放SCL主机将在SCL高电平期间读取数据位所以SCL高电平期间SDA不允许有数据变化依次循环上述过程8次即可接收一个字节主机在接收之前需要释放SDA 释放SDA就相当于切换成输入模式所有设备包括主机都处于输入模式当主机需要发送的时候就可以主动拉低SDA而主机在被动接收的时候就必须先释放SDA总线是线与的特征。 接收一个字节和发送一个字节非常相似。 区别是发送一个字节是低电平主机放数据高电平从机读数据 而接收一个字节是低电平从机放数据高电平主机读数据 主机在接收数据之前要先释放SDA线然后这是从机取得SDA的控制权从机需要发送0就把SDA拉低从机需要发送1就放手SDA线SDA回弹至高电平。然后同样的低电平变换数据高电平读取数据。实线表示主机控制的电平虚线表示从机控制的电平。SCL全程由主机控制SDA主机在接收前要释放交由从机控制从机的数据变化都是贴着SCL下降沿进行的而主机可以在SCL任意高电平时刻读取数据这就是接收一个字节的时序。 5发送应答发送一位主机在接收完一个字节之后在下一个时钟发送一位数据数据0表示应答数据1表示非应答。 在接收一个字节后需要给从机一个应答位发送应答位的目的是告诉从机是不会还要继续发如果从机发送一个数据后得到了主机的应答那从机就会继续发送如果从机没有得到主机的应答那从机就会认为自己发送了一个数据主机不理可能主机不想要了这时从机就会释放SDA交出SDA的控制权防止干扰主机的操作。 6接收应答接收一位主机在发送完一个字节之后在下一个时钟接收一位数据判断从机是否应答数据0表示应答数据1表示非应答主机在接收之前需要释放SDA 在调用发送一个字节之后就要紧跟着调用接收应答的时序用来判断从机有没有收到刚才给它的数据。如果从机收到了那在应答位这里主机释放SDA的时候从机就应该立刻把SDA拉下来然后在SCL高电平期间主动读取应答如果应答位为0就说明从机确实收到了。这个场景就是主机刚发送一个字节问有没有人收到现在把SDA放手了如果有人收到的话就把SDA拽下来然后主机高电平读取数据发现确实有人拽下来了说明有人收到了数据如果主机发送松手后SDA跟着回弹到高电平说明没人回应没人收到或者收到没回应。 1.3 I2C时序 从机有唯一的设备地址。7位地址MPU6050: 1101 000 1指定地址写 对于指定设备Slave Address在指定地址Reg Address下设备内部地址寄存器写入指定数据Data SAD和SDL都处于高电平开始的时候拉低SDA产生起始条件在起始条件之后紧跟着的时序必须是发送一个字节的时序字节的内容必须是从机地址读写位从机地址7位读写位1位 加起来是一个字节8位发送从机地址就是确定通信对象发送读写位就是确定接下来是读出还是写入。具体低电平期间SDA变换数据高电平期间从机读取SDA。绿色的竖线表示从机读的数据。主机寻找的地址是1101 000MPU6050的地址后面的0表示之后的时序主机要进行写入操作1表示之后的时序要进行读出操作。目前主机是发送一个字节字节的内容转换成16进制高位先行就是0xD0然后根据协议规定紧跟着的就是接收从机的应答位Receive ACKRA,在这个时刻主机要释放SDA。 如果单看主机的波形释放SDA之后引脚电平回弹到高电平黄线但是根据协议规定从机要在这个时候拉低SDA绿线综合两者的波形在主机释放SDA之后由于SDA也被从机拽住了所以主机松手后SDA并没有回弹高电平这个过程就表示从机产生了应答最终高电平期间主机读SDA发现是0就说明进行寻址时有人给我应答了传输没问题如果主机读取SDA发现是1就说明寻址在应答期间我松手了但是没人拽住它没人给我应答就直接产生停止条件。后面的上升沿就是应答结束后从机释放SDA产生的从机交出SDA的控制权因为从机要在低电平期间尽快变换数据所以这个上升沿和SCL的下降沿几乎是同时发生的。继续往后读写位给了0所以应答结束后要继续发送一个字节同样的时序再来一遍第二个字节就可以送到指定设备的内部了从机设备可以自己定义第二个字节和后续字节的用途一般第二个字节可以是寄存器地址或者指令控制字等。这里是0x19就表示要操作0x19地址下的寄存器了。 接着同样是从机应答主机释放SDA从机拽住SDASDA表现为低电平主机接收到应答位0表示收到了从机的应答。同样的流程再来一遍主机再发送一个字节这里表示要在0x19地址下写入0xAA最后是接收应答位。如果主机不需要再继续传输了就可以产生停止条件在停止条件之前先拉低SDA为后续的SDA上升沿做准备然后释放SCL再释放SDA这样就产生了SCL高电平期间SDA的上升沿。 总结这个数据帧的目的就是对于指定从机地址为1101 0000的设备在其内部0x19的寄存器中写入0xAA这个数据。 2当前地址读 对于指定设备Slave Address在当前地址指针指示的地址下读取从机数据Data 如果主机想要读取从机的数据就可以执行这个时序。最开始还是SCL高电平期间拉低SDA产生起始条件起始条件开始后主机必须首先调用发送一个字节来进行从机的寻址和指定读写标志位图中表示本次寻址的目标是1101 000的设备最后一位读写标志位为1表示主机读取数据紧跟着发送一个字节之后接收一下从机的应答从机应答0表示从机接收到了第一个字节在从机应答之后在这里开始数据的传输方向就要反过来了。 主机刚才发出了读的指令所以在这之后主机就不能继续发送了要把SDA的控制权给从机主机调用接收一个字节的时序进行接收操作之后从机得到主机的允许可以在SCL低电平期间写入SDA然后主机在SCL高电平期间读取SDA最终主机在SCL高电平期间依次读取8位就接收到从机发送的一个字节的数据0000 1111也就是0x0F这里没有指定地址环节这里需要用到当前地址指针了在从机中所有寄存器被分配到一个线性区域中并且会有一个单独的指针变量指示着其中一个寄存器一般默认为0地址每写入和读出一个字节后这个指针就会自动自增一次主机没有指定地址的话从机就会返回当前指针指向的寄存器的值。 3指定地址读 对于指定设备Slave Address在指定地址Reg Address下读取从机数据Data 前面一部分是指定地址的时序把后面写数据的部分去掉然后把前面这一部分设置地址还没有指定写什么数据的时序追加到当前地址读的时序前就得到了指定地址读的时序复合格式 前面部分是指定地址写只指定了地址还没来得及写后面的部分是当前地址读加起来就是指定地址读了。 前面依然是启动条件然后发送一个字节进行寻址指定从机地址是1101 000读写标标志位是0表示进行写操作经过从机应答后再发送一个字节第二个字节用来指定地址这个数据就写入到从机的地址指针里了也就是说从机接收到这个数据之后它的寄存器指针就指向0x19这个位置了之后要写入的数据不给它发直接再来个起始条件start repeat然后重新寻址并且指定读的标志位此时读写标志位是1表示要开始读了接着主机接收一个字节这个字节就是0x19地址下的数据 进阶版本就是读写多个字节。 1.4 MPU6050简介
http://www.huolong8.cn/news/257406/

相关文章:

  • 金融行业seo整站优化网页图片另存为的时候保存不了jpg
  • html5网站建设中模板如何自己制造软件
  • 2018做网站开发一个月工资多少沈阳化工大学建设工程网
  • 中山 在门户网站推广html的网站模板下载
  • 重庆网站建设公司有哪些重庆专业网站定制
  • 旅行社服务网点能否做网站安卓应用市场app下载安装
  • 北京网站制作很好 乐云践新网络营销专家
  • 西昌规划和建设局网站知名高端网站建设报价
  • 常宁网站设计石岩附近网站建设公司
  • 营销型网站要点网站开发小组分工
  • 怎么在百度自己创网站模拟网站开发
  • 漫画做视频在线观看网站有经验的南昌网站建设
  • 新农村网站建设小白如何自己做网站
  • 宝山顺德网站建设装修平台网站排名前十名有哪些
  • 免费网站软件下载大全动漫福州网站设计
  • 乐清联科网站建设天津魔方网站建设
  • 郑州公司网站制作网站开发维护关键技术
  • 婚纱网站建设案例2021深圳装修公司排名前十强
  • 网站 永久关停 请示wordpress 模板 删除
  • 将网站做成logo怎么做wordpress 隐私设置
  • word68网站陕西省住房建设厅网站
  • 企业商场网站建设贵州热点新闻事件
  • 网站建设需要什么样的内容网站建设营销外包公司
  • 网站建设实习任务完成情况群晖 wordpress是什么
  • seo网站推广电话山东省城乡和住房建设厅网站
  • 不需要写代码的网站开发软件wordpress配置报错
  • 湖南 中小企业 网站建设橘子seo历史查询
  • 网站优化的公司韩国设计app网站有哪些
  • 百度网盟有哪些网站做设计有哪些好用的素材网站
  • 网路神做网站怎么样晋中路桥建设集团有限公司网站