首先在O_iic_busy=0即I2C总线空闲情况下,设置I_wr_cnt,I_rd_cnt,I_wr_data,并且设置I_iic_req=1,启动I2C传输。当O_iic_busy=1说明I2C控制器开始传输,这时候可以设置I_iic_req=0,结束本次请求,并且等待O_iic_busy=0,当O_iic_busy=0代表本次传 传输结束.如果发送的是读请求(当I_rd_cnt>0),则此...
首先在O_iic_busy=0即I2C总线空闲情况下,设置I_wr_cnt,I_rd_cnt,I_wr_data,并且设置I_iic_req=1,启动I2C传输。当O_iic_busy=1说明I2C控制器开始传输,这时候可以设置I_iic_req=0,结束本次请求,并且等待O_iic_busy=0,当O_iic_busy=0代表本次传 传输结束.如果发送的是读请求(当I_rd_cnt>0),则此...
(3) 调用库函数I2C_Send7bitAddress 发送EEPROM 的设备地址,并把数据传输方向设置为I2C_Direction_Transmitter(即发送方向),这个数据传输方向就是通过设置I2C 通讯中紧跟地址后面的R/W位实现的。发送地址后以同样的方式检测EV6 标志; (4) 调用库函数I2C_SendData 向EEPROM 发送要写入的内部地址,该地址是I2C_EE_By...
除了基本的读写,I2C通讯更常用的是复合格式,即第三幅图的情况,该传输过程有两次起始信号(S)。一般在第一次传输中,主机通过SLAVE_ADDRESS寻找到从设备后,发送一段“数据”,这段数据通常用于表示从设备内部的寄存器或存储器地址(注意区分它与SLAVE_ADDRESS的区别);在第二次的传输中,对该地址的内容进行读或写。也...
24C02是一个2Kbit的串行EEPROM存储芯片,可存储256个字节数据。工作电压范围为1.8V到6.0V,具有低功耗CMOS技术,自定时擦写周期,1000000次编程/擦除周期,可保存数据100年。24C02有一个16字节的页写缓冲器和一个写保护功能。通过I2C总线通讯读写芯片数据,通讯时钟频率可达400KHz。可以通过存储IC的型号来计算芯片...
其中S 表示由主机的I2C 接口产生的传输起始信号(S),这时连接到I2C 总线上的所有从机都会接收到这个信号。 起始信号产生后, 所有从机就开始等待主机紧接下来广播 的从机地址信号(SLAVE_ADDRESS)。在I2C 总线上,每个设备的地址都是唯一的,当主机广播的地址与某个设备地址相同时,这个设备就被选中了,没被选中的设备...
I2C_DutyCycle_16_9:16比9占空比 感兴趣的朋友可以把时钟配置高于100KHz(如:400KHz),用示波器测一下SCL引脚,可以看得出来占空比不一样。 3.I2C设备地址:I2C_OwnAddress1 = EEPROM_DEV_ADDR; 这个参数是第一个设备(从机)的地址,EEPROM_DEV_ADDR是我们自己宏定义的设备地址。
I2C_Send7bitAddress(CW_I2C1, I2C_SLAVEADDRESS,0X00); //写命令 } else { I2C_Send7bitAddress(CW_I2C1, I2C_SLAVEADDRESS,0X01); //读命令,eeprom 随机读 } break; case 0x18: //发送完SLA+W/R字节 I2C_GenerateSTART(CW_I2C1, DISABLE); ...
图中,A0、A1、A3为片选端,因为I2C总线最多可以挂接16Kbit的EEPROM,也就是说可以挂接8个24LC02芯片,其硬件地址就这三个片选端决定;WP是写保护端,在发送Word Address之前起作用。 24LC02在写入数据的时候有两种模式:Byte write和Page write,如图4。
在这里以 AT24C04为例说明I2C使用过程中的一些注意点。2.AT24C04操作示意图p. .1 Devke H 伽Address Wi?rd AddressDI甫SwpTJAA写多个存射节X 1Word Ac dressDINITJAAA1 DINhlStopA读单个料字节T X 1Woid/addressH s卜1ADO 7、UT1读多个存斛节耳启动DeviceAd dregs设紳址丿勺篩11弗志楼DWIXSlop停止...