备赛电赛学习STM32(十三):I2C通信

本文详细介绍了STM32单片机如何实现I2C通信,包括一主多从的硬件电路设计和软件时序实现。硬件部分涉及SDA和SCL线的控制及电路设计,软件部分讲解了起始和终止条件、发送与接收字节、应答机制等。此外,还介绍了I2C完整时序,包括按地址写、当前地址读和指定地址读的操作流程。
摘要由CSDN通过智能技术生成

目录

一、简单了解

二、如何实现功能

2.1、硬件电路(一主多从)

2.2、软件部分

2.2.1、I2C时序基本单元

2.2.2、发送一个字节

2.2.3、接收一个字节

2.2.4、应答机制

2.3、I2C完整时序

2.3.1、按地址写

2.3.2、当前地址读

2.3.3、指定地址读


一、简单了解

  •  异步时序的好处就是省一根时钟线、节省资源缺点是对硬件电路的依赖性比较严重
  •  同步时序的好处是对时间要求不严格,对硬件电路依赖性低,在一些低端单片机,没有硬件资源的情况下,也很容易使用软件来模拟时序,缺点是多一根时钟线
  • SCL数据线满足要使用同步的时序,降低对硬件的依赖,同时同步的时序稳定性也比异步时序更高
  • 只有一根SDA数据线,变全双工为半双工,一根线兼具发送和接收,最大化利用资源
  • 支持总线挂载多设备
  • 一主多从(绝大数):单片机作为主机,主导I2C的运行,挂载在I2C总线上的所有外部模块都是丛机,丛机只有被主机点名之后才能控制I2C总线,不能在未经允许的情况下去碰I2C总线,防止冲突
  • 多主多从:在总线上任何一个模型都成为主机,但是,同一时间只有一个主机,在此模式下,还要进行时钟同步

二、如何实现功能

2.1、硬件电路(一主多从)

  •  左边CPU就是我们的单片机,作为总线的主机,主机的权利很大,包括对SCL线的完全控制,任何时候都是主机完全掌握SCL线,另外在空闲状态下,主机可以主动发起对SDA的控制,只有在丛机发送数据和丛机应答的时候主机才会转交SDA的控制权给丛机
  • 下面的模块是从机,对于SCL时钟线,在任何时候都只能被动的读取,丛机不被允许控制SCL线,对于SDA数据线,丛机不被允许主动发起对SDA的控制,只有在主机发读取丛机的命令或者丛机应答的时候丛机才能短暂取得SDA的控制权
  • 因为主机拥有SCL的绝对控制权,所以主机的SCL可以配置成推挽输出,所有丛机的SCL都配置成浮空输入或者上拉输入,数据流向是,主机发送,所有所有丛机接收。
  • 在SDA这条线上,因为主机和丛机都会有输入输出的情况,为了避免短路的情况发生,I2C的设计是禁止所有设备输出强上拉的高电平,采用外置弱上拉电阻加开漏输出的电路结构,这样的电路结构好处:1、避免出现短路的情况。2、避免引脚模式的频繁切换,开漏加弱上拉的模式同时兼具了输入和输出的功能,如果想要输出,就让引脚处于浮空或下拉状态对应高低电平要是输入直接观察总线电平的高低。3、这个模式会有线于,只要有任意一个或多个设备输出了低电平总线就处于低电平,只有所有设备都输出高电平总线才处于高电平

2.2、软件部分

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

橘子ゆ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值