1、只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL。
2、每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器。
3、在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。
4、SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件。
5、SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。
6、数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA 线(高)。响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。
7、第一个字节的头7 位组成了从机地址,最低位(LSB)是第8 位,它决定了传输的方向。第一个字节的最低位是“0”,表示主机会写信息到被选中的从机;“1”表示主机会向从机读信息,当发送了一个地址后,系统中的每个器件都在起始条件后将头7 位与它自己的地址比较,如果一样,器件会判定它被主机寻址,至于是从机接收器还是从机发送器,都由R/W 位决定的。
void I2C_delay(void)
{
u8 i=200;
while(i)
{
i--;
}
}
void I2C_Start(void)
{
SDA_H;
I2C_delay();
SCL_H; //SCL 线是高电平时,SDA 线从高电平向低电平切换,总线开始
I2C_delay();
SDA_L;
I2C_delay();
SCL_L;
I2C_delay();
}
void I2C_Stop(void)
{
SDA_L;
I2C_delay();
SCL_H; //SCL 线是高电平时,SDA 线由低电平向高电平切换,总线结束。
I2C_delay();
SDA_H;
I2C_delay();
}
//等待ACK应答
void WaitACK1(void)
{
u8 errtime = 225;
SDA_IN(); //设置SDA端口为输入模式
I2C_delay();
SCL_H;
I2C_delay();
while(SDA_read) //SCL拉高后,等待SDA被拉低(ACK)
{
errtime--;
if(errtime==0)
{
I2C_Stop();
SDA_OUT();
break;
}
}
SCL_L;
SDA_OUT();
I2C_delay();
}
//写入单字节数据
void Writebyte(unsigned char Data)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((Data<
{
SDA_H;
}
else
{
SDA_L;
}
I2C_delay();
SCL_H;
I2C_delay();
SCL_L;
}
SDA_L;
I2C_delay();
WaitACK1();
I2C_delay();
}
关键字:I2C总线 注意要点
引用地址:
I2C总线注意要点
推荐阅读最新更新时间:2024-05-02 23:59
出租车计价器设计与实现
1 系统硬件组成
总体结构如图一所示。硬件上主要由HT46RU24单片机, 霍尔传感器 ,空载开关,键盘电路,数据存储电路,时钟电路,显示电路,蜂鸣器,IC卡电路以及串口电路组成。
1.1 HT46RU24单片机。
HT46RU24单片机是HOLTEK公司研制的一种低功耗,高性能的8位单片机。它的ROM为8k*16、RAM为384 bytes,最多有40个双向IO口。除此之外它还具有8通道12位分辨率的A/D转换,A/D转换可用来监测外部 模拟 信号,如侦测 电池 电压、电流、温度、湿度、压力、明暗度等。提供两种模式的 PWM 输出可应用于控温、调速、定电压、定电流等。可控的PFD输出用于发声,或是红外
[嵌入式]
I2C总线的读操作的流程
M24Cxx的读操作模式及其各种模式的操作流程如图1、图2所示。 1. 当前地址读 EEPROM内部具有保持当前地址的寄存器。读取当前地址的数据时,不需要指定地址。只要单纯给出读指令就可读出数据。读取完毕后,内部所保持的当前地址将自动进位。
图1 I 2 C存储器的读操作(1)
图2 I 2 C存储器的读操作(2)
数据读操作后的ACK/NoACK信号由主机返回,但必须返回NoACK信号。
2. 随机读 随机读是由主机指定任意的地址读取的。利用写指令设定地址,如果赋予读指令则可以读出当前地址。所以,与字节写操作时相同,在第1字节的数据后面给出地址。在这里,一旦发送
[嵌入式]
基于I2C总线接口的AD芯片PCF8591设计
1 引言
I2C总线是Philips公司推出的串行总线,整个系统仅靠数据线(SDA)和时钟线(SCL)实现完善的全双工数据传输,即CPU与各个外围器件仅靠这两条线实现信息交换。I2C总线系统与传统的并行总线系统相比具有结构简单、可维护性好、易实现系统扩展、易实现模块化标准化设计、可靠性高等优点。
在一个完整的单片机系统中,A/D转换芯片往往是必不可少的。PCF8591是一种具有I2C总线接口的A/D转换芯片。在与CPU的信息传输过程中仅靠时钟线SCL和数据线SDA就可以实现。
2 芯片介绍
PCF8591是具有I2C总线接口的8位A/D及D/A转换器。有4路A/D转换输入,1路D/A模拟输出。这就是说,它既可
[嵌入式]
基于I2C总线技术的USB接口设计
1、前言 USB(Universal Serial Bus)通用串行总线是在1994年底由康柏、IBM、Microsoft等多家 公司联合制订的,但是直到1999年,USB才真正被广泛应用。同时,他也得到了各PC厂商、芯片制造商和PC外设厂商的广泛支持,USB外设在国内外以惊人的速度发展,迄今为止,各种USB的外设已经有数千种。为PC外围设备设计USB接口已成为大势所趋。 随着单片机技术的发展,单片机的功能日益强大,外围电路日益复杂,其有限的管脚也就显 得捉襟见肘。目前采用普通单片机外加USB接口芯片开发USB外设时,USB接口器件大都是采 用并行接口与单片机相连接,这样再加上一些控制信号线,总共需要占用单片
[工业控制]
DM642的I2C总线配置与应用
随着国民经济的快速发展,数字图像处理广泛应用于社会生活的各个领域。DM642作为高性能的视频处理芯片,被广泛应用到视频处理的很多领域,但是DM642的I2C应用容易遇到I2C、VP等死锁,以及SAA7115的从地址不能正确设置的问题。本文主要介绍的就是基于DM642的视频采集处理系统中I2C模块的正确初始化,以及通过I2C总线正确地对视频解码芯片SAA7115的寄存器读/写程序。 1 I2C总线控制器的初始化 为了正确使用DM642内置的I2C模块,首先需要正确的初始化。 1.1 解锁DM642中的I2C模块 在DM642的I2C应用中,容易遇到不能使用初始化I2C模块的问题,原因在于没有先解锁并使能I2C模块。在DM64
[嵌入式]
I2C总线学习—查缺补漏—对数据有效性的思考
IIC协议规定:SDA上传输的数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间变化。IIC期间在脉冲上升沿把数据放到SDA上,在脉冲下降沿从SAD上读取数据。这样的话,在SCL高电平期间,SDA上的数据是稳定的。在脉冲下降沿之后的保持时间以后,SDA上的数据可以变化,直到脉冲上升沿之前。
[单片机]
I2C总线的工作原理与在51单片机中的应用
I2C总线的工作原理与应用 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如 电源 和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。 1 I2C总线特点 I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了 电路 板的空间和芯片管脚的数量,降低了互联成本。总线的长
[单片机]
基于I2C总线的大型开关矩阵设计与实现
自动测试设备在军事及工业领域的应用越来越广泛,然而在电路单元尤其是电路板测试中,由于被测单元种类多,被测通道数量大,传统的开关矩阵体积大、切换速度慢、电气性能差。已不能满足现代测试仪器高速、便携的要求。本文介绍了一种采用USB接口,利用I2C总线传输数据,由CPLD控制多路复用器件的大型开关矩阵结构,具有较高的切换速度及较好的电气性能,并满足了小型化的要求。 2 系统结构及功能 开关矩阵主要实现自动测试设备与被测电路单元之间的信息交换,功能如下: (1)将程控电源系统输出的电源自动加至被测电路单元要求的引脚上; (2)将自动测试设备信号源分系统输出的信号转接至被测电路单元要求的引脚上; (3)将
[安防电子]