I2C通信 江科大stm32

江科大32--I2C通信协议

项目要求:

单片机读写外部模块寄存器

1.在指定位置写寄存器 在指定位置读寄存器

2.仅用一根线实现接收 发送--SDA

3.应答机制

4.一根线接多个模块

5.同步时序--SCL

I2C通信:

MPU6050 OLED DS3231….都支持I2C

通信线:SCL SDA

多主多从:统一通信协议

硬件规定:

开漏输出 上拉电阻

被控模块可以为MPU6050 OLED …

SCL:任何时刻都是主机控制SCL,只能被动读取

SDA:从机不允许主动发起对SDA的控制,只有在从机应答/主机发送读取从机命令时,从机可以获得SDA的数据权

配置输入输出模式:均为开漏输出模式  输入无所谓

软件规定

起始条件 终止条件 --只能有主机发出

第一个字节必须由主机发送

所有设备--输入模式

主机发送--主动拉低SDA

主机接收--释放SDA,避免影响别人发送,总线是线与模式(只要有一个人低电平,总线就是低电平),如果接收时仍在拉低SDA,影响发送

发送——0 主机放;1 从机读

接收——0 从机放;1主机读

低电平变换数据,高电平读取数据

应答机制——发送/接收

在主机发送后,立刻调用接收应答,判断从机是否收到数据

在主机接收后,立刻调用发送应答,告诉从机:主机收到数据

完整时序

包含:指定地址写 当前地址读 指定地址读 (7位/10位)

板子引脚可以改变设备地址的低位

1.指定地址写:xxx设备中的xxx寄存器写入xxx数据

第一个字节-设备 第二个字节-寄存器 第三个字节-数据

第一个字节:

前七位:说明是哪个外设;

最后一位:0-之后的时序主机要进行的操作

1-之后的时序主机要进行的操作

2.当前地址读:在xxx设备的xxx寄存器读取xxx数据

第一个字节-设备 第二个字节-寄存器

3.指定地址读:即指定地址写+当前地址读

时序图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值