I2C通信外设简介

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

I2C框图

SDA部分:数据收发的核心部分是数据寄存器和数据移位寄存器,

当需要发送数据时,把一个字节数据写到数据寄存器DR,当移位寄存器没有数据移位时,数据寄存器的值就会进一步转到移位寄存器,在移位过程中,就可以把下一个数据放到数据寄存器里等待,当前一个数据移位完成,下一个数据无缝连接,继续发送;当数据由数据寄存器转到移位寄存器时,会置状态寄存器的TXE为1,表示发送寄存器为空;接收时,输入的数据一位一位的从引脚移入到移位寄存器里,当一个字节的数据收齐之后,数据就整体从移位寄存器转到数据寄存器,同时置标志位RXNE,表示接收寄存器非空,就可以从数据寄存器读出数据

比较器和地址寄存器是从机模式下使用,STM32不进行通信时,就是从机,那么由自身地址寄存器指定从机地址,且支持同时响应两个从机地址

帧错误校验计算:这是stm32设计的一个数据校验模块,当发生一个多字节的数据帧时,硬件可以自动执行CRC(数据校验算法)校验计算

SCL部分:时钟控制SCL线,在时钟控制寄存器写对应的位,电路会执行对应的功能。

I2C基本结构

数据寄存器和移位寄存器是通信的核心部分,使用硬件I2C时,需要将GPIO配置成复用开漏输出的模式,GPIO的状态交由片上外设来进行控制

 

 主机发送

 主机接收

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

¥sunrise

来自大牛的认可,是我梦寐以求的

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

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

打赏作者

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

抵扣说明:

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

余额充值