【嵌入式学习笔记】---- IIC通信

1 IIC总线协议介绍

IIC:Inter Integreated Circuit,集成电路总线,是一种同步串行半双工通信总线

1.1 IIC物理层

image

  • 接入上拉电阻,确保总线空闲状态为高电平
  • 支持多设备连接,挂载在IIC总线上的外设都有其唯一的地址
  • 挂载在IIC总线上的外设不能无限多,外设挂载在总线上时会产生寄生电容,其总线上的电容不得超过400pf
  • 数据传输速率:①标准模式100k bit/s;②快速模式400k bit/s;③高速模式3.4M bit/s
  • 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线

1.2 IIC协议层

1.2.1 IIC通讯的起始和停止信号

起始信号:当SCL线是高电平时,SDA线从高电平向低电平切换
停止信号:当SCL线是高电平时,SDA线由低电平向高电平切换
image

1.2.2 数据有效性

当SCL为低电平时,SDA的数据无效,一般在这个时候SDA进行电平切换,为下一次表示数据做好准备
image

1.2.3 地址及数据方向

I2C 总线上的每个设备都有自己的独立地址,主机发起通讯时,通过 SDA 信号线发送设备地址(SLAVE_ADDRESS) 来查找从机,紧跟设备地址的一个数据位用来表示数据传输方向,它是数据方向位 (R/)。
数据方向位为“1”时表示主机由从机读数据,此时主机会释放对 SDA 信号线的控制,由从机控制 SDA 信号线,主机接收信号
数据方向位为“0”时表示主机向从机写数据,此时SDA 由主机控制,从机接收信号
image

1.2.4 响应

I2C 的数据和地址传输都带响应。响应包括“应答 (ACK)”“非应答 (NACK)”两种信号

作为数据接收端时,当设备 (无论主从机) 接收到 I2C 传输的一个字节数据或地址后,若希望对方继续发送数据,则需要向对方发送“应答 (ACK)”信号,发送方会继续发送下一个数据

若接收端希望结束数据传输,则向对方发送“非应答 (NACK)”信号,发送方接收到该信号后会产生一个停止信号,结束信号传输

传输时主机产生时钟,在第 9 个时钟时,数据发送端会释放 SDA 的控制权,由数据接收端控制SDA,若 SDA 为高电平,表示非应答信号 (NACK),低电平表示应答信号 (ACK)
image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Luminescence

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值