9.基于STM32CubeMx软件模拟I2C通信

本文介绍了如何使用STM32通过I2C接口对24C02 EEPROM进行分页读写操作的方法。针对24C02存储器的特性,文章详细解释了在写入数据时避免跨页写入的要求,并提供了具体的延时和分段写入示例。此外,还给出了实现I2C通信所需的基本驱动函数。

使用:

		MEM_Write (ReceiveString,0x01,4);
		HAL_Delay (1000);
		MEM_Read (I2CString,0x01,4);
由于24C02分为8Byte为一页,不能连续跨页写数据,如果写的数据大于8比特或者跨页了,应分为多段进行写入。且写入之间要有延时,否则后面的不能写入,如:
uint8_t SendBuf[21]="13981422143139814221";
uint8_t ReceiveBuf[21]="";

	MEM_Write(SendBuf,0x00,8);
	HAL_Delay(100);//延时一定要有。
	MEM_Write(SendBuf+8,0x08,8);
	HAL_Delay (1000);
	MEM_Read(ReceiveBuf,0x00,8);
	HAL_Delay(100);
	MEM_Read(ReceiveBuf+8,0x08,8);
	LCD_DisplayStringLine (Line3,ReceiveBuf);

驱动程序(最后两个自己编写,其余底层驱动官方提供)

#include "i2c.h"

//#define DELAY_TIME	20
#define DELAY_TIME 20

//PB6_SCL
//PB7_SDA
/**
  * @brief SDA线输入模式配置
  * @param None
  * @retval None
  */
void SDA_Input_Mode()
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};

    GPIO_InitStructure.Pin = GPIO_PIN_7;
    GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
    GPIO_InitStructure.Pull = GPIO_PULLUP;
    GPIO_InitStructure.Speed = GPIO_S
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值