主机如何给从机发送应答信号(i2c如何表示应答信号?)
i2c如何表示应答信号?
I2C总线用SDA数据线低电平响应,响应过程如下:第一步:主机向从机发送地址或数据后,上拉SDA,等待从机回答是否接受。
第二步:从机识别到有效地址或数据后,会主动下拉SDA,告诉主机已经正确接收到信息。
第三步:主机检测到有效响应信号后,进行下一步操作。
主机和从机可以双向通信吗?
的主从机可以双向通信,但通信是全双工还是半双工取决于通信接口。全双工通信的发送线和接收线是独立的,主从机可以同时发送和接收信息,如RS232、RS422总线和以太网通信。
半双工通信没有发送线和接收线的概念。它根据特殊协议调制发送和接收,并成为另一种通信信号。半双工通信不能同时发送或接收,如RS485和CAN总线。
iic总线包含哪些寄存器,有什么用?
LPC2124有一个标准的I2C总线接口,可以配置为主机或从机。总线时钟速率可调,最大总线速率可支持400KHZ。使用I2C总线时,相应的管脚设置要连接到SCL和SDA,总线要有一个上拉电阻,电阻值为1 ~ 10kΩ,具体视所需总线速度而定。总线速度越高,电阻应该越小。I2C总线可以连接标准的I2C接口设备,如串行EEPROM,RAM,LCD,时钟芯片和音频发生器。根据方向位(R/W)的状态,I2C总线上有两种类型的数据传输:
(1)从主发送器向从接收器发送数据。
主机发送的第一个字节是从机地址,随后是数据字节流。从机每接收一个字节就返回一个应答位。
(2)从发射机向主接收机发送数据。
第一个字节(从机地址)从主机发送。从机返回一个应答位。接下来,从机向主机发送数据字节。主机为其接收的每个字节返回一个应答位。接收到最后一个字节后,主机返回一个 "非应答位 "。主机产生所有串行时钟脉冲以及起始和停止条件。当停止条件或重复开始条件出现时,传输结束。由于重复开始条件也是下一个串行传输的开始,I2C总线将不被释放。
LPC2124的I2C是一个基于字节的I2C接口。只要将一个字节的数据写入I2C数据寄存器I2DAT,所有数据位都可以由I2C接口自动发送。它有四种工作模式:主发送器模式、主接收器模式、从发送器模式和从接收器模式。
(1)主发射器模式
在这种模式下,数据从主机发送到从机。进入主发送器模式前,I2C控制设置寄存器必须初始化如下:
I2CONSET -我从STO来到这里
- 1 0 0 0 0 - -
解释如下:
I2EN=1,使能I2C接口;
AA=0,不产生响应信号,即不允许进入从机模式;
SI=0,I2C中断标志为0;
STO=0,停止标志为0;
STA=0,起始标志为0。
在这种模式下,数据方向位(R/W)应该为0,表示执行了写操作。因此,发送的第一个字节是从机地址(7位)和写方向位。数据一次发送8位,每发送一个字节,接收一个从机返回的应答位。该模式的数据发送操作步骤如下:
①通过软件设置STA进入I2C主发送器模式,总线空闲后,I2C逻辑立即发送初始条件。
②发送初始条件时,SI位被置位。此时,I2STAT(状态寄存器)中的状态码为08H,用于中断服务程序。
③将从机地址和写方向位载入I2DAT(数据寄存器),然后清除SI位(向I2CONCLR寄存器的SIC位写入1以清除SI),并开始发送从机地址和写方向位。
④当地址和写方向位已发送且回复位已接收时,SI位再次置位(可能的状态码为18H、20H或38H)。
⑤当状态码为18H时,表示从机已经应答,可以将数据加载到I2DAT中,然后将SI位清零,开始发送数据。
⑥当数据被正确发送时,SI位再次被置位(可能的状态代码为28H和30H)。此时,您可以再次发送数据或设置STO结束总线。
(2)主接收器模式
在这种模式下,主机接收的数据字节来自从机发送器,数据方向位应为1,以指示读取操作。该模式的数据接收操作步骤如下:
①通过软件设置STA进入I2C主发送器模式,总线空闲后,I2C逻辑立即发送初始条件。
②发送初始条件时,SI位被置位。此时,I2STAT(状态寄存器)中的状态码为08H,用于中断服务程序。
③将从机地址和读取方向位载入I2DAT(数据寄存器),然后清除SI位并开始发送从机地址和读取方向位。
④当从机地址和读取方向位已发送且回复位已接收时,SI位再次置位(可能的状态代码为38H、40H或48H)。
⑤当状态码为40H时,表示从机已应答。设置AA位以控制接收数据后是产生应答信号还是不应答信号,然后清除SI位以开始接收数据。
⑥当正确接收到一个字节的数据时,SI位再次置位(可能的状态码是50H或58H)。此时,您可以再次接收数据或设置STO结束总线。
(3)从接收机模式
党培当设为I2C从机时,I2C主机可以对其读写。要初始化为从机,用户必须将从机地址写入I2ADR(从机地址寄存器),并按如下配置I2CONSET:
我从STO来到这里
- 1 0 0 0 1 - -
在这种模式下,从主发送器接收数据字节。当主机访问从机时,它接收主机发送的数据并产生应答信号。数据方向位应该为0,以指示写操作。该模式的数据接收操作步骤如下:
①将从机地址写入I2ADR,并配置I2CONSET以完成初始化。等待它被自己的从机地址或通用地址寻址。
②接收到地址和方向位后,可以设置SI位,并从I2STAT读取有效状态码。
③根据状态代码执行相应的操作。
(4)从发射机模式
当主机访问从机时,它向主机发送数据,并等待主机的回复信号。数据方向位应该为1,以指示读取操作。使用这种模式时,用户程序只需要根据各种状态码进行相应的操作。
I2C时钟由SCL占空比寄存器(I2SCLH、I2SCLL)控制,SCL的高电平和低电平分别设置,以获得合适的总线时钟频率。寄存器I2CONSET用于控制I2C总线的模式和总线操作,其位SI是I2C中断标志,所有总线操作都依赖于该标志。同时对总线进行箝位,使得总线的数据发送/接收可以同步控制。寄存器I2CONCLR是相应的清零寄存器;I2STAT是I2C状态寄存器,用于指示总线处于哪种状态,以便于控制操作。I2DAT是一个I2C总线数据寄存器,包含要发送的数据或刚接收的数据。当系统作为从机时,I2ADR从机地址寄存器有效。当总线访问该地址时,将产生一个I2C中断。
I2C主机的基本操作方法:
①设置I2C销连接;
②设置I2C时钟速率(I2SCLH,I2 SCLL);
③置为主机,发送起始信号(I2CONSET的I2EN和STA位为1,AA位为0);
④发送从机地址(I2DAT)并控制I2CONSET传输;
⑤判断总线状态(I2STAT)并控制数据传输;
⑥发送结束信号(I2CONSET)。
I2C从机的基本操作方法:
①设置I2C销连接;
②设置自己的从机地址(i2adr);
③使能I2C(I2C onset的I2EN和AA位为1);
④判断SI位或等待I2C中断和主机操作;
⑤判断总线状态I2STAT,控制数据传输。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。