单片机之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的数据才允许发生变换。

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 什么是线程死锁以及如何避免死锁「建议收藏」

    什么是线程死锁以及如何避免死锁「建议收藏」认识线程死锁多个线程同时被阻塞,他们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止,最终导致死锁产生。如下图所示,线程A持有资源2,线程B持有资源1,他们同时都想申请对方的资源,所以这两个线程就会因互相等待而进入死锁状态。线程死锁示意图下面通过一个例子来说明线程死锁,代码模拟了上图的死…

  • 几个常用快速无损压缩算法性能比较

    几个常用快速无损压缩算法性能比较

  • 2011年1月31日nod32id,nod32免费激活码_NOD32用户名密码

    2011年1月31日nod32id,nod32免费激活码_NOD32用户名密码
    用户名:EAV-40746393密码:f77rk82e7n(适用类型ESS/EAV)

    用户名:EAV-40746397密码:uj7javkt8c(适用类型ESS/EAV)

    用户名:EAV-40899369密码:bsfrudfene(适用类型ESS/EAV)

    用户名:EAV-40898530密码:mpju75r5u7(适用类型ESS/EAV)

    用户名:EAV-40746391密码:aj7urdnr6

  • Maven压缩插件YUI Compressor使用介绍

    Maven压缩插件YUI Compressor使用介绍简介这篇文章主要介绍了Maven压缩插件YUICompressor使用介绍以及相关的经验技巧,文章约18810字,浏览量165,点赞数5,值得参考!使用这个插件主要有两个作用:减少资源文件体积,提高移动端页面加载速度。对关键的前端代码进行一定的代码混淆,保护知识产权。使用说明:使用YUICompressor压缩JS和CSS。需要Maven2.0及以上工程。默认情…

  • @Android属性动画完全解析

    @Android属性动画完全解析转载:http://blog.csdn.net/guolin_blog/article/details/43536355在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始

  • 微信自动回复机器人使用教程[通俗易懂]

    微信自动回复机器人使用教程[通俗易懂]第一步,打开软件,选择关键词回复一栏第二步:单击鼠标右键选择添加一个词,设置好关键词,回复词,选择回复到哪个微信群即可。第三步:测试一下效果第四步:操作就是这么简单,效果很明显。完美通过…

发表回复

您的电子邮箱地址不会被公开。

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