【STM32G4】备战蓝桥杯嵌入式---模块配置---I2C

文章目录

  • 前言
  • I2C
    • 1.原理图以及配置元素
    • 2.Cubemx实现IO的配置
    • 3.生成工程
  • 总结


前言

前面我们配置了LCD显示模块,本节我们学习配置iic模块对于EEPROM的通信。

I2C

1.原理图以及配置元素

【STM32G4】备战蓝桥杯嵌入式---模块配置---I2C_第1张图片

分析:
由PB6、PB7IO口实现iic通信

2.Cubemx实现IO的配置

IO配置如下:
PB6、PB7为输出模式(其他参数均可不做修改)
【STM32G4】备战蓝桥杯嵌入式---模块配置---I2C_第2张图片

3.生成工程

工程生成方法上节以及说明了┗|`O′|┛ 嗷~~
本例程,我们仍将代码放在function文件中

注:官方会提供i2c的驱动代码,大家添加到自己的工程即可。

我们先在function中写iic的读函数和写函数嗷
【STM32G4】备战蓝桥杯嵌入式---模块配置---I2C_第3张图片

void IIC_Write(uint8_t address, uint8_t data)
{
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	
	I2CSendByte(address);
	I2CWaitAck();
	I2CSendByte(data);
	I2CWaitAck();
	I2CStop();
}
uint8_t IIC_Read(uint8_t address)
{
	uint16_t data;
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	
	I2CSendByte(address);
	I2CWaitAck();
	
	I2CStart();
	I2CSendByte(0xA1);
	I2CWaitAck();
	data = I2CReceiveByte();
	I2CSendNotAck();
	I2CStop();
	
	return data;
}

iic测试代码如下:

【STM32G4】备战蓝桥杯嵌入式---模块配置---I2C_第4张图片

代码如下:

	aa = 14;
	bb = 13;
	IIC_Write(0xA3,bb);HAL_Delay(10);
	IIC_Write(0xA4,aa);HAL_Delay(10);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
	aa = IIC_Read(0xA3);HAL_Delay(10);
	bb = IIC_Read(0xA4);HAL_Delay(10);
	if(aa == 13 && bb == 14)
	{
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8                   |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12,GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
	}

总结

以上就是iic的配置以及测试代码。

骚年、点个赞再走吧!

在这里插入图片描述

你可能感兴趣的:(stm32,单片机)