IIC通信

IIC通信是一种同步半双工带数据应答的通信协议

可支持总线挂载多个设备

IIC时序

起始条件 在SCL高电平期间 SDA从高电平拉低到低电平

终止条件 SCL在高电平期间 SDA从低电平切换为高电平

发送一个字节 在SCL低电平期间 主机将数据的一位放到SDA线上(高位先行) 从机在高电平期间读取数据 在SCL高电平期间SDA不允许发生变化 一次循环8次即可发送完整的一个字节

接受一个字节 在SCL低电平期间 从机将数据的一位放到SDA线上(高位先行)主机在高电平期间读取数据 SCL在高电平期间不允许SDA变化 循环8次即可接受一个字节 在接受数据之前主机需要释放SDA 

发送应答 主机在接受完一个字节之后 在下一个时钟发送一位数据 0表示应答 1表示非应答

接受应答 主机在发送完一个字节之后 在下一个时钟接受一位数据 判断从机是否应答 0表示应答 1表示非应答 主机在接受应答位之前 需要释放SDA

指定地址写  首先产生起始条件 然后主机发送指定设备的7位地址 第八位数据表示读还是写 0表示写 1表示读 然后接受从机的应答 如果有应答 接下来就需要发送需要写入的地址 发送完成等待从机应答 然后就是需要写入的数据  如果需要写入多个数据 直接重复发送即可 地址指针会自动加加

当前地址读 首先产生起始条件 然后主机发送需要通信设备的7位地址 第八位数据为1表示读操作 等待从机应答过后就可以读取从机当前指针所指向地址下的数据 如果需要读取多个数据 在读取完第一个数据过后给从机发送应答 从机在接受大应答过后就会继续发送下一个地址下的数据 当不需要接收是 只需给从机非应答即可结束通信

制定地址读 首先产生起始条件 然后主机发送需要通信从机设备的7位地址 第八位数据为0表示写操作 等待从机应答过后 再发送需要读取的地址 从机应答过后 在SCL高电平期间 拉低SDA产生重复起始条件 然后继续发送从机地址加0 这时候从机的指针就会指向我们想要读取的地址 直接读取数据即可 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值