基于STM32F103的I2C總线EEPROM的读写(带超时检测).docVIP

  • 5
  • 0
  • 约1.27万字
  • 约 16页
  • 2016-11-27 发布于重庆
  • 举报

基于STM32F103的I2C總线EEPROM的读写(带超时检测).doc

基于STM32F103的I2C總线EEPROM的读写(带超时检测)

HYPERLINK /wellrun/archive/2009/06/18/1505957.html 【原创】基于STM32F103的I2C总线EEPROM的读写(带超时检测)   本人最近参考了 st 公司关于STM32的I2C的例程,觉得不是很适合我的应用,于是自己写了一个基于STM32F103的I2C总线EEPROM(24C256)的读写程序,总线的最高速度可达400K,现在将源代码原原本本的公布如下,希望得到高手的指点,也希望能够给和我有同样想法的同仁们一些参考价值。   注意:最好将固件库升级一下,st网站上面有 V2.03库的补丁。 u32 ulTimeOut_Time; ? /* ********************************************************************************************************* *????????????????????????????????????? I2C_EE_WriteStr() * * Description ?: 将一个数据块写入EEPROM 的指定的地址 * * Argument(s) ?: xChip - 从器件地址 *????? xAddr - EEPROM存储空间地址 *????? xpBuf - 数据缓冲区指针 *????? xLen? - 数据长度 * * Return(s)?? ?: none. * * Caller(s)?? ?: Application. * * Note(s)???? ?: (1) *------------------------------------------------------------------------------------------------------- * Modified by?:???????? * Modified date?:?????? * Description ?: *------------------------------------------------------------------------------------------------------- ********************************************************************************************************* */ void I2C_EE_WriteStr(u8 xChip, u16 xAddr, u8 *xpBuf, u16 xLen) { ?u8 *pbuf; ?u8 err; ?u8 retry; ?u16 addr; ?u16 len; ?// ?pbuf = xpBuf; ?addr = xAddr; ?len? = xLen; ?I2C_EE_Drv_BusEn();?????? ????// 允许总线,写允许 ?retry = 5;??? ???????????// 重试5次 ?while(len) ?{ ??err = I2C_EE_Drv_WriteByte(xChip, addr, *pbuf); ??if(err) ??{ ???if(--retry == 0 )????????// 已经试了5次,写下一个数据 ???{ ????retry = 5;????????? ????pbuf++; ????addr++; ????len--; ???} ??} ??else? ????????????// 顺利,写下一个数据 ??{ ???pbuf++; ???addr++; ???len--; ??} ?} ?I2C_EE_Drv_BusDis();?????????// 失能总线,写保护 } /* ********************************************************************************************************* *????????????????????????????????????? I2C_EE_ReadStr() * * Description ?: 从EEPROM 的指定的地址读出一个数据块 * * Argument(s) ?: xChip - 从器件地址 *????? xAddr - EEPROM存储空间地址 *????? xpBuf - 数据缓冲区指针 *????? xLen? - 数据长度 * * Return(s)?? ?: none. * * Caller(s)?? ?: Appli

文档评论(0)

1亿VIP精品文档

相关文档