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

嵌入式开发学习日志40——stm32之I2C协议层

        在了解完I2C的物理层之后,就要正式开始转入协议层了,这一部分可以说涵盖了I2C绝大部分的功能原理,掌握了它才算真正触及了I2C的核心。

        I2C定义了通信的数据有效性、起始与停止信号等环节,根据其要求,通信过程被划分为发送起始信号——寻址——数据传输——发送停止信号。

        首先来看数据有效性规定,根据上一章所述,I2C总线有两根线,一根数据线,一根时钟线,数据的读写正是根据这两根线的电平高低关系来决定的。SCL(时钟线)保持高电平期间,是进行数据的读取操作的时间,此时的SDA(数据线)上的电平不能发生改变。当SCL电平是低电平时,才能够使SDA上的电平发生变化,此时就会进行数据的写操作。

        关于起始与终止信号,I2C也是通过SCL与SDA上的电平变化来决定的。SCL此时需要保持高电平,而SDA由高电平变为低电平时,这一变化会表示起始信号,SDA由低电平变为高电平时,会代表停止信号。

        之前提到过,主机会通过总线对从机进行寻址后,进行数据的读写操作,那么在从机接收完某次传递数据或者主机读取完某次的数据后,要如何告诉主机(从机)接下来是停止进一步传输还是继续传输呢?

        答案很简单,I2C通过应答响应来解决这个问题。

        什么是应答响应?通俗点来说,其实可以看作数据传输时紧跟着的特殊校验位,这里也称应答位。在主机控制SDA拉低电平产生起始信号后,若一直处于低电平状态,释放SDA,由从机控制,此时就会在主机与从机之间进行数据传输。当一段数据发送完后,如果从机主动拉低电平,那么说明从机可以继续接受数据,此时就会产生应答信号,主机在接收到这一信号后就会继续发送数据。

        当然,如果从机不想再接收数据时,可以保持高电平,此时主机就会接收到非应答信号,那么主机就会拉高电平,发出终止信号终止数据的进一步传输。

        当然,要实现上述功能,首先主机得寻址到从机才行,I2C提供了7位从机地址和10位从机地址,但一般常使用7位。说是7位寻址,实际上传输的寻址位后还要加上一个方向位,方向位写0,表示主机向从机写数据,1则是从从机里面读取数据。

        寻址成功时,从机也会向主机发送一个应答信号(ACK),如果应答失败,那么需要看看从机的地址是否出错?如果没有出错,那可能从机正繁忙,无暇接收信号。最坏的情况可能就是从机故障。

        说到这,其实I2C的数据传输方式也是呼之欲出了。

        根据情况的不同,大抵可以分为三种形式。

        第一种是主机向从机发送数据。首先由主机拉低电平产生起始信号,并且后面紧跟从机的地址进行寻址,此时地址位后写0。当从机被寻址到并且可以接收时,会返回应答信号,此时由主机向从机传输数据,如果从机满了或者不想再接收时,就会在某次接收完数据后返回非应答信号(NACK),此时主机就会拉高电平,产生停止信号。

        第二种是主机从从机读取信号,这个过程和写数据大差不差,只是寻址时方向位写1,同时应答信号与非应答信号都由主机发送给从机。

        第三种就是两者的综合,以先写再读为例,读和写的流程都和上面差不多,但是要注意,二者的连接需要重新发送起始信号,同时再次寻址,用方向位来改变操作。

        读到这,那么恭喜你,你对I2C的工作方式已经有了大致的了解,剩下的就是多做题目熟练即可。

        

http://www.dtcms.com/a/503524.html

相关文章:

  • 网站建设公司小江可以做试题的网站
  • Android 四大组件桥梁 —— Intent (意图) 详解
  • 小鱼在线网站建设网站注册步骤
  • wordpress 视频站模板wordpress和网盘结合
  • Orleans流背压控制机制深度分析
  • Java并发之队列同步器AQS原理
  • c++11可变模版参数 emplace接口 新的类功能 lambda 包装器
  • 手机代码网站有哪些问题吗制作视频特效
  • 济南正规的网站制作郑州做网站九零后网络
  • SQL入门:分页查询核心技术解析
  • 5.3 TCP (答案见原书 P252)
  • 教育房地产 网站建设中山网站建设找丁生
  • 【第十八周】自然语言处理的学习笔记03
  • 探索 Python 判断语句:逻辑与感性的交汇
  • 深圳哪家制作网站好成都近期发生的大事
  • IDEA Gradle并行编译内存溢出问题
  • 如何做电影网站赚钱瓯海住房与城乡建设局网站
  • 婚礼(一)
  • 电阻应变式传感器
  • 在开发过程中遇到问题如何解决,以及两个经典问题
  • 企业网站建设 属于什么费用个人博客网页设计
  • 网站怎么做301信息类网站 wordpress
  • MyBatis入门到精通(Mybatis学习笔记)
  • 一次渗透测试的全过程:从扫描到提权
  • 英语作文网站济南专业做公司网站的机构
  • 织梦后台做的网站怎么绑定域名做瞹视频网站
  • 网站悬浮代码做柱状图饼状图好看的网站
  • 2510d,C++与d互操作
  • 移动端漂亮网站今天出入济南最新通知
  • UV紫外相机的简单介绍和场景应用