野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11646|回复: 3

有关IIC

[复制链接]
发表于 2017-7-28 15:00:26 | 显示全部楼层 |阅读模式
看了学习资料里的IIC的视频,然后自己去琢磨代码。硬件I2C中有一段代码就是不太理解,感觉与序列图上的也并不一致。下面附上问题。
void I2C_EE_PageWrite(u8* pBuffer, u8 WriteAddr, u8 NumByteToWrite)
{
    while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008

  /* Send START condition */  
  I2C_GenerateSTART(I2C1, ENABLE);

  /* Test on EV5 and clear it */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));

  /* Send EEPROM address for write */
  I2C_Send7bitAddress(I2C1, EEPROM_ADDRESS, I2C_Direction_Transmitter);

  /* Test on EV6 and clear it */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));  

  /* Send the EEPROM's internal address to write to */   
  I2C_SendData(I2C1, WriteAddr);  

  /* Test on EV8 and clear it */
  while(! I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  /* While there is data to be written */
  while(NumByteToWrite--)  
  {
    /* Send the current byte */
    I2C_SendData(I2C1, *pBuffer);

    /* Point to the next byte to be written */
    pBuffer++;

    /* Test on EV8 and clear it */
    while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  }

  /* Send STOP condition */
  I2C_GenerateSTOP(I2C1, ENABLE);
}


这个是一个page write的函数,根据视频上的来说,这是根据序列图来的。但是这段代码好像并不能和序列图一 一对应?代码上是确认EV6事件后,发送数据。然后确认EV8事件。但是从我图片上来看,他EV6之后有个EV8_1,这里是一个问题。这个为什么代码里是没有?是不需要吗?第二个问题。EV8_1之后是EV8和数据1并排的一个组合,这是指什么意思呢?我看代码里的意思应该是发送完数据之后在确认EV8.。。。总的来说就是为什么和序列图不对应呢。可能问的比较LOW。但是希望大家能帮我解答一下,谢谢~

序列图

序列图
回复

使用道具 举报

发表于 2017-7-28 15:11:52 | 显示全部楼层
硬件I2C还是以实际代码为准,ST的硬件I2C 跟我们平时说的I2C有点区别,学习的意义并不是很大,而且问题还多。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-28 15:45:47 | 显示全部楼层
fire 发表于 2017-7-28 15:11
硬件I2C还是以实际代码为准,ST的硬件I2C 跟我们平时说的I2C有点区别,学习的意义并不是很大,而且问题还多 ...

谢谢火哥,那我是不是可以理解为我编写的时候就要记住这个固定的模式:开始,确认事件5,发送7位ADDRESS,确认事件6,然后发送数据后就确认事件8,然后关闭。
回复 支持 反对

使用道具 举报

发表于 2017-7-28 16:05:39 | 显示全部楼层
whm86398013 发表于 2017-7-28 15:45
谢谢火哥,那我是不是可以理解为我编写的时候就要记住这个固定的模式:开始,确认事件5,发送7位ADDRESS ...



不过过一段时间你又忘记了了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 13:08 , Processed in 0.045378 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表