首页 > 编程知识 正文

51单片机网站,51单片机开发板怎么用

时间:2023-05-06 02:37:58 阅读:148015 作者:4184

目录

1 .概要

2.I2C总线通信协议

3.I2C总线数据传输格式

3.1字节的数据传输格式

3.2多字节数据传输格式

4.I2C总线存储器24c02(e2prom ) )。

4.1外形和引脚功能的说明

4.2设备地址设置

4.3读取/写入

4.3.1写入

4.3.2读取操作

1 .概要I2c(inter-integratedcircuit )总线是飞利浦公司开发的两线式串行通信总线,是微电子通信控制领域广泛采用的总线标准。

3358www.Sina.com/通过I2C总线可以将单片机与其他具有I2C总线通信接口的外围设备连接起来,如图1所示。 每个I2C设备有串行数据(SDA)线和串行时钟(SCL)线与连接到该双线的器件传递信息,可用作发射器或接收器。 例如,液晶屏驱动器只能用作接收器,存储器既可以作为接收器发送数据,也可以作为发射器发送数据。唯一的识别地址(I2C总线支持7位和10位地址)

图1单片机通过I2C总线连接多个I2C器件

I2C总线有I2C器件在执行数据传输时也可以看作是主机或从机,主机是初始化总线数据传输并产生允许传输时钟信号的器件,此时任何被寻址的其他I2C器件都被认为是从机。种数据传输速度模式,支持高速模式的可以下方支持低速模式。 连接到I2C总线的I2C设备的数量仅限于总线的最大容量400pF,连接到总线的设备越多,布线越长,分布容量也越大。

在图1中,标准(100kbit/s),快速(400kbit/s)和高速(3.4Mbit/s)其中的单片机是主机兼发送器,I2C设备3和其他设备都是从设备,I2C设备3是接收器。

2.I2C总线通信协议通信协议是通信相关人员必须遵守的规则,否则无法通信,因此在制作通信程序时

需要了解相应的通信协议。

        I2C总线通信协议主要内容有:

        ① 总线空闲SCL和SDA线均为高电平

        ② 开始信号在SCL为高电平时,SDA出现下降沿,该下降沿即为开始信号

        ③ 数据传送开始信号出现后,SCL线为高电平时从SDA线读取的电平为数据;SCL线为高电平时,SDA线的电平不允许变化,只有SCL为低电平时才可以改变SDA的电平;SDA线传送数据时,从高位到低位逐位进行,一个SCL脉冲高电平对应1位数据。

         ④ 停止信号SCL为高电平时,SDA出现上升沿,该上升沿为停止信号,停止信号过后,总线被认为空闲(SCL、SDA均为高电平)。

3.I2C总线的数据传送格式

        I2C 总线可以一次传送单字节数据,也可以一次传送多字节数据,不管是传送单字节还是多字节数据,都要在满足协议的前提下进行。

3.1 单字节数据传送格式

        I2C总线的单字节数据传送格式如图2所示,传送单字节数据的格式为“开始信号传送的数据(从高位到低位)-应答(ACK)信号-停止信号”

图2 I2C总线的单字节数据传送格式 

        在传送数据前,SCL、SDA线均为高电平(总线空闲),在需要传送数据时,主机让SDA线由高电平变为低电平,产生一个下降沿(开始信号)去从机,从机准备接收数据,然后主机从 SCL 线逐个输出时钟脉冲信号,同时从SDA线逐位(从高位到低位)输出数据,只有SCL脉冲高电平到从机时,从机才读取 SDA线的电平值(0或1),并将其作为一位数据值,8位数据传送结束后,接收方将SDA线电平拉低,该低电平作为ACK应答信号由SDA线送给发送方,ACK信号之后可以继续传送下一个字节数据,若只传送单字节数据,在SCL线为高电平时,SDA 线由低电平变为高电平形成一个上升沿,该上升沿即为停止信号,本次数据传送结束。

3.2 多字节数据传送格式

        为了提高工作效率,I2C总线往往需要一次传送多个字节。图3是典型的I2C总线多字节数据传送格式,该多字节数据的格式为“开始信号-第1个字节数据(7位从机地址+1位读/写设定值)-应答信号-第2个字节数据(8位从机内部单元地址)-应答信号-第3个字节数据(8位数据)-应答信号(或停止应答信号)-停止信号”。

图3 I2C总线的多字节数据传送格式

        图3传送了三个字节数据,第1个字节数据为从机的地址和数据读写设定值,由于I2C总线挂接很多从机,传送从机地址用于选中指定的从机进行通信,读写设定值用于确定数据传输方向(是往从机写入数据还是由从机读出数据),第2个字节数据为从机内部单元待读写的单元地址(若传送的数据很多,则为起始单元的地址,数据从起始单元依次读写),第3个字节为8位数据,写入第1、2字节指定的从机单元中。在传送多字节数据时,每传送完一个字节数据,接收方需要往发送方传送一个ACK信号(接收方将SDA线电平拉低),若一个字节传送结束后接收方未向发送方返回 ACK信号,发送方认为返回的是NACK(停止应答)信号,则停止继续传送数据。

4.I2C总线存储器24C02(E2PROM)

        24Cxx系列芯片是采用了I2C总线标准的常用E2PROM(电可擦写只读存储器)存储芯片,其中24C02最为常用,24C02存储容量为256×8bit(24C01、24C04、24C08、24C16分别为128×8bit、512×8bit、1024×8bit、2048×8bit),24C02芯片的每个字节可重复擦写100万次,数据保存期大于100年。

4.1  外形与引脚功能说明

        24C02的外形与引脚功能如图4所示,引脚功能说明见表1。

图4 24C02的外形与引脚功能

表1 24C02引脚功能说明

4.2 器件地址的设置

        当24C02和其他器件挂接在I2C总线时,为了区分它们,需要给每个器件设定一个地址,该地址即为器件地址,挂在同一I2C总线上的器件地址不能相同。24C02有A0、A1、A2三个地址引脚,可以设置8个不同的器件地址,24C02的器件地址为7位,高4位固定为1010,低3位由A0、A1、A2引脚电平值决定。24C02的器件地址设置,如图5所示,当A0、A1、A2引脚都接地时,器件地址设为1010000,当A0、A2引脚接地,A1引脚接电源时,器件地址设为1010010。

 图5 24C02器件地址的设置

4.3 读/写操作 4.3.1 写操作

        24C02的写操作分为单字节写操作页写操作

        (1)单字节写操作

        24C02单字节写操作的数据格式如图6所示。主器件发送开始信号后,再发送7位器件地址和1位读写信号(写操作时读写信号为0),被器件地址选中的24C02往主器件发送一个ACK信号,主器件接着发送8位字节地址给24C02选中其内部相应存储单元,24C02往主器件发送一个ACK信号,主器件马上发送一个字节数据给24C02,24C02往主器件发送一个 ACK 信号,当主器件发出停止信号后,24C02开始将主器件发送来的数据写入字节地址选中的存储单元。

 图6 24C02单字节写操作的数据格式

        (2)页写操作

        页写操作即多字节写操作,24C02可根据需要一次写入2~16个字节数据。24C02页写操作的数据格式(一次写入16个字节数据时)如图7所示。

 图7 24C02页写操作的数据格式(一次写入16个字节数据时)

        主器件发送开始信号后,再发送7位器件地址和读写信号,被器件地址选中的24C02往主器件发送一个ACK信号,主器件接着发送第1个字节数据的地址给24C02,24C02往主器件发送一个ACK信号,主器件发送第1个字节数据给24C02,24C02往主器件发送一个ACK信号,主器件发送第2个字节数据给24C02,24C02往主器件发送一个ACK信号,当主器件将第16个字节数据发送给24C02,24C02往主器件发送一个ACK信号,待主器件发出停止信号后,24C02开始将主器件发送来的16个字节数据依次写入以第一个字节数据地址为起始地址的连续16个存储单元中。如果在第16个字节数据之后还继续发送第17个字节数据,第17个字节数据将覆盖第1个字节数据写入的第1个字节地址,后续发送字节数据将依次覆盖先前的字节数据。

4.3.2 读操作

        24C02的读操作分为立即地址读操作选择读操作连续读操作

        (1)立即地址读操作

        立即地址读操作是指不发送字节地址而是直接读取上次操作地址 N 之后的地址 N+1的数据,24C02的N值为0~255(00H~FFH),如果上次操作地址N=255,立即地址读操作会跳转读取地址0的数据。24C02立即地址读操作的数据格式如图8所示。

图8 24C02单字节写操作的数据格式

        主器件发送开始信号后,再发送7位器件地址和读写信号(读操作时读写位为1),被器件地址选中的24C02首先往主器件发送一个ACK信号,再往主器件发送一个字节数据,主器件无须发出ACK信号应答,但要发出一个停止信号给24C02。

        (2)选择读操作

        选择读操作是指读取任意地址单元的字节数据。24C02选择读操作的数据格式如图9所示。

 图9 24C02选择读操作的数据格式

        主器件先发送开始信号和7位器件地址,再发一个低电平读写信号执行伪写操作(以便将后续的n单元字节地址发送给24C02),被器件地址选中的24C02往主器件发送一个ACK信号,主器件接着发送n单元字节地址,从器件回复一个ACK信号,主器件又发送开始信号和7位器件地址,再发一个高电平读写信号执行读操作,从器件回复一个ACK信号,并将n单元的字节数据发送给主器件,主器件无须发出ACK信号应答,但要发出一个停止信号给24C02。

        (3)连续读操作

        连续读操作是指从指定单元开始一次连续读取多个字节数据。在进行立即地址读操作或选择读操作时,如果24C02每发送完一个字节数据后,主器件都回复一个ACK信号,24C02就会连续不断将后续单元的数据发送给主器件,直到主器件不回复 ACK 信号,才停止数据的发送,主器件发出停止信号后则结束本次连续读操作。连续读操作由立即地址读操作或选择读操作启动。图10(a)是由立即地址读操作启动的连续读的数据格式,24C02内部有256个字节存储单元,如果24C02将第256个字节单元(地址为FFH)的数据传送给主器件后,主器件继续回复ACK信号,24C02就会从头开始将第1个存储单元(地址为00H)的数据传送给主器件。图10(b)为由选择读操作启动的连续读的数据格式。

图10 24C02连续读操作的数据格式

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。