嵌入式课程:I2C总线编程手册.pdf

所需积分/C币:9 2019-05-21 13:12:32 1.6MB PDF
2
收藏 收藏
举报

超详细I2C协议讲解,附带详细程序
北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日星期三 器件地止的限制 般Ⅰ2C设备地址是7位地址(也有10位),地址分成两部分:芯片固化地址(生产芯片时候哪些接地 哪些接电源,已经固定),可编程地址(引出IO口,由硬件设备决定)。 例如:某一个器件是7位地址,其中10101Xxx高4位出厂时候固定了,低3位可以由设计者决定。 则·条卫C总线上只能挂该和器件最少8个 如果7位地址都可以编程,那理论上就可以达到128个器件,但实际中不会挂载这么多。 2.总线速度传输速度: IC总线数据传输速率在标准模式下可达100 kbit/s,快速模式下可达400kbiυs,高速模式卜可达3.4Mbis。 一般通过rC总线接口可编程时钟来实现传输涑率的调整 3.总线数据长度 IC总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。 143P?C总线协议 143.1C总线协议基本时序信号 空闲状态:SCL和SDA都保持着高电平。 起始条件:总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平期间而SDA由高到低的 跳变,表示产生一个起始条件。在起始条件产生后,总线处于忙状态,由本次数据传输的上从设备独占,其他 IC器件无法访问总线。 停止条件:当SCL为高而SDA由低到高的跳变,表示产生一个停止条件。 答应信号:每个字节传输完成后的下一个时钟信号,在SCL高电平期间,SDA为低,则表示一个应答信 号 非答应信号:每个字节传输完成后的下一个时钟信号,在SCL高电平期间,SDA为高,则表示一个应答 信号。应答信号或非应答信号是由接收器发出的,发送器则是检测这个信号(发送器,接收器可以从设备也可 以主设备)。 注意:起始和结束信号总是由主设备产生。 基木时序如下图所示: SDA SDA m SCL ■■■■■ 起始条件 停止条件 图142C协议基本时厅图 1432数据传输时序 当产生起始条件后,开始数据传输,这个阶段主设备在SCL线上的每一个脉冲,都会同时在SDA线上传输 个数据位(地址数据传输方式和普通数据传输方式相同),每个字节完成后,跟着一个应答位。当不想再进行 数据传输时,主机产生一个停止信号,总线释放,SCI,SDA线都回到空闲状态。数据传输时序佟如下 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页 北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日星期三 SDA 圆■■ SDA Bit7 Bito Bit1 Bitl E Bit SCL sAAa/TP SCL 起始条件 停止条件 图14-3数据传输时序图 1433PC寻址方式 I2C总线上的每一个2C设备都对应一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上, 主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程·样,只不过大多 数从设备的地址是7位的(有的设备地址是10位的,发送地址要使用两个字节,这里仅以7位地址为例子), 然后协议规定再给地址添加一个最低位用米表示接下米数据传输的方向,0表示主设备向从设备写数据,1表 示主设备从从设备读数据。如图所示: SDA 0一6 8 0- 起始条件设备地址位方向位应答位有效数据位应答位 停止条件 图144D2C通信时序图 1434I2C总线操作 对12C总线的操作实际就是主从设备之间的读写操作。大致可分为以下三种操作情况: 第一,主设备往从设备中写数据。数据传输格式如下: 数揖传输 N字芍应答) s从设地址WA 太 ACK 据 ACK P 子件 写 应管停止条件 图145主机写数据时序图 第二,主设备从从设备中读数据。数据传翰格式如下 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页 北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日早期三 N字节+应管 s设备地址kAcK数提AxK数提MKP 起始条件 应答 丰立答信上条件 图146主机读数据时序图 第三,主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设 备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据。数据传输格式如下: 数据传输 数据传输 N亨节应答 三节—应答) s从设备地止RAC数据 ACK RS从设备址R/AC数据AC五P 起始条件 读或写应答 应答重复的起始案件读式写应答 应答亨止件 图14-6主机写数据切换到读数据时序图 第三种操作在单个主设备系统中,重复的开启起始条件机制要比用STOP终止传输后又再次开启总线更有 效率。 144P2C总线模块时序编程 144.1起始条件 根据Ⅰ2C规范,π以使用两个普通⑩O口模拟出来其起始条件时序,代码如下 static bool i2c start( void) SDA HO SCL HO 12c delayo f(!SDA READO) return false;/SDA线为低电平则总线忙,退出 SDA LO if(SDA READO rcturn falsc;/SDA线为高电平则总线出错,退出 SDA LO: i2c delay(; return true 1442停止条件 根据12C规范,可以使用两个普通IO口模拟出来其停止条件时序,代码如下 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页 北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日星期三 static void 12c stop(void) i2 c delayo;/可以不加,加上去是为了获得更标准的SCL波形 SCL HO: SDA LO 12c delay(: /4us SDA HO: i2c delay: //>4.7us 1443发送应答信号或非应答信号 根据12C规范,可以使用两个普通IO模拟出来其应答/非答应时序,代码分别如下: 发送应答信号: static void i2c ack(void) SCLO;∥低电平数据才能变化,先置低 SDA LO 12c delayo SCL HO 12c delayo SCL LO 发送非应答信号 static void i2c_noack(void) SCL LO;〃低电平数据才能变化,先置低 SDA HO: 12c delay; SCL HO: i2c delay 0; SCL LO 接收方要调用这两个函数,告诉发送方自己是否已经已经收到数据。 1444检测应答信号 根据C规范,叮以使用两个普通IO模拟出来其检测应答信号时序,代码如 static bool 12c waitack( void) SCL HO;/高电平锁定数据 12c delayo 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页 北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日星期三 fSDA_ READO)按照规范,高电平代表非应答 SCL LO rcturn falsc;/检测到非应答 SCL LO return true ∥检测到应答信号 数据的发送方负责在个字节后检测接收方传递回来信号(应答或非应答信号 1445单字节发送 根据12C规范,可以使用两个普通IO模拟出来字节发送吋序,代码如下 static void i2c sendbyte(uint8 t SendByte) uint8 ti SCL LO;M让SDA线数据可以修改 ( SendByte&0x80)∥判断最高位,bit7开始 SDA HO: SDA LO 12c delay SCL HO: 12c delayo SendByte <<=l SCL LO: 低电平才可以变化数据 12c delay ( 不加也可以 1446单字节接收 根据12C规范,可以使用两个普通⑩O口模拟出来其单字节接收时序,代码如下 static uint& t i2c receivebyte( void) uint8 li=8 uint8 t Receive byte=0 SDA HO: 由于读数据,所要要释放总线,不加经测试结果将是全0 while(i--) 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页 北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日星期三 Receive Byte<<=1;/移位应该放在这里,接收字节间应该有一定的时间 SCL LO ∥(电平才可以变化数据 12c delay 〃等待数据稳定 SCL HO: ∥锁定数据 if(SDA READO) RcccivcBytc=0x01; 12c delay(; ∥等待数据稳定 return Receive Byte 14.5AT24c02 EEPROM编程 1451AT24C02 EEPROM基本功能介绍 AT24C02是 Atmel公司生产的低功耗CMOS型 EEPROM,内含2Kbit,即256字节存储空间。它采用I2C 总线方式进行数据读写,可工作于标准模式、快速模式和高速模式。硬件电路及其简单,数据读写也很方便。 8-Pin Pdip Pin Configurations Pin Name Functian A0 8 VCC Address Inputs Al SDA Serial data YP SCL Serial clock inout SCL WP Write protect GND SDA NG No Connect 图149AT24C02-8封装图及引脚说明 引脚定义说明: 1、2、3引脚为地址输入脚,根据需要分别接地或电源。当C总线_作于多节点模式吋确定器件地址 AT24C02的地址分为固定部分和可编址部分,高半字节固定为1010,低半字节前三位对应A2、A1、A0引脚, 最低位为读/写选择位。“0”表示写操作,“I”表示读操作。在主机发送起始条件后需发送器件地址,以确定 要进行操作的器件,被选中的器件发送应答信号。 4、8引脚分别接地与电源。 5、6引脚为nC总线的时钟线与数据线,需加10K上拉电阻以使L2C总线在空闲时保持高电平 7引脚为写保护引脚,接地时可正常读写,接高时只允许对器件进行读操作,以防止因为误操作而损坏内 部存储的数据。AT24C02的写周期约为10ms,也就是在写操作后10ms才能正常读出数据。 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页 北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日星期三 1452T24C02 EEPROM写时序介绍 14521单字节写时序 写操作要求在发送器件地址及应答后,发送一字节子地址,即存储器內部地址,因AT24C02容量为256 字节,所以子地址为0-255。在接收到子地址后 EEPROM再发送一位应答。在接下来的时钟周期里主机发送8 位数据, EEPROM应答后,主机发送停止信号 操作时序 sTAR R DEVICE ADDRESS E WORD ADDRESS DATA TT TTT SDA LINE RA M BW K B AcK A 图14-10单字节写操作流程 14522页写时序时序 AT24C02提供32个8宇节的页空间。页写操作初始化与字节写相同,但在 EEPROM接受到8位数据后 单片杋并不发送停止条件,而是继续发送7字节数据,在每接受一字节数据, EEPRON发送一位应答。在发 送完8字节数据后,单片机需发送停止信号以终止操作。在进行页写操作时,存储器的子地址低三位会自动增 但由」高位并不自增,在子地址加到页空间边界,即写入8字节后,卜一字节会自动写入该页空问的第 宁节,覆盖之前的数据,即“ roll over” 操作时序 Figure 3. Pagc write R DEVICE ADDRESS W/ORD ADDRESS (n) DATA (n DATA (n+1) DATA (n +x) T SDA LINE M LR A A A 图14-11页写操作流程 14.53AT24C02 EEPROM读时序介绍 14531单字节读操作 读操作分为当前地址读揀作、随读操作、顺序读操作。这里以随机读操作为例。在单片机发送完器件地 址及子地址后,产生另一个重复起始信号,并发送器件地址(此时的器件地址最低位为1,表示读操作),这 时了地址指向的为之前定义的值,方便访问仼意地址空间,单片机接收到数据后发送非应答信号,并产生停止 条件。 操作时序 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页 北京万邦易嵌科技有限公司-嵌入式事业部肖龙 AT24c02编程参考资料 2017年7月26日星期三 Figure 5. Random Read sTAR W R DEVICE DEVICE WORD R ADDRESS ADDRESS ADDRESS n SDA LINE MGB CATA D BW K B B K B K DUMMY WRITE 图14-11单字节读操作流程 14532页读操作 初始部分与单宁节操作相同,在单片机每接收到一宁节发送一个应答位。不同的是读操作可以连续进行, EEPROM内部地址会自动增加,可以次性把整个 EEPROM的内容读取出来 注意:这一点和页写有区别,页写操作是最多一次写8字节,再继续写,页指针会折回到0地址 Figure 6. Sequential Read DEVICE ADDRESS D K ACK ACK sTOP SDA LINE R A DATA n DATA n+1 DATA n+2 DATA n+x W K NoAcK 图14-12页读操作流程 146模拟时序操作AT24c02 EEPROM实验硬件设计 VCC3.3 C17 U6 104 Ao vCc A1 wp A2s/6 PB10 GND SDA PB11 R1947K AT24002 PB10 PB11 R204 图14-13 XYD-STM32F103开发板和AT24C02连接图 北京万邦易嵌有限公司专业提供单片机、M3M4、 Linux、 Android、α技术服务、技术培训。第2页共2页

...展开详情
试读 28P 嵌入式课程:I2C总线编程手册.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享精英

    成功上传11个资源即可获取
关注 私信
上传资源赚积分or赚钱
最新推荐
嵌入式课程:I2C总线编程手册.pdf 9积分/C币 立即下载
1/28
嵌入式课程:I2C总线编程手册.pdf第1页
嵌入式课程:I2C总线编程手册.pdf第2页
嵌入式课程:I2C总线编程手册.pdf第3页
嵌入式课程:I2C总线编程手册.pdf第4页
嵌入式课程:I2C总线编程手册.pdf第5页
嵌入式课程:I2C总线编程手册.pdf第6页

试读结束, 可继续读3页

9积分/C币 立即下载 >