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


前言

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

I2C

1.原理图以及配置元素

在这里插入图片描述

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

2.Cubemx实现IO的配置

IO配置如下:
PB6、PB7为输出模式(其他参数均可不做修改)
在这里插入图片描述

3.生成工程

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

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

我们先在function中写iic的读函数和写函数嗷
在这里插入图片描述

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测试代码如下:

在这里插入图片描述

代码如下:

	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的配置以及测试代码。

骚年、点个赞再走吧!

在这里插入图片描述

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值