STM32下的IIC协议基础(从原理到代码案例)

九.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,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值