各位学习STM32的朋友们,不知你们在调试STM32的 I2C EEPROM时是否遇到问题,比如:
1\写入n字节,再读出n字节,但读出结果发现部分不正确
2\不能写了后马上读出来,
3\读不出来数据
第一个问题,请确认你用的EEPROM的型号,是2401,还是2402等,2401只有一个8 字节页写缓冲器,而02/04/08/16有16字节的页写缓冲器,在ST的例程中是定义为16字节的.
如遇到第2与第3个问题,可以尝试做以下修改:
(1)在stm32f10x_i2c.h中的
/* EV7 */
#define I2C_EVENT_MASTER_BYTE_RECEIVED ((u32)0x00030040) /* BUSY, MSL and RXNE flags
改为
/* EV7 */
#define I2C_EVENT_MASTER_BYTE_RECEIVED ((u32)0x00030044) /* BUSY, MSL and RXNE flags加一个BTF flags(发送完毕标志)否则接收会错*/ //
(2)
/*******************************************************************************
* Function Name : I2C_EE_BufferWrite
* Description : Writes buffer of data to the I2C EEPROM.
* Input : - pBuffer : pointer to the buffer containing the data to be
* written to the EEPROM.
* - WriteAddr : EEPROM's internal address to write to.
* - NumByteToWrite : number of bytes to write to the EEPROM.
* Output : None
* Return : None
*******************************************************************************/
void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByteToWrite)
{
.
.
.
.
.
I2C_GenerateSTOP(I2C1, ENABLE); //加入一条结束语句,因为
//在 I2C_EE_WaitEepromStandbyState里,启动了总线,但没有停止总线
}
用户1353831 2008-9-12 14:15