深圳门户网站建设案例,河南省住房城乡建设主管部门网站,电商网址,企业管理系统项目源码在将2C通信外设之前#xff0c;我们先捋一捋#xff0c;串口的相关特点来和I2C进行一个对北比。 首先#xff1a; 1,大部分单片机#xff0c;设计的PCB板均带有串口通信的引脚#xff08;也就是通信基本都借助硬件收发器来实现#xff09; 2.对于串口的异步时序#xff…在将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第二步指定要通信的从机 数据收发的核心部分如下图红框中
发送的流程
可以把一个字节写到数据寄存器DR 当移位寄存器没有数据移位时会将数据寄存器中的数据移到移位寄存器中在移位的过程中我们就会把下一个数据写到数据寄存器中。连续循环。当数据寄存器的值移到移位寄存器中时状态寄存器的TXE位为1表示发送寄存器为空
接收的流程
输入的数据一位一位的动引脚移位到移位寄存器里当一个字节的数据收齐以后数据就整体从移位寄存器转到数据寄存器·同时置标志位RXNE,表示接收寄存器非空。这个时候我们就可以把数据从数据寄存器读出来了
至于什么时候收什么时候发
我们就必须借助控制寄存器。起始应答停止均是由控制电路完成。
I2C内部外设结构图 I2C基本结构 主机发送 主机接收