纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 7188|回复: 3

stm32 的i2c问题请教

[复制链接]
发表于 2012-10-10 23:01:16 | 显示全部楼层 |阅读模式
在向EEPROM写数据时,一直不能很好的理解下面这几条代码。 我的理解是,主机先发送EEPOM的地址到总线上,然后从机回应成功的话就能发送数据了,按道理是只要一个 I2C_Send7bitAddress 和I2C_SendData 。但是实际上多了一条I2C_SendData ,我不知道怎么理解下面的代码。  求解答,谢谢了。

-------------------下面是具体代码---------------------------
void I2C_PageWrite_24C(u8 addr,u8* pBuffer, u8 no)
{
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
/*起始位*/
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
#ifdef AT24C01A
/*----*/
I2C_Send7bitAddress(I2C1, EEPROM_ADDR, I2C_Direction_Transmitter); // 这里我理解是向总线上发送EEPROM的地址,但是却理解不了为什么把EEPROM设置为发送模式。
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
/*写地址值*/
I2C_SendData(I2C1, addr); // 主要是这里,这句难得理解,我甚至不知道这个addr是哪个的地址,是主机么? 那这句有什么用啊?
while(! I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
#else
I2C_Send7bitAddress(I2C1, addr<<1, I2C_Direction_Transmitter);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
#endif
while(no--)  
{
   I2C_SendData(I2C1, *pBuffer);    //这里还好,就是开始发送数据了。  就前面两个 I2C_Send,希望大家可以说明下
   pBuffer++;
   while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
}

/*停止位*/
I2C_GenerateSTOP(I2C1, ENABLE);
}
回复

使用道具 举报

发表于 2012-10-10 23:24:04 | 显示全部楼层
看来楼主对I2C总线协议理解还不是很明白啊,I2C_Send7bitAddress(I2C1, EEPROM_ADDR, I2C_Direction_Transmitter);函数是发送从设备地址,也就是EEPROM的设备地址,但是对EEPROM进行读写数据的时候还需要一个寄存器地址,所以I2C_SendData(I2C1, addr);就是发送的EEPROM内部寄存器的地址,这个数据对于I2C总线来说也只是普通数据而已。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-11 09:13:39 | 显示全部楼层
wdluo 发表于 2012-10-10 23:24
看来楼主对I2C总线协议理解还不是很明白啊,I2C_Send7bitAddress(I2C1, EEPROM_ADDR, I2C_Direction_Transm ...

原来这样啊,的确是自己没有理解I2C。
因为最近实验室来了项目,用stm32实现。
自己才用这个板子,天天看例程,想尽量熟悉。学习进度像乌龟一样, 多谢版主悉心指导。

点评

加油吧!  发表于 2012-10-11 09:38
回复 支持 反对

使用道具 举报

发表于 2012-10-27 10:51:38 | 显示全部楼层
wdluo 发表于 2012-10-10 23:24
看来楼主对I2C总线协议理解还不是很明白啊,I2C_Send7bitAddress(I2C1, EEPROM_ADDR, I2C_Direction_Transm ...

请问用多块stm32f103 IIC通讯,stm32作为从机,那这个地址为多少呢?

点评

这个地址需要自己设置  发表于 2012-10-27 15:02
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-26 00:47 , Processed in 0.600396 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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