||
#define
I
void
I
{
I
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIOB Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,
ENABLE); // 开启时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I
/* eeprom wp Control Pin set */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_WriteBit(GPIOB, GPIO_Pin_8, Bit_RESET); // 设置初始化态,取消保护
/* PB6,7 SCL and SDA */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed =
GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; // 复用开漏输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
I
I
I
I
I
I
I
I
I
/*允许1字节1应答模式*/
I
}
void
I
{
vu16 SR1_Tmp;
do{
/*起始位*/
I
/*读SR1*/
SR1_Tmp = I
/*器件地址(写)*/
I
}while(!(I
/**/
I
/*停止位*/
I
}
void
I
{
I
}
/*************************************************
**函数名:
**功能:写多个字节
**注意事项:字写入同样需要调用忙判断
*************************************************/
void
I
{
uint8 hw_addr,byte_addr;
if( len == 0 )
return;
if( mem_addr >= I
#ifdef
_
if( mem_addr > 255 ) // eeprom address calc
{
hw_addr = I
}
else
{
hw_addr = I
}
#else
hw_addr = I
#endif
byte_addr = (uint8)mem_addr;
/* 起始位 */
I
while(!I
/* 发送器件地址(写)*/
I
while(!I
/*发送数据起始地址*/
I
while(!I
while(len)
{
/* 写一个字节*/
I
while(!I
pBuffer++; // 指向下一个存储空间
len--; // 数目调整
}
/* 停止位*/
I
I
}
uint8
I
{
uint8 recd;
I
return recd;
}
/***************************************************
**函数名:I
**功能:读取
**注意事项:
***************************************************/
void
I
{
uint8 hw_addr,byte_addr;
if( len == 0 )
return;
if( mem_addr >= I
#ifdef
_
if( mem_addr > 255 ) // eeprom address calc
{
hw_addr = I
}
else
{
hw_addr = I
}
#else
hw_addr = I
#endif
byte_addr = (uint8)mem_addr;
while(I
/*允许1字节1应答模式*/
I
/* 发送起始位 */
I
while(!I
/*发送器件地址(写)*/
I
while (!I
/*发送储存地址*/
I
while (!I
/*起始位*/
I
while(!I
/*器件读*/
I
while(!I
while(len)
{
if(len==1)
{
I
I
}
while(!I
*pBuffer = I
pBuffer++; // 指向下一个存储空间
len--; // 数目调整
}
//再次允许应答模式
I
}
// 应用代码示例
void
I
{
Uint8 buf[4] = {1,2,3,4};
I
I
I
}