STM32 IIC协议

本文代码使用 HAL 库。

文章目录

前言

从这篇文章开始为大家介绍一些通信协议,包括 UART,SPI,IIC等。

UART串口通讯协议
SPI通信协议


一、什么是IIC协议

  1. IIC协议概念:

IIC 协议是由 SDA 数据线 和 SCL时钟线 组成的串行总线,可以发送接收数据,采用半双工的通信方式。每个挂在总线上的器件都有唯一的地址,通常一个主机多个从机。

  • 数据线 :完成数据的收发
  • 时钟线:完成数据的同步传输。

位速在标准模式下可达 100kbits/s, 在快速模式下可达 400kbits/s, 在高速模式下可达 3.4Mbits/s.

  1. IIC 系统结构:

    (1). 在一个芯片内部,有一个或者多个 IIC控制器(主机)。
    (2). 在一个 IIC 控制器上,可以连接一个或多个 IIC设备(从机)。
    (3). IIC 总线只需要 2 根线:时钟线 SCL, 数据线 SDA。
    (4). 在 IIC总线的SCL,SDA 上都有上拉电阻。
    (5). 时钟线只能由主机产生,作用给从机,从而完成数据的收发同步。

二、IIC信号

IIC协议中数据的传输单位是字节。要用到 9 个时钟。前 8 个时钟用来传输数据,第 9 个时钟用来传输信号。传输数据时,先传输最高位

  1. 空闲状态
    当总线上的SDA 和 SCL 两条信号线同时处于高电平时,便于空闲状态。当不传输数据时,SDA和SCL就会被上拉电阻拉高,便进入了空闲状态。
  2. 开启信号
    当SCL为高电平期间,SDA由高变低的跳变;便是总线的起始信号,只能由主机发起,且在空闲状态下才可以启动。
  3. 停止信号
    当 SCL为高电平期间,SDA 由低到高的跳变,便是总线的停止信号,表示数据已经传输完成。
  4. 响应信号
    接收器在接收到 8 位数据后,在第 9个周期,拉低 SDA。当接收方接收该字节成功,便会输出一个 ACK应答信号。

当SDA 为高电平,表示为非应答信号 NACK当 SDA为低电平,表示为应答信号 ACK

三、IIC协议的通讯时序

IIC总线上的设备可以 发送/接收 数据。

1. 写操作

流程如下:

- 主芯片要发送一个起始信号 start 。
- 然后主设备发送一个设备地址(用来确定是往哪个从机写数据),方向(0表示读,1表示写)。
- 从设备回应(用来确定从设备是否存在),然后就可以传输数据。
- 主设备发送一个字节的数据给从设备,等待回应。
- 每传输一字节数据,接收方都要有一个回应信号(用来确定数据是否接收完成),然后再传输下一个数据。
- 数据传输完成后,主芯片就会发送一个停止信号。

2. 读操作

流程操作:

- 主设备发送一个起始信号。
- 主设备发出一个从设备地址(用来确定从哪个设备读数据),方向(0表示写,1表示读)。
- 从设备回应(用来确定从设备是否存在),然后就可以传输数据。
- 从设备发送一字节数据给主设备,等待回应。
- 每传输一字节数据,接收方要有一个回应信号(用来确定数据是否接收成功),然后再传输下一个数据。
- 数据发送完成后,主设备会发送一个停止信号。

四、上拉电阻作用

  1. IIC 总线的SCL,SDA 上都有上拉电阻。外接2个上拉电阻的作用:当总线处于空闲状态时,总线为高电平状态

  2. 问 :SCL 为何要使用上拉电阻?

答 :在第 9 个时钟后,如果有某一方设备需要更多的时间来处理数据,它可以一直驱动三极管把 SCL 拉低。当 SCL为低电平时,其他设备都不使用 IIC总线;只有当 SCL从低电平变为高电平的时候,IIC总线才能够被使用。

当该设备处理数据完毕,就绪时,就不再驱动三极管。这时上拉电阻把SCL变为高电平,其他设备就可以继续使用 IIC总线了。


总结

下一篇文章为大家介绍 SPI 和 UART 通信协议。

相关推荐
东胜物联10 分钟前
探寻5G工业网关市场,5G工业网关品牌解析
人工智能·嵌入式硬件·5g
stm32发烧友13 分钟前
基于STM32的智能家居环境监测系统设计
stm32·嵌入式硬件·智能家居
hairenjing11238 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
模拟IC攻城狮10 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生10 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨10 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生11 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
u01015265812 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习
海绵波波10713 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫13 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节