
I2C
启动条件:SCL线保持高电平,SDA线出现一个下降沿。 数据传输:在启动和终止条件之间,数据可以是任意高低电平的组合。每个字节包含8位数据,按高位优先的顺序传输,每个字节后都会有一个响应位。 ACK信号:主器件在接收每个字节后会产生一个时钟应答脉冲。在这个脉冲期间,发送器必须确保SDA线保持高电平,接收器会将SDA线拉低,发送ACK信号。 NOT ACK信号:当主器件作为接收器时,如果没有接收到最后一个字节,它不会发送ACK信号,即SDA线保持高电平。 SCL线转为低电平,SDA线保持高电平。 SCL线回到高电平,SDA线变为低电平,结束读取循环。 如果SDA线在SCL线低电平时变为高电平,表示应答成功。 如果SDA线保持低电平,表示没有应答。
发布日期:2021-05-07 23:11:48
浏览次数:31
分类:精选文章
本文共 780 字,大约阅读时间需要 2 分钟。
I2C总线是一种常见的同步串行总线协议,广泛应用于微控制器和各种外设之间的通信。它由两条线组成:SCL(串行时钟线)和SDA(串行数据线)。每个连接到总线上的器件都可以通过唯一的地址被软件识别,并建立简单的主从关系。主器件通常是发送器或接收器。
I2C总线支持真正的多主模式,通过竞争检测和仲裁电路实现多个设备同时发送的功能。这意味着总线上的数据不会因为多个设备同时发送而受到影响。SCL时钟线允许连接的设备以不同的波特率进行通信。此外,SCL时钟线还可以用作串行口发送的握手方式,用于启动和停止通信。
I2C总线的通信方式如下:
读取应答函数用于检测ACK或NOT ACK信号。具体步骤如下:
I2C总线的地址确定机制是通过SDA线的7位地址位和一个方向位(第8位)来实现的。主器件发送的第一个字节包含目标器件的地址和方向位(0表示写,1表示读)。连接的器件会通过比较地址位来确定目标器件,并根据方向位决定是读取还是写入数据。
总之,I2C总线是一种灵活且高效的通信总线协议,广泛应用于多种嵌入式系统中。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月07日 19时29分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
android:使用audiotrack 类播放wav文件
2019-03-05
聊聊我的五一小假期
2019-03-05
数据库三个级别封锁协议
2019-03-05
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
2019-03-05
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2019-03-05
SLAM学习笔记-求解视觉SLAM问题
2019-03-05
程序员应该知道的97件事
2019-03-05
create-react-app路由的实现原理
2019-03-05
openstack安装(九)网络服务的安装--控制节点
2019-03-05
shell编程(六)语言编码规范之(变量)
2019-03-05
vimscript学习笔记(二)预备知识
2019-03-05
Android数据库
2019-03-05
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
2019-03-05
STM8 GPIO模式
2019-03-05
23种设计模式一:单例模式
2019-03-05
Qt中的析构函数
2019-03-05
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
2019-03-05
【单片机开发】智能小车工程(经验总结)
2019-03-05