【江科大】STM32:I2C通信外设(硬件)

在将2C通信外设之前,我们先捋一捋,串口的相关特点来和I2C进行一个对北比。

首先:

1,大部分单片机,设计的PCB板均带有串口通信的引脚(也就是通信基本都借助硬件收发器来实现)

2.对于串口的异步时序,软件实现起来就异常麻烦。硬件实现非常简单。所以串口的实现基本就全倒向了硬件。

右边的图片中的串口时序就可以看出来软件模拟的复杂性

其次:II2C是同步时序,软件实现简单灵活,(在前面讲过的I2C时序,明显就简单的多)

硬件实现,相比之下,去并不能让人完全省心。

所以I2c的实现,软件模拟的情况是非常多的.

但是考虑到硬件I2C也有很多独有的优势,比如执行效率比较高,可以节省软件资源。

功能比较强大,可以实现完整的多主机通信模型,时序波形规整,通信速率快等等。

所以硬件I2C也有相应的应用场景。
现在我们就来学习一下关于I2C通信外设。也就是硬件实现I2C通信。

硬件资源:STM32内部的I2C外设

4.支持不同的通讯速度,标准速度(高达100kHz),快速(高达400kHz)

5.支持DMA(多字节传输,可以提高传输效率)

6.兼容SMBust协议(了解即可)

7.STM32F103C8T6硬件2C资源:I2C1、I2C2(硬件资源有限,软件就无限了)

硬件2C的引脚都是固定在对应的引脚上。(参考引脚定义表)

这里提一句,STM32参考手册中2C描述的多主机模型,如果对12C没学过基本是看不懂的。

只有先简单的学习过一主多从模型,再去看手册才比较容易理解。

STM32的硬件12C采用的就是多主机模型中的可变多主机,所以就必须按照该模型进行操作

当需要通信的时候,

1.第一步要将该从机先跳出来,变成主机。

2第二步指定要通信的从机

数据收发的核心部分:如下图红框中

发送的流程:

  1. 可以把一个字节写到数据寄存器DR
  2. 当移位寄存器没有数据移位时,会将数据寄存器中的数据移到移位寄存器中
  3. 在移位的过程中,我们就会把下一个数据写到数据寄存器中。
  4. 连续循环。
  5. 当数据寄存器的值移到移位寄存器中时,状态寄存器的TXE位为1,表示发送寄存器为空

接收的流程:

  1. 输入的数据一位一位的动引脚移位到移位寄存器里
  2. 当一个字节的数据收齐以后,数据就整体从移位寄存器转到数据寄存器·
  3. 同时置标志位RXNE,表示接收寄存器非空。
  4. 这个时候我们就可以把数据从数据寄存器读出来了

至于什么时候收,什么时候发?

我们就必须借助控制寄存器。起始,应答,停止,均是由控制电路完成。

I2C内部外设结构图

I2C基本结构

主机发送





主机接收

相关推荐
天天爱吃肉82184 分钟前
新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
android·python·嵌入式硬件·汽车
章鱼哥嵌入式开发9 分钟前
# STM32F103 SD卡读写程序
stm32·单片机
广药门徒1 小时前
定时器时钟来源可以从输入捕获引脚输入
单片机·嵌入式硬件
爱睡觉的王宇昊5 小时前
二、【ESP32开发全栈指南:ESP32 GPIO深度使用】
单片机·嵌入式硬件
学生哥-_-11 小时前
STM32通过KEIL pack包轻松移植LVGL,并学会使用GUI guider
stm32·lvgl·tftlcd·gui guider·gt911
三三十二11 小时前
STM32实战:数字音频播放器开发指南
stm32·单片机·嵌入式硬件
想搞嵌入式的小白13 小时前
STM32外设问题总结
单片机·嵌入式硬件
让子弹飞0214 小时前
35.成功解决编写关于“江协科技”编写技巧第二期标志位积累的问题
stm32·按键
木子单片机15 小时前
基于STM32语音识别柔光台灯
stm32·单片机·嵌入式硬件·proteus·语音识别·keil
广药门徒15 小时前
澄清 STM32 NVIC 中断优先级
单片机·嵌入式硬件