stm32入门-----硬件I2C外设

目录

前言

I2C外设 

1.简介

2.I2C结构

3.主机发送

 4.主机接收

5.软硬件信号波形对比


前言

        前面我们学习过了软件I2C的通讯方式,那么本期我们就来学习stm32中的硬件I2C外设,本期主要是理论部分的内容,下一期就进行关于硬件I2C来取读写MPU6050的项目实践。(视频:[10-4] I2C通信外设_哔哩哔哩_bilibili

I2C外设 

1.简介

  • STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担
  • 支持多主机模型
  • 支持7/10位地址模式
  • 支持不同的通讯速度,标准速度(高达100 kHz),快速(高达400 kHz)
  • 支持DMA
  • 兼容SMBus协议

  • STM32F103C8T6 硬件I2C资源:I2C1I2C2

2.I2C结构

下图是I2C的整体结构图,先看到SDA这部分,不难看出这是一种半双功的通信方式(相较于USART结构框图),这里有一个数据控制寄存器是用来设置选择写入或者读取的操作的,然后看到旁边的数据移位寄存器和数据寄存器DR,这两部分是最主要的,其中进行写入的时候,数据寄存器DR会向移位寄存器从高位到地位放入数据,最后还有一个数据校验计算进行校验放入移位寄存器的数据是否正确。

 简化结构图如下所示(一主多从模型),其中GPIO口对应有两个外设SCL和SDA,如果是多主多从的模式SCL是可以输入输出双方向的,但我们学习的是一主多从,这里就简化为一个输出方向。另外就是SDA对应的GPIO口,在前面我们讲到过I2C通讯是需要用开漏输出模式的,所以对于stm32外设上的I2C就需要用到复用开漏输出模式。

3.主机发送

        下图展示的是I2C外设发送数据的时序图,上面说到过stm32的I2C是有两种的,分别是7位和10位,这里我们主要学习的是7位的发送。下面可以看到7位发送的第一个字节是地址的,然后接收到了应答后就开始发送数据,在发送的时候需要一个起始条件Start进行判断是否发送数据的操作,这里看到下面第二张图。

        对于发送数据的过程中每次发生一个事件后会有一个EV事件判断(其实就是检测状态寄存器SR的情况),发送数据是先把数据放入到数据寄存器DR中,然后数据寄存器DR再把数据放入到移位寄存器,通过移位寄存器去发送,下面的时序图就很好的描述了这一个过程。

 4.主机接收

下面展示的是当前地址读的时序,如果要进行指定地址读的话我们就要进行拼接,就跟之前的一样操作,不过我们这里还是还是主要去看7位的。对于数据的接收,其实就是数据发送的逆操作,收到的数据先是进入到了移位寄存器当中,然后移位寄存器把数据放入到了数据寄存器DR中,其中会每个事件都会有一个EV中断的操作(读取状态CR寄存器)。

5.软硬件信号波形对比

这部分我们稍微看看就行了,对比一下下面两种方式的波形情况。

软件信号波形:

 硬件信号波形:

以上就是本期的全部内容了,我们下次见!

今日壁纸: 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fitz&

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

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

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

打赏作者

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

抵扣说明:

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

余额充值