STM32_IIC

STM32_IIC

一.介绍

1.1 IIC总线协议介绍

IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。

1.2 IIC结构图

1.3 IIC协议

IIC协议时序:

信号类型

SCL

SDA

起始信号

高电平

由高向低

停止信号

高电平

由低向高

应答信号

高电平

低电平

起始和停止信号:

应答和非应答信号:

发送数据:

二.AT24C02介绍

EEPROM是一种掉电后数据不丢失的储存器,常用来存储一些配置信息,在系统重新上电时就可以加载。

AT24C02是一个2K bit的EEPROM存储器,使用IIC通信方式。

A0/1/2 : 设备地址决定引脚

SCL : 时钟线

WP : 写保护引脚

SDA : 数据线

AT24Cxx

容量(bit)

页数

页内字节数

数据地址(占用bit数)

AT24C01

1K bit (128 B)

16

8 Byte

7bit

AT24C02

2K bit (256 B)

32

8 Byte

8bit

AT24C04

4K bit (512 B)

32

16 Byte

9bit

AT24C08

8K bit (1024 B)

64

16 Byte

10bit

AT24C16

16K bit (2048 B)

128

16 Byte

11bit

AT24C32

32K bit (4096 B)

128

32 Byte

12bit

AT24C64

64K bit (8192 B)

256

32 Byte

13bit

AT24C128

128K bit (16384 B)

256

64 Byte

14bit

AT24C256

256K bit (32768 B)

512

64 Byte

15bit

AT24C512

512K bit (65535 B)

512

128 Byte

16bit

AT24C02通讯地址:

三.AT24C02的读写和驱动

3.1 AT24C02的读写

写操作:

  • T24C02支持字节写模式和页写模式。

  • 字节写模式就是一个地址一个数据进行写入。

  • 页写模式就是连续写入数据。只需要写一个地址,连续写入数据时地址会自增,但存在页的限制,超出一页时,超出数据覆盖原先写入的数据。但读会自动翻页。

读操作:

  • AT24C02支持当前地址读模式,随机地址读模式和顺序读模式。

  • 当前读模式是基于上一次读/写操作的最后位置继续读出数据。

  • 随机地址读模式是指定地址读出数据。

  • 顺序读模式是连续读出数据。

3.2AT24C02驱动步骤

3.2.1软硬件比较

IIC

用法

速度

稳定性

管脚

硬件IIC

比较复杂

较稳定

需使用特定管脚

软件IIC

操作过程比较清晰

较慢

稳定

任意管脚,比较灵活

分类

AT24C02****模块引脚

供电脚(3.3V)

时钟线(SCL)

数据线(SDA)

地(GND)

MINI板

VCC

PC12

PC11

GND

精英板

VCC

PB6

PB7

GND

战舰板

VCC

PB6

PB7

GND

探索板

VCC

PB8

PB9

GND

阿波罗

VCC

PH4

PH5

GND

北极星

VCC

PH4

PH5

GND

MINIPro H750

VCC

PB10

PB11

GND

四.IIC相关库函数

IIC写函数:

函数:HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);

功能:IIC写数据

参数:

  • *hi2c 设置使用的是那个IIC 例:&hi2c2

  • DevAddress 写入的地址 设置写入数据的地址 例 0xA0

  • *pData 需要写入的数据

  • Size 要发送的字节数

  • Timeout 最大传输时间,超过传输时间将自动退出传输函数

IIC读函数

函数:HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);

功能:IIC读一个字节

参数:

  • *hi2c: 设置使用的是那个IIC 例:&hi2c2

  • DevAddress: 写入的地址 设置写入数据的地址 例 0xA0

  • *pDat:a 存储读取到的数据

  • Size: 发送的字节数

  • Timeout: 最大读取时间,超过时间将自动退出读取函数

IIC写数据函数

函数:HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);

功能: IIC写多个数据 该函数适用于IIC外设里面还有子地址寄存器的设备,比方说E2PROM,除了设备地址,每个存储字节都有其对应的地址

参数:

  • *hi2c: I2C设备号指针,设置使用的是那个IIC 例:&hi2c2

  • DevAddress: 从设备地址 从设备的IIC地址 例E2PROM的设备地址 0xA0

  • MemAddress: 从机寄存器地址 ,每写入一个字节数据,地址就会自动+1

  • MemAddSize: 从机寄存器地址字节长度 8位或16位

  • 写入数据的字节类型 8位还是16位

  • I2C_MEMADD_SIZE_8BIT

  • I2C_MEMADD_SIZE_16BIT

  • 在stm32f1xx_hal_i2c.h中有定义

  • *pData: 需要写入的的数据的起始地址

  • Size: 传输数据的大小 多少个字节

  • Timeout: 最大读取时间,超过时间将自动退出函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值