I2C—读写EEPROM学习笔记之代码详解-bytewrite/ramdomread

bsp_i2c.h

#ifndef __BSP_I2C_H
#define	__BSP_I2C_H


#include "stm32f10x.h"

//EEPROM 设备地址(8位)
#define EEPROM_ADDR   0xA0

/** 
* IIC EERPOM的引脚定义
*
*/
#define STM32_I2C_OWN_ADDR            0x5f 

	
// IIC
#define  EEPROM_I2C                   I2C1                   //I2C1
#define  EEPROM_I2C_CLK               RCC_APB1Periph_I2C1    //I2C时钟
#define  EEPROM_I2C_APBxClkCmd        RCC_APB1PeriphClockCmd //使能I2C时钟
#define  EEPROM_I2C_BAUDRATE          400000                 //波特率

//IIC GPIO 引脚宏定义
#define  EEPROM_I2C_SCL_GPIO_CLK      (RCC_APB2Periph_GPIOB) //GPIO时钟
#define  EEPROM_I2C_SDA_GPIO_CLK			(RCC_APB2Periph_GPIOB) //GPIO时钟

#define  EEPROM_I2C_GPIO_APBxClkCmd   RCC_APB2PeriphClockCmd //使能GPIO时钟
    
#define  EEPROM_I2C_SCL_GPIO_PORT     GPIOB  
#define  EEPROM_I2C_SCL_GPIO_PIN      GPIO_Pin_6

#define  EEPROM_I2C_SDA_GPIO_PORT     GPIOB
#define  EEPROM_I2C_SDA_GPIO_PIN      GPIO_Pin_7


void I2C_EE_Config(void);
void EEPROM_Byte_Write(uint8_t addr,uint8_t data);
void EEPROM_Read(uint8_t addr,uint8_t *data,uint8_t numByteToRead);
void EEPROM_Page_Write(uint8_t addr,uint8_t *data,uint8_t numByteToWrite);
void EEPROM_WaitForWriteEnd(void);


#endif /* __BSP_I2C_H */

bsp_i2c.c

#include "bsp_i2c.h"

 /**
  * @brief  IIC EEPROM  配置,工作参数配置
  * @param  无
  * @retval 无
  */
void I2C_EE_Config(void)
{
   
	GPIO_InitTypeDef GPIO_InitStructure;
	I2C_InitTypeDef  I2C_InitStructure; 

	// 打开IIC GPIO的时钟 SCL|SDA
	EEPROM_I2C_GPIO_APBxClkCmd(EEPROM_I2C_SCL_GPIO_CLK|EEPROM_I2C_SDA_GPIO_CLK, ENABLE);
	
	// 打开IIC 外设的时钟
	EEPROM_I2C_APBxClkCmd(EEPROM_I2C_CLK, ENABLE);

	// 将IIC SCL的GPIO配置为开漏复用模式
	GPIO_InitStructure.GPIO_Pin = EEPROM_I2C_SCL_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(EEPROM_I2C_SCL_GPIO_PORT, &GPIO_InitStructure);
	
  //这里只需要将不一样
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值