0
点赞
收藏
分享

微信扫一扫

MongoDB数据库详解:特点、架构与应用场景

一、什么是IIC?24C02存储器有什么用?

IIC (IIC 是半双工通信总线。半双工意味着数据在某一时刻只能沿一个方向传输,即发送数据的时候不能接收数据,接收数据的时候不能发送数据)即集成电路总线(Inter-Integrated Circuit),是一种多主机的串行通信总线.它由飞利浦公司在 20 世纪 80 年代开发,主要用于连接微控制器及其外围设备。IIC 总线具有简单、高效、支持多设备连接等特点,在电子电路设计中被广泛应用。

“一主多从” 是一种通信架构模式。在这种模式中,有一个主要的设备(称为主设备),它具有控制和发起通信的能力;同时有多个从属设备(称为从设备),它们被动地响应主设备的指令,与主设备进行数据交互。

EEPROM(AT24C02)存储器(掉电后数据不丢失)

        如上图E1E2E3都接地,所以读为10100001,写为10100000。

二、使用步骤(在LED显示上电次数)

虽然给的函数中开启了PB6,PB7,但是最好在CUBE中开启一下

在main中添加头文件并初始化

/* USER CODE BEGIN Includes */
#include "headfile.h"
#include "i2c_hal.h"
/* USER CODE END Includes */




/* USER CODE BEGIN 2 */
    I2CInit();
  /* USER CODE END 2 */

在i2c_hal.c添加读写函数

void MEM_Read(uint8_t*pucBuf,uint8_t ucAddr,uint8_t ucNum)//文件读
{
    I2CStart();
	I2CSendByte(0xa0);
    I2CWaitAck();
	
	I2CSendByte(ucAddr);
	I2CWaitAck();
	
	I2CStart();
	I2CSendByte(0xa1);
	I2CWaitAck();
	
	while(ucNum--)
	{
	*pucBuf++=I2CReceiveByte();
		if(ucNum)
	I2CSendAck();
		else
	I2CSendNotAck();		
	}
I2CStop();
}
void MEM_Write(uint8_t*pucBuf,uint8_t ucAddr,uint8_t ucNum)//文件写
{
    I2CStart();
	I2CSendByte(0xa0);
    I2CWaitAck();
	
	I2CSendByte(ucAddr);
	I2CWaitAck();
	
	
	
	while(ucNum--)
	{
		I2CSendByte(*pucBuf++);
		I2CWaitAck();
	}
I2CStop();
	delay1(500);
}

在i2c_hal.h声明函数

void MEM_Read(uint8_t*pucBuf,uint8_t ucAddr,uint8_t ucNum);
void MEM_Write(uint8_t*pucBuf,uint8_t ucAddr,uint8_t ucNum);

 在main.c中写通信函数

  uint8_t sdcount;

MEM_Read(&sdcount,0,1);//通信
	sdcount++;
	MEM_Write(&sdcount,0,1);

在LCD中显示

 sprintf(buf,"    sdcount:%d     ",sdcount);
	LCD_DisplayStringLine(Line7,(uint8_t*)buf);

三、开源代码

通过网盘分享的文件:20-TEST10-IIC通信--24C02存储器.zip
链接: https://pan.baidu.com/s/1RQ7GbIz72_fHUYoKlLPVgA?pwd=0820 提取码: 0820

举报

相关推荐

MongoDB应用场景

0 条评论