原创 STM32的I2C 调试 24C01/2402/240x等EEPROM 经验

2008-8-21 22:28 5883 5 6 分类: MCU/ 嵌入式

各位学习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里,启动了总线,但没有停止总线
}



 


 


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1353831 2008-9-12 14:15

http://blog.ednchina.com/xfcylyf/159605/message.aspx
相关推荐阅读
用户783134 2008-08-24 12:32
如何用ulink调试超过128K flash的STM32(MDK3.22a)
ulink是个好东西,在MDK3.22a中调试128K以内的STM32网上都有很多办法了,但是不知有朋友用来调试C/D/E系列了吗?<?xml:namespace prefix = o ns =...
用户783134 2008-08-17 01:15
STM32用I/O模拟,驱动2.8寸TFT屏(有MDK源程序和图)
/*使用液晶:2.8寸 DriverIC HX8347 240*320 65536色16bit-------*//*在原ST官方例程基础上,更改出来的例程-------*//* Includes --...
用户783134 2008-08-17 00:51
STM32用PWM实现DA的电路图
用PWM实现DA功能的原理图。基本原理:运放+RC滤波...
EE直播间
更多
我要评论
1
5
关闭 站长推荐上一条 /3 下一条