前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单片机之IIC通信协议「建议收藏」

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

作者头像
全栈程序员站长
发布于 2022-06-27 13:30:09
发布于 2022-06-27 13:30:09
1.1K0
举报

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

概念

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

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总线都处于高电平状态

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

应答信号时序

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

数据的有效性

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念
  • IIC传输特点
  • IIC时序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档