当前位置: 首页 > news >正文

STM32之I2C硬件外设

在这里插入图片描述
在这里插入图片描述
注意:硬件I2C的引脚是固定的
SDA和SCL都是复用到外部引脚。
SDA发送时数据寄存器的数据在数据移位寄存器空闲的状态下进入数据移位寄存器,此时会置状态寄存器的TXE为1,表示发送寄存器为空,然后往数据控制寄存器中一位一位的移送数据。接收时数据控制寄存器中的数据一位一位的从引脚移位到数据移位寄存器中,当一个数据以为完成后就从数据移位寄存器中转移到数据寄存器,同时置RXNE表示接收寄存器非空。自身地址寄存器时STM32作为从机时的地址,比较器会比较主机的发出的地址与自身地址是否匹配,如果匹配就响应主机的召唤。STM32支持同时响应两个主机的召唤,所以有双低地址寄存器。PEC是用来数据校验的模块,执行CRC数据校算。

SCL的时钟控制是用来控制SCL的,时钟控制寄存器写对应的位,电路就会启用对应的功能,控制逻辑电路写入控制寄存器可以对电路进行控制,读取状态寄存器,可以读取电路的状态。
在这里插入图片描述
注意:使用I2C的时候,两个GPIO口都要配置成复用开漏输出的模式。此时是片上外设控制引脚电平。在这里插入图片描述
图中线路对应SDA的GPIO的连个箭头。分别对应输出和输入。

硬件I2C的操作流程:

在这里插入图片描述
7位主发送:
1.产生开始条件
2.EV5标志位,表示起始条件已发送,发送从机地址,然后等待从机应答A,如果没有应答就会产生中断
3.EV6事件:表示地址发送结束
4.EV8_1事件:准备好发送
5.EV8事件:表示可以写入下一个数据
6.EV8_2:表示数据发送完,可以产生终止条件在这里插入图片描述
7位主接收:
1.EV5:起始条件已经发送
2.寻址接收应答A
3.EV6:代表寻址已完成
4.EV6_1:表示数据正在移位
5.EV7:表示收到一个字节的数据
6.EV7_1:表示想要结束

相关文章:

  • Python应用程序健康检查与监控系统的实现
  • Red Hat Enterprise Linux 8.10 正式版
  • elasticsearch商业产品
  • Jmeter使用介绍
  • live555推流服务器异常
  • CAN协议介绍
  • 图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image
  • WebRTC简介
  • JavaJDBC与数据库及底层实现拓展
  • 简洁实用的3个免费wordpress主题
  • 微前端框架 Qiankun 的应用及问题分析
  • CUDA计时函数:精确测量GPU代码执行时间
  • 从零开始用HTML、CSS和JavaScript制作贪吃蛇网页小游戏
  • 责任链模式+策略模式在项目中的实践
  • PostgreSQL 如何有效地处理数据的加密和解密
  • rom定制系列------小米note3 原生安卓15 批量线刷 默认开启usb功能选项 插电自启等
  • Python组合数据类型(一)
  • SyntaxError: Unexpected end of input
  • DeepSeek + 沉浸式翻译 打造智能翻译助手
  • RAG系统(检索增强生成)的优化策略
  • 廊坊网站群建设/网站制作费用多少
  • 库易网网站/谷歌浏览器app下载安装
  • 做动态图网站/网络推广公司简介模板
  • html5 微网站模版/百度检索入口
  • 百度有没有做游戏下载网站/适合小学生的最新新闻
  • 做动画视频的网站/公司网站设计模板