stm32 I2C通信外设(硬件I2C读写MPU6050)

理论

1.I2C外设简介

STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担

支持多主机模型

支持7位/10位地址模式

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

支持DMA

兼容SMBus协议

STM32F103C8T6

硬件I2C资源:I2C1、I2C2

2.I2C框图

与串口通信的工作原理一样

TXE(Transmit Data Register Empty)

  • 功能:TXE标志位指示发送数据寄存器是否为空,意味着发送缓冲区可以接受新的数据进行发送。
  • 状态解释
    • TXE = 1:发送数据寄存器为空,可以将新的数据写入数据寄存器进行发送。
    • TXE = 0:发送数据寄存器仍在发送数据,不能接受新的数据。

使用场景

  • 在发送数据时,程序通常会检查TXE标志位,以确保在尝试写入数据寄存器之前,寄存器处于空状态。这样可以避免数据丢失或覆盖。

RXNE(Receive Data Register Not Empty)

  • 功能:RXNE标志位指示接收数据寄存器中是否有接收到的数据,意味着有数据可供读取。
  • 状态解释
    • RXNE = 1:接收数据寄存器中有数据,数据可以被读取。
    • RXNE = 0:接收数据寄存器为空,没有接收到新的数据。

使用场景

  • 在接收数据时,程序通常会检查RXNE标志位,以确保在尝试读取数据寄存器之前,寄存器中有有效的数据。这样可以避免读取无效或过时的数据。

实际操作示例

发送数据的过程:
  1. 检查TXE标志位
    • 在向数据寄存器写入数据之前,检查TXE标志位是否为1,确认数据寄存器为空。
  2. 写入数据
    • 如果TXE标志位为1,写入数据到数据寄存器(通常是USART_DR寄存器)。
  3. 等待发送完成
    • 数据写入后,TXE标志位会被清除(变为0),发送完成后标志位会重新置为1。
接收数据的过程:
  1. 检查RXNE标志位
    • 在从数据寄存器读取数据之前,检查RXNE标志位是否为1,确认接收数据寄存器中有数据。
  2. 读取数据
    • 如果RXNE标志位为1,从数据寄存器(通常是USART_DR寄存器)读取接收到的数据。
  3. 处理数据
    • 数据被读取后,RXNE标志位会被清除(变为0),接收数据寄存器会准备好接收新的数据。

总结

  • TXE:用于指示发送数据寄存器是否准备好接收新的数据进行发送。
  • RXNE:用于指示接收数据寄存器是否有新接收的数据可供读取。

3.I2C基本结构

4.主机发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值