九.IIC协议通信(***)
文章目录
算是对之前写51总结时对I2C通信的一大留白补充
【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC_stm32硬件iic-CSDN博客
基础通信协议之 IIC (I2C) 详细讲解_i2c通信的详细讲解-CSDN博客
IIC协议的定义是什么,所解决的问题是什么?
IIC的物理层是怎样是怎样实现的
IIC协议层的核心关键是什么?
IIC是一种用于多个集成电路(IC)间的串行总线通信标准,其并不需要过多的外部的外部设备,因此较为流行普遍。
9.2 IIC物理层
物理层指的是实现目标功能最终的物理电路的构成。也就是实现具体通信的电路构成。
其中物理层比较重要的几点:
-
支撑多个主机多个从机相连,但一次通信只能一主一从,当有多个主机同时请求时会采取仲裁方式
-
主机能控制整个通信节奏,从机只是被动应答
-
IIC的总线由两条线路构成:1.双向的串行数据线(SDA),2.用于数据收发同步的时钟线(SCL)
-
具有三种传输速率模式:标准模式传输速率为 100kbit/s ,快速模式为 400kbit/s ,高速模式下可达 3.4Mbit/s,但目前大多 I 2C 设备尚不支持高速模式。也就是说IIC的频率普遍较慢几百k的样子
9.3 IIC协议层
协议层更多的则聚焦于通信双方需要遵循的一种数据格式标准。只有按照这个标准才能进行正常通信。
9.3.2 主从机的读写过程
虚线: 数据流为主机向从机方向。
空白:数据流向由从机流向主机。
SLAVE_ADDRESS: 从机地址。
A/(非)A: 从机是否应答非应答。
P:停止信号传输。
S: 开始传输信号。
-
主机向从机写数据
此时的SDA数据线由主机掌控
通产而言实际的传输格式,即主机发送从机地址后得到应答,主机会再发送一个写入寄存器的地址,并最终将数据写入寄存器
-
主机的数据由从机中读取
此时第二次读取与写入不同的是主机第二次还需要再发起起始位和从机地址,再能从从机地址中读取数据。主机释放SDA控制权,SDA由从机进行控制
9.3.3通讯起止信号与有效数据信号
始终需要注意的是,当SCL高电平时才是数据有效信号,SCL低电平时通常是进行数据切换
另外IIC规定从机地址构成为 7-10位,其中7位地址比较普遍:
9.3.4 从机应答信号
应答信号(ACK或NACK)通常是由数据接收端产生的,主要如下,了解即可
9.4 STM32下的I2C架构特性
学习STM32下的IIC架构特性的目的是什么?
了解学习相关STM32下的IIC的目的在于,更好的进行相关代码编程。IIC直接控制的GPIO引脚为SCL和SDA两个如下所示其核心在于1中的SDA与SCL引脚。这一系列关于IIC通信的设计架构都完成了封装,最终只是通过GPIO引脚显示出来,并进行配置使用即可。
2.时钟控制逻辑: 主要用于控制通讯速率等相关寄存器
3.数据控制器: 主要用于实现数据的传输(数据寄存器),以及从机模式时,设备地址的比较等相关(通过数据移位寄存器和比较器对自身事先设置好的地址进行比较)。
4.整体逻辑控制:负责协调整个IIC外设的或多(起始,停止,响应信号及DMA与中断等)
9.5 具体通讯过程(**)
具体通讯过程十分重要是模拟IIC收发信息的过程,编程主要按照该一系列过程进行代码编写的。其通讯过程主要分为:发送器和接收器两部分。
(1).发送器
此时表示主机端发送数据而从机端接收数据
1.控制产生起始信号,发生事件EV5,