单片机之IIC通信协议「建议收藏」

单片机之IIC通信协议「建议收藏」概念I2C(IIC,Inter-IntegratedCircuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。硬件IIC:硬件IIC速度比模拟快,并且可以用DMA。硬件IIC会自动匹配与从机的通信时序,…

大家好,又见面了,我是你们的朋友全栈君。

概念

I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。

硬件IIC:硬件IIC速度比模拟快,并且可以用DMA。硬件IIC会自动匹配与从机的通信时序,只需配置好硬件IIC的一些函数就可以了。
软件IIC:用软件模拟IIC的时序图,从而与从机实现通信

IIC传输特点

1.半双工:半双工通信允许信号在两个方向上传输,但某一时刻只允许信号在一个信道上单向传输,可切换方向的单工通信

2.串行同步通信:数据通过一根SDA线传输,SCL提供同步时钟。同步通信的最大特点就是通信双方的SCL时钟线连在一起。

3.主从式通信:每一个通信周期的发起和结束都是由主设备来做的,从设备只有被动的响应主设备,没法自己自发的去做任何事情。有主机从机之分,支持多个从机。

单片机之IIC通信协议「建议收藏」

4.传输顺序:高位在前,低位在后

5.只有SDA与SCL两根线,但是主机与从机之间还需要一根共地线,不然从机怎么知道主机发过来的电平时序是高还是低呢!

6.SDA与SCL总线一定要接上拉电阻。

7,传输速率:I2C协议v2.1规定了三种速率(bps)
                       -100K
                       -400K
                       -3.4M

通信速率是按照主机的SCL的速度来通信,SCL上的通信速度要同时小于主从规定的最大通信速度

一主多从的通信过程:主设备在每个通信周期会先发8位的从设备地址,其实8位中只有7位是从设备地址(datasheet有设备地址),还有1位表示主设备下面要写入还是读出(由从设备决定)到总线(主设备是以广播的形式发送的,只要是总线上的所有从设备其实都能收到这个信息)。然后总线上的每个从设备都能收到这个地址,并且收到地址后和自己的设备地址比较看是否相等。如果相等说明主设备本次通信就是给我说话,如果不想等说明这次通信与我无关,不用听了不管了。

 

IIC时序 

空闲状态:SDA与SCL总线都处于高电平状态

起始信号时序与结束信号时序

单片机之IIC通信协议「建议收藏」

应答信号时序

单片机之IIC通信协议「建议收藏」

发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平(0)时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平(1)时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 

数据的有效性

单片机之IIC通信协议「建议收藏」

SCL处于高电平期间,SDA的数据不能发生变换;SCL处于低电平期间,SDA的数据才允许发生变换。

对从机的读字节与写字节时序需要按照从机的时序图来写

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133025.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 用getClass()获取对象的类型类

    java 用getClass()获取对象的类型类getClass方法可以获取一个对象的类型类,然后在调用该类的方法可以获取该类的相关信息,比如父类的名字,该类的名字等packagecom.mao.hah;publicclassTestGetClass{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-gener

    2022年6月16日
    44
  • java如何实现换行_网页换行代码

    java如何实现换行_网页换行代码在taxtarea中输入的文本。如果含有回车或空格。在界面上显示的时候则不哪么正常。回车消失了,空格变短了。如何解决这个问题呢。有2种方法。1.使用标签w3c对pre元素是这样定义的:pre元素可定义预格式化的文本。被包围在pre元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。更详细的内容请参考http://www.w3school.com.cn/tags/tag_pre.a…

    2025年6月8日
    3
  • sqlserver数据库置疑修复语句_sql2008数据库可疑解决方法

    sqlserver数据库置疑修复语句_sql2008数据库可疑解决方法SQL数据库修复的三大核心技术:1、磁盘阵列分析重组技术;2、数据库恢复与修复技术;3、SCSI盘物理故障开盘技术。至今已经成功恢复数百台服务器的SQL数据库,用户覆盖全国。导致SQL数据库丢失的原因:1、各种原因:误删除、误格式化、断电等造成的MSSQLSERVER数据库文件破坏。2、MSSQLSERVER数据库丢失了*.ldf文件,只有一个*.MDF文件,将是非

    2022年8月20日
    31
  • NB-IoT、LoRa、RPMA从业者请勿选择性遗忘,你们绕得开监管的“五指山”吗?

    NB-IoT、LoRa、RPMA从业者请勿选择性遗忘,你们绕得开监管的“五指山”吗?

    2022年3月13日
    57
  • PMS权限管理和鉴权过程

    PMS权限管理和鉴权过程一 权限的管理基础知识 系统的权限机制分为 权限解析 权限分配 鉴权 动态添加权限 PermissionIn PackageParse Permission 中包含一个对应的 PermissionIn 权限信息的表示 其中包含权限等级的定义 NORMAL DANGER SIGNERATURE 另外实现了序列化 用户于进程间通信 3 BasePermis

    2025年7月6日
    3
  • JWT详解「建议收藏」

    JWT详解「建议收藏」本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:JWT详解JWT简介1.什么是JWT在介绍JWT之前,我们先来回顾一下利用token进行用户身份验证的流程:客户端使用用户名和密码请求登录服务端收到请求,验证用户名和密码验证成功后,服务端会签发一个token,再把这个token返回给客户端客户端收到token后可以把它存储起来,比如放到cookie中客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带服务端收到请求,然后去验证客户端请

    2022年5月11日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号