欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 单片机学习笔记 18. IIC总线EEPROM(理论)

单片机学习笔记 18. IIC总线EEPROM(理论)

2024/12/22 12:04:27 来源:https://blog.csdn.net/u014087103/article/details/144358173  浏览:    关键词:单片机学习笔记 18. IIC总线EEPROM(理论)

更多单片机学习笔记:
单片机学习笔记 1. 点亮一个LED灯
单片机学习笔记 2. LED灯闪烁
单片机学习笔记 3. LED灯流水灯
单片机学习笔记 4. 蜂鸣器滴~滴~滴~
单片机学习笔记 5. 数码管静态显示
单片机学习笔记 6. 数码管动态显示
单片机学习笔记 7. 独立键盘
单片机学习笔记 8. 矩阵键盘按键检测
单片机学习笔记 9. 8×8LED点阵屏
单片机学习笔记 10. 中断系统(理论)
单片机学习笔记 11. 外部中断
单片机学习笔记 12. 定时/计数器_定时
单片机学习笔记 13. 定时/计数器_计数
单片机学习笔记 14. 定时/计数器_中断
单片机学习笔记 15. 串口通信(理论)
单片机学习笔记 16. 串口通信
单片机学习笔记 17. 串口通信-发送汉字


目录

0、实现的功能

1、Keil工程

1-1 串行通信中的IIC总线工作原理和协议

IIC总线传输协议

​编辑

数据帧格式

总线的寻址

80C51单片机I2C串行总线器件的接口

串行EEPROM的扩展


0、实现的功能

        使用程序模拟IIC通信协议

1、Keil工程

1-1 串行通信中的IIC总线工作原理和协议

        常用的串行总线协议有:UART、1-wire、I2C、SPI

        主从方式是主机主动,从机不会主动

        在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线
        在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其它接口器件为从机的单主机情况。

        IIC中默认为高电平(和P0口类似,都接上拉电阻),任一为低电平,则都为低电平。

IIC总线传输协议

        SCL必须都为高电平。因为是主从模式,必须从主机接收到信号才能够发送数据,此时数据总线SDA由高电平变为低电平

        不需要接收数据的时候,总线就占用状态(为1)即可。

应答位的作用:

  • 主机在发送数据时,每次发送一字节数据,都需要读取从机应答位,当从机空闲可以接收该字节数据时,从机会发出应答(一帧数据的第9位为“0”),当从机正忙于其他工作的处理来不及接收主机发送的数据时,从机会发出非应答(一数据的第9位为“1”)主机则应发出终止信号以结束数据的继续传送,主机通过从机发出的应答位来判断从机是否成功接收数据
  • 当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线(不然从机的SDA一直为0,下次主机就无法传输数据),以允许主机产生终止信号
数据帧格式

        起始信号后还有一个字节的数据,前7位表示从机地址,第8位表示R1/T0

        在总线的数据传输中,可以有以下几种方式:

        主机只要不想要数据的时候,就要发送非应答信号,不然会影响下一次的数据传输

总线的寻址

        寻址字节的定义,前面已经说了,前7位地址位,最后一位表示读/写

        寻址过程:

  • 主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器
  • 从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8(2*2*2)个同样的器件,即可以有8个同样的器件接入到该12C总线系统中。

80C51单片机I2C串行总线器件的接口

        总线数据传送的模拟
        主机可以采用不带I2C总线接口的单片机,如80C51、STC89C52等单片机,利用软件实现I2C总线的数据传送,即软件与硬件结合的信号模拟。

        I2C对信号应答的响应时间是有要求的。应答信号的时钟信号要大于4us,起始/终止信号的数据信号高电平大于4.7us,低电平大于4us
        起始/终止信号时,SCL时钟信号都为高的情况,SDA再发生变化;应答信号时,SCL时钟信号都为低的情况,SDA再发生变化。
        这和前面的数据位的有效性规定一致,SCL高电平时,SDA的数据必须稳定,只有SCL低电平时,SDA状态才允许变化

        I2C起始信号

//IC起始信号程序void I2cStart()
{SCL =1;SDA =1;delay5us();SDA = 0;delay5us();
}

        I2C终止信号

//IC终止信号程序void I2cStop()
{SCL = 0;SDA = 0;SCL = 1;delay5us();SDA = 1;delay5us();
}

        I2C主机读 从机应答

//I2C主机读从机应答
bit ReadACK()
{SCL = 1;delay5us();if(SDA){SCL = 0;return(1);}else{SCL = 0;return(0);}
}

        I2C主机发送应答

//I2C主机发送应答
void SendACK(bit i)
{SCL = 0;if(i)SDA = 1;elseSDA = 0;SCL = 1;delay5us();SCL=0;//拉低时钟总线SDA =1; //释放数据总线
}
串行EEPROM的扩展

(1)串行EEPROM典型产品
        ATMEL公司的AT24C系列:(1k指的是1k位bit,也就是128字节Byte)
        该单片机用的是AT24C02
 

(2)写入过程

        AT24C系列E2PROIM芯片地址的固定部分为1010,A2、A1、A0引脚接高、低电平后得到确定的3位编码。形成的7位编码即为该器件的地址码。
        单片机进行写操作时,首先发送该器件的7位地址码写方向位“0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应,单片机收到应后就可以传送数据了。

(3)读出过程

        起始信号--地址+0(写)--从机应答--主机写数据--从机应答--新的起始信号--地址+1(读)--从机应答--从机写数据--主机应答----------主机非应答--主机暂停

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com